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