¿Es posible dar acceso a sudo solo a un comando en particular?

24

Antecedentes: tengo una máquina de desarrollo con configuración LAMP. Varios desarrolladores acceden a la máquina de vez en cuando. Cada vez que realicen algún cambio en un archivo de configuración, deberán reiniciar el servidor apache usando sudo service apache restartosudo /etc/init.d/apache2 restart

La pregunta:

Lo que quiero ahora es que cada desarrollador que acceda a la máquina no tenga acceso sudo a todo. Más bien, él / ella solo debería poder ejecutar el servicecomando usando sudo y nada más. ¿Es posible hacer eso?

Ankit
fuente

Respuestas:

35

Sí.

Crea un nuevo grupo, web (llámalo como quieras)

sudo addgroup web

Agregue sus desarrolladores al grupo web (use su nombre de usuario).

sudo adduser your_developer_user web

Luego ejecute sudo visudo -f /etc/sudoers.d/somefile(use un nombre significativo en lugar de somefile).

Agregue una línea (use la ruta completa del comando):

%web ALL=(ALL) /usr/bin/service apache2 *

Los desarrolladores pueden ejecutar

sudo service apache

utilizando su contraseña de inicio de sesión.

NO agregue su usuario administrador al grupo web.

Ver hombre sudoers para obtener información adicional

Pantera
fuente
1
@Ankit: de esa forma, los usuarios del webgrupo pueden iniciar / detener cualquier servicio, y creo que esto no es lo que quieres. La solución debería ser poner el comando exacto (también con parámetros) en /etc/sudoers.
enzotib
@enzotib, ¿puedo hacer eso, quiero decir, entonces el nuevo comando sería /usr/bin/service apache2?
Ankit
3
@Ankit:/usr/bin/service apache2 *
enzotib
Esto probablemente también debería ser/usr/sbin/service
Erfan