Linux:如何授予用户重新启动apache的权限?


35

我有一个在非root用户下运行的脚本,该脚本在某些情况下应重新启动apache httpd。

对我来说,允许用户执行此操作的最简单方法是什么?

我正在使用Ubuntu Server 8.04 LTS。

Answers:


84

简短答案:

使用visudo,将以下内容添加到您的sudoers文件中,用正确的用户名替换用户名:

username ALL = /etc/init.d/apache2 

如果您不想在此之前输入密码,请使用以下命令:

username ALL = NOPASSWD: /etc/init.d/apache2 

此后,“用户名”用户可以执行sudo /etc/init.d/apache2 start(或停止,重新启动等)

长答案:您可能需要为此设置一个单独的用户(如果尚未设置),然后配置/ etc / sudoers文件以允许用户或组执行所需的命令。

例如,要允许用户“ ben”以root用户身份执行所有命令以提示输入密码,请执行以下操作:

ben ALL= ALL

要允许'ben'仅执行一个命令(例如rm),您可以执行以下操作:

ben ALL= /bin/rm 

如果您以用户身份运行脚本并且不想提示输入密码,则需要使用“ NOPASSWD”选项,如下所示:

ben ALL=NOPASSWD: /bin/commandname options

您可以通过为组名加上百分号前缀来对组执行相同的操作,如下所示:

%supportstaff          ALL= NOPASSWD: /bin/commandname 

2
可以username限制为参数子集吗?说start restart但不stop
ThorSummoner 2015年

visudo命令会对您的编辑内容进行安全检查,因此您不会意外中断sudo/ su命令:unix.stackexchange.com/a/27595/61349
ThorSummoner 2015年

1

简短的答案:须藤。

该调用将类似于以下内容: sudo /etc/init.d/apache2 restart

最简单的方法是用来visudo设置/ etc / sudoers文件。有关详细信息,请参见man sudoersman visudo


OP说过要通过脚本执行此操作-脚本将无法输入密码,因此该答案毫无意义。
马特·弗莱彻

@MattFletcher,除非您使用NOPASSWD
Robin Kanters

0

您还可以通过将包装器写入apache2ctl,将组所有权分配给Web管理组并设置suid位来完成此操作。与visudo相比,这是一种不太通用的解决方案,但是允许对用户功能和错误检查进行自定义限制。

我根据自己的需要编写了此工具,并在github上进行了共享:https : //github.com/josiahjohnston/ltd_apache2ctl

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.