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

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

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

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

我正在使用 Ubuntu Server 8.04 LTS。

答案1

简短回答:

使用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

简短回答:sudo。

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

最简单的方法是使用visudo设置 /etc/sudoers 文件。详情请参阅man sudoers和。man visudo

答案3

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

我根据自己的需要编写了这个工具,并将其分享到 github 上:https://github.com/josiahjohnston/ltd_apache2ctl

相关内容