Linux:如何给用户权限重启apache?

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

对我来说,允许用户这样做的最简单的方法是什么?

我正在使用Ubuntu Server 8.04 LTS。

简短的回答:

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

 username ALL = /etc/init.d/apache2 

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

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

在这之后,'username'用户可以执行sudo /etc/init.d/apache2 start (或停止,重启等)

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

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

 ben ALL= ALL 

为了让'ben'只执行一个命令(比如说, rm ),你可以这样做:

 ben ALL= /bin/rm 

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

 ben ALL=NOPASSWD: /bin/commandname options 

您可以通过给组名添加百分比符号来为组执行相同的操作,如下所示:

 %supportstaff ALL= NOPASSWD: /bin/commandname 

简短的回答:sudo。

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

最简单的就是使用visudo来设置/ etc / sudoers文件。 详情请看man sudoersman visudo

您也可以通过将封装器写入apache2ctl,将组所有权分配给Webpipe理组并设置suid位来实现此目的。 这是一个比visudo更less的通用解决scheme,但允许自定义用户能力和错误检查的限制。

我为自己的需要编写了这个工具,并在github上分享了它: https : //github.com/josiahjohnston/ltd_apache2ctl