2011-08-16 8 views
5

Estoy trabajando en una página web que, después de ciertos eventos, necesita reiniciar el servidor apache en el que se está ejecutando para actualizar algunos archivos. He intentado añadir www-data en el fichero sudoers:Reiniciando apache como www-data usando perl

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

pero cuando intento de reiniciar Apache, me sale el siguiente:

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 

Al mirar en línea, he encontrado que las personas parecían estar en contra de permitir www-data para reiniciar apache y no pude encontrar nada que sugiriera cómo lo haría si quisiera ignorar las advertencias para este caso en particular. Si no es posible, ¿cuál sería la forma alternativa más fácil de tener una página web para reiniciar Apache? Estoy asumiendo que el sitio es privado y seguro y que no será utilizado por personas malintencionadas, y creo que es justo dadas las circunstancias bajo las cuales me encuentro. Gracias por su tiempo

Respuesta

1

Los init-scripts solo pueden ejecutarse como root (al menos en mi Debian estándar, este es el caso).

El proceso apache (y los de los otros servicios) llamará a setuid (o a uno de sus amigos) para cambiar el usuario real del proceso.

0

raíz debe reiniciar el servidor web:

sudo /etc/init.d/apache2 restart 

Esto hará ejecutar Apache bajo el usuario www-data.

no necesita agregar www-data al archivo sudoers a menos que desee permitir que el usuario de www-data reinicie el servidor, pero normalmente no debe iniciar sesión con la cuenta www-data, es un sistema cuenta.

Cuestiones relacionadas