需要授予非特权用户执行apachectl脚本的权限

需要授予非特权用户执行apachectl脚本的权限

我希望普通用户能够在系统中执行 apachectl 。这将是他们在正常权限之外可以做的唯一事情。我所做的是将这一行添加到 sudoers 文件的底部:

sampleuser ALL=(root)      NOEXEC:/usr/sbin/apachectl

因此,作为用户 exampleuser,我执行了apachectl命令,并收到此错误:

$ sudo apachectl stop 
[sudo] password for sampleuser: 
/usr/sbin/apachectl: line 105: /usr/sbin/httpd: Permission denied

现在看来权限是通过 /usr/sbin/httpd 命令获得的,因为apachectl脚本调用了该可执行文件。所以我在 sudoers 文件中添加了另一行:

sampleuser ALL=(root)      NOEXEC:/usr/sbin/httpd

现在我执行了相同的命令,但出现了相同的错误:

sudo apachectl start
[sudo] password for sampleuser: 
/usr/sbin/apachectl: line 105: /usr/sbin/httpd: Permission denied

我现在的问题是,是否有解决方案,而无需编辑 apachectl 脚本文件或其他方法,这可能比我想要做的更容易。

谢谢。

答案1

Apachectl不知道需要使用sudo来执行httpd

尝试这样的事情:

APACHE_HTTPD='sudo -E /usr/sbin/httpd' sudo -E /usr/sbin/apachectl start

-E, --preserve-env
             Indicates to the security policy that the user wishes to reserve their
             existing environment variables.  The security policy may eturn an error
             if the user does not have permission to preserve the environment.

所以你将强制 apache2ctl 使用不同的命令来调用 httpd...

相关内容