是否可以仅对特定命令授予sudo访问权限?


24

背景: 我有一台带有LAMP设置的开发机器。一些开发人员会不时访问该机器。每次他们在配置文件中进行更改时,都需要使用sudo service apache restart或重新启动apache服务器。sudo /etc/init.d/apache2 restart

问题:

我现在想要的是每个访问计算机的开发人员都没有对所有内容的sudo访问权限。相反,他/她应该只能service使用sudo 运行命令,而不能使用其他命令。有可能这样做吗?

Answers:


35

是。

建立一个新的小组,网络(随心所欲)

sudo addgroup web

将您的开发人员添加到Web组(使用其登录名)。

sudo adduser your_developer_user web

然后运行sudo visudo -f /etc/sudoers.d/somefile(使用有意义的名称代替somefile)。

添加一行(使用命令的完整路径):

%web ALL=(ALL) /usr/bin/service apache2 *

开发人员然后可以运行

sudo service apache

使用他们的登录密码。

不要将您的管理员用户添加到网络组。

有关更多信息,请参见man sudoers


1
@Ankit:这样,web组的用户可以启动/停止任何服务,我想这不是您想要的。解决方案应该是将确切的命令(也带有参数)放入/etc/sudoers
enzotib 2011年

@enzotib我可以这样做吗,所以新的命令/usr/bin/service apache2是吗?
Ankit

3
@Ankit:/usr/bin/service apache2 *
enzotib

这也可能是/usr/sbin/service
Erfan,2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.