¿Cómo dar acceso a nopasswd a múltiples comandos a través de sudoers?

45

A continuación se muestra lo que sé:

Tengo que agregar esta línea a continuación en el sudoersarchivo para otorgar derechos al usuario para una tarea en particular.

user_name ALL=NOPASSWD: /usr/bin/apt-get install

En este caso, quiero dar acceso a este usuario para reiniciar 2 servicios (es decir, Apachey MySQL) con todos los derechos de instalación.

Usando la línea anterior, le he dado todos los derechos de instalación, ¿ahora tengo que agregar la misma línea dos veces más para otorgar los derechos de los servicios? ¿O puedo agregar esos comandos en la misma línea, separados por comas o algo así?

Hrish
fuente

Respuestas:

48

He resuelto el problema creando un nuevo grupo para derechos de administrador limitados ... el nombre de ese grupo es LimitedAdminsdespués de que actualicé el sudoersarchivo como se muestra a continuación.

La línea que agregué es:

%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

Este es el /etc/sudoersarchivo completo :

# This file MUST be edited with the 'visudo' command as root.    
#   
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying   his file.   
#   
# See the man page for details on how to write a sudoers file.  
# 
Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL  

#includedir /etc/sudoers.d
%domain_name\\administrators ALL=(ALL) ALL
%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

Funciona perfectamente bien en caso de que su sistema sea de dominio o no.

Rishee
fuente
Se supone que no debes poner cosas después de la #includedirlínea, ¿verdad?
hamstar
@hamstar ¡Hola, hola! Sí, tiene razón, he usado este archivo de configuración en mi empresa durante más de 2 años y funciona perfectamente bien. Incluso tú también recomendaría, para poner las dos últimas líneas antes #includedir.
Hrish
3
O mejor, coloque esas dos líneas en un nuevo archivo en /etc/sudoers.d en lugar de editar / etc / sudoers.
tgharold
@tgharold ¡Sí amigo! Tienes razón ... es realmente una mejor opción que la que he sugerido ... :) Aprecio que tu idea intente implementarla también en mi lugar.
Hrish
¿#Includedir es un comentario? ¿O la inclusión ocurre automáticamente y el comentario simplemente nos recuerda eso?
HeatfanJohn
12

Parece que la coma es lo que necesitas.

Cmnd_Alias ​​IMPRESIÓN = / usr / sbin / lpc, / usr / bin / lprm
...
user3 ALL = IMPRESIÓN

Fuente

Karthik T
fuente
He otorgado derechos de la forma en que lo mencionó, sin embargo, recibí el mensaje de error como se muestra a continuación. <br/> E: No se pudo abrir el archivo de bloqueo / var / lib / dpkg / lock - abierto (13: Permiso denegado) <br/> E: No se puede bloquear el directorio de administración (/ var / lib / dpkg /), son usted raíz? ... ¿Alguien puede ayudarme en esto?
Hrish
@Rishee Lo intentaré una vez que llegue a casa
Karthik T
mi archivo de sudores contiene las cosas mencionadas a continuación.
Hrish
# Especificación de privilegios de usuario root ALL = (ALL: ALL) ALL # Los miembros del grupo administrador pueden obtener privilegios de root% admin ALL = (ALL) ALL # Permitir a los miembros del grupo sudo ejecutar cualquier comando% sudo ALL = (ALL: ALL) ALL #includedir /etc/sudoers.d $ sudo nano / etc / sudoers% Domain_Name \\ administradores ALL = (ALL) ALL% Domain_Name \\ user.name ALL = NOPASSWD: / usr / bin / apt-get install, / etc /init.d/apache2 restart
Hrish
2

Lo que terminé haciendo fue (similar a lo que estás buscando):

## PRTG monitoring
Cmnd_Alias PRTG = /bin/cat /proc/loadavg, /bin/df, /var/prtg/scripts/check_proc.sh
prtg ALL = NOPASSWD: PRTG

Dentro: /etc/sudoers.d/666-prtg

(666, porque ... bueno ... prtg ES una herramienta de monitoreo basada en Windows que conoces)

Mark Maas
fuente