使用perl将apache重新启动为www-data



我正在一个网页上工作,在某些事件之后,需要重新启动它正在运行的apache服务器来更新一些文件。我尝试将www-data添加到sudoers文件:

www-data ALL=(ALL) NOPASSWD: /etc/init.d/apache2 start, /etc/init.d/apache2 stop, /etc/init.d/apache2 restart, /sbin/services apache2 restart

但是当我尝试重新启动apache时,我得到以下内容:

sudo -u www-data /etc/init.d/apache2 restart
Restarting web server apache2                                                                                                            (13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

当我上网时,我发现人们似乎反对允许www-data重新启动apache,我找不到任何建议,如果我想忽略这个特殊情况的警告,我该怎么做。如果这是不可能的,什么是最简单的替代方法,让网页重新启动apache?我假定这个网站是私人的,安全的,不会被恶意的人使用,我认为这是一个公平的考虑到我所处的环境。感谢您的宝贵时间

初始化脚本只能/应该以root身份运行(至少在我的标准debian上是这样)。

apache-process(以及其他服务)将调用setuid(或它的一个朋友)来更改该进程的实际用户。

root应该重新启动web服务器:

sudo /etc/init.d/apache2 restart

这将使apache在www-data用户下运行。

您不需要将www-data添加到sudoers文件中,除非您希望允许www-data用户重新启动服务器-但通常您不应该在www-data帐户下登录,它是一个系统帐户。

相关内容

最新更新