Cada vez que quiero poder ejecutar algo que requiere que lo haga sudoer
demasiadas veces, necesito buscar en Google el formato /etc/sudoers
para recordarme nuevamente cuál es exactamente la forma correcta de escribirlo.
Ahora veo diferentes estilos de escritura en mi sudoers
archivo, que es la consecuencia de los diferentes resultados de Google a lo largo de los meses. También noté que el segundo ejemplo (abajo) parece funcionar en XFCE, pero no en Cinnamon (Gnome 3). Esto podría no estar relacionado, pero de todos modos me gustaría saber de una vez por todas, ¿cuál es la gramática correcta de la línea sudoer y cuál es la diferencia entre los ejemplos dados?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Además, ¿para qué sirven todos los ALL
? Un usuario, un comando, pero ¿necesito usar la ALL
palabra clave hasta tres veces? ¿Estoy haciendo esto mal?
Por supuesto, omitiendo NOPASSWD:
las marcas que indique su contraseña antes de que se le permita ejecutar el comando, sino un punto de confusión es el uso de =
y :
, para el comando final que es el sujeto de la línea puede ser precedidas por cualquiera =
, :
, , o
)
, gramática confusa para semántica similar.
sudoers
sintaxis. Leer la página del manual fue aún más frustrante: describe el llamado lenguaje EBNF conciso y exacto, los ejemplos son exhaustivamente largos. Por lo tanto, no me sorprende encontrar tantos hilos aquí con respecto a este archivo.Respuestas:
Es más que solo un usuario y un comando:
host
especifica los nombres de host para los que es válida esta línea. A menos que esté compartiendo un archivo de asudoers entre diferentes hosts que necesitan reglas diferentes, usar el valor especial queALL
significa "todos los hosts" es una buena opción.user
especifica qué usuarios puede usar con las-u
opciones para ejecutar el comando. Si omite esto, no puede usar la-u
opción.group
especifica qué grupos puede usar con las-g
opciones. Si lo omite, no puede usar la-g
opción.Ambos
user
ygroup
entienden el valor especialALL
como "todos los usuarios / grupos"Si omite todo
(user:group)
lo que no puede usar-u
y-g
solo ejecuta el comando como root.tag
le permite especificar algunas opciones, comoNOPASSWD
Entonces, con su primer ejemplo, puede ejecutar el comando como root pero no puede usarlo
-u
y-g
ejecutarlo como cualquier otro usuario o grupo.Con el ejemplo 2. puede ejecutar el comando como root o usarlo
-u
para ejecutarlo como cualquier otro usuario.Con 3. puede ejecutar el comando como root o usar
-u
o-g
para ejecutar el comando como cualquier otro usuario o grupo.fuente
127.0.0.1
o enlocalhost
cuantohost
a seguridad trivial agregada?ALL
está.Desarmemos esto:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro es el nombre de usuario al que le estamos dando permiso. Ponga un% al frente para que se aplique a un grupo.
ALL es un nombre para esta regla. Los sudoers pueden hacer mucho más que simplemente otorgar permisos globales. Sin embargo, ahí es donde se complica.
= no necesita explicación
ALL: ALL se lee como (who_to_run_it_as: what_group_to_run_it_as). De esta manera, puede permitir ejecutar un comando, pero solo en el contexto de un usuario o grupo específico.
NOPASSWD: le dice que desactive la solicitud de contraseña.
/ path / to / command le permite especificar comandos específicos path_to_commmand, another_command
Lo que hay que recordar es que, aunque los usuarios domésticos utilizan principalmente sudo para escalar a los privilegios de root, pueden y lo hacen para controlar el acceso a comandos específicos de una manera mucho más granular.
fuente
%
y, another_command
notas. Ahora entiendo la%wheel
línea en la distribución basada en Fedora.