¿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?

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.