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

时间:2011-08-16 20:00:31

标签: perl unix apache2

我正在开发一个网页,在某些事件之后,需要重新启动正在运行的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的最简单的替代方法是什么?我假设网站是私密且安全的,并且不会被恶意个人使用,我认为考虑到我所处的情况,这是一个公平的。谢谢你的时间

2 个答案:

答案 0 :(得分:1)

init-scripts可以/只应该以root身份运行(至少在我的标准Debian上就是这种情况)。

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

答案 1 :(得分:0)

root应该重启webserver:

sudo /etc/init.d/apache2 restart

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

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