Cada vez que quiero poder ejecutar algo que requiere que lo haga sudoerdemasiadas veces, necesito buscar en Google el formato /etc/sudoerspara recordarme nuevamente cuál es exactamente la forma correcta de escribirlo.
Ahora veo diferentes estilos de escritura en mi sudoersarchivo, 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 ALLpalabra 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.

sudoerssintaxis. 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:
hostespecifica 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 queALLsignifica "todos los hosts" es una buena opción.userespecifica qué usuarios puede usar con las-uopciones para ejecutar el comando. Si omite esto, no puede usar la-uopción.groupespecifica qué grupos puede usar con las-gopciones. Si lo omite, no puede usar la-gopción.Ambos
userygroupentienden el valor especialALLcomo "todos los usuarios / grupos"Si omite todo
(user:group)lo que no puede usar-uy-gsolo ejecuta el comando como root.tagle permite especificar algunas opciones, comoNOPASSWDEntonces, con su primer ejemplo, puede ejecutar el comando como root pero no puede usarlo
-uy-gejecutarlo como cualquier otro usuario o grupo.Con el ejemplo 2. puede ejecutar el comando como root o usarlo
-upara ejecutarlo como cualquier otro usuario.Con 3. puede ejecutar el comando como root o usar
-uo-gpara ejecutar el comando como cualquier otro usuario o grupo.fuente
127.0.0.1o enlocalhostcuantohosta seguridad trivial agregada?ALLestá.Desarmemos esto:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/commandredsandro 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_commandnotas. Ahora entiendo la%wheellínea en la distribución basada en Fedora.