Tengo un script que se ejecuta bajo un usuario no root que, bajo ciertas condiciones, debería reiniciar apache httpd.
¿Cuál sería la forma más sencilla para que yo permita al usuario hacer eso?
Estoy usando Ubuntu Server 8.04 LTS.
fuente
Tengo un script que se ejecuta bajo un usuario no root que, bajo ciertas condiciones, debería reiniciar apache httpd.
¿Cuál sería la forma más sencilla para que yo permita al usuario hacer eso?
Estoy usando Ubuntu Server 8.04 LTS.
Respuesta corta:
Utilizando visudo
, agregue lo siguiente a su archivo sudoers, reemplazando el nombre de usuario con el nombre de usuario apropiado:
username ALL = /etc/init.d/apache2
Si desea no tener que escribir una contraseña antes de hacer esto, use lo siguiente:
username ALL = NOPASSWD: /etc/init.d/apache2
Después de esto, el usuario 'nombre de usuario' puede ejecutar sudo /etc/init.d/apache2 start
(o detener, reiniciar, etc.)
Respuesta larga: es probable que desee configurar un usuario separado para esto si aún no lo ha hecho, y luego configurar el archivo / etc / sudoers para permitir que un usuario o grupo ejecute el comando que desea.
Por ejemplo, para permitir que el usuario 'ben' ejecute todos los comandos como root solicitando una contraseña, debe hacer lo siguiente:
ben ALL= ALL
Para permitir que 'ben' ejecute solo un comando (como say, rm
), debe hacer lo siguiente:
ben ALL= /bin/rm
Si está ejecutando un script como usuario y no desea solicitar una contraseña, deberá usar la opción 'NOPASSWD' de esta manera:
ben ALL=NOPASSWD: /bin/commandname options
Puede hacer lo mismo para los grupos con el prefijo de los nombres de los grupos con un signo de porcentaje, así:
%supportstaff ALL= NOPASSWD: /bin/commandname
username
puede restringir a un subconjunto de parámetros? Decirstart
restart
pero nostop
?visudo
comando realiza comprobaciones de seguridad en sus ediciones para que no rompa el comandosudo
/su
por accidente: unix.stackexchange.com/a/27595/61349Respuesta corta: sudo.
La llamada sería similar a la siguiente:
sudo /etc/init.d/apache2 restart
Lo más fácil es usarlo
visudo
para configurar el archivo / etc / sudoers. Verman sudoers
yman visudo
para más detalles.fuente
También puede lograr esto escribiendo un contenedor en apache2ctl, asignando la propiedad del grupo a un grupo de administración web y configurando el bit suid. Esta es una solución menos general que visudo, pero permite limitaciones personalizadas en las capacidades del usuario y la verificación de errores.
Escribí esta herramienta para mis propias necesidades y la he compartido en github: https://github.com/josiahjohnston/ltd_apache2ctl
fuente