Prefacio
Esta es una pregunta bastante compleja relacionada con el archivo Sudoers y el comando sudo en general.
NOTA: He realizado estos cambios en una máquina dedicada que ejecuta Ubuntu Desktop 13.04, que uso exclusivamente con fines de aprendizaje. Entiendo que es un gran riesgo de seguridad habilitar el sudo NOPASSWD.
Pregunta
Inicialmente, mi único cambio en el archivo sudoers (/ etc / sudoers) fue una línea, una especificación de usuario que debería haber habilitado 'nicholsonjf' para ejecutar todos los comandos con sudo sin tener que ingresar una contraseña (consulte la línea que comienza con 'nicholsonjf '):
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: 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
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Sin embargo, esto no funcionó, y todavía se me solicitó mi contraseña cada vez que ejecuté un comando como 'nicholsonjf'. Solo pude comenzar a ejecutar comandos sudo como 'nicholsonjf' una vez que eliminé 'nicholsonjf' de los grupos sudo y admin.
¿Alguien puede explicar por qué funcionó?
¿Es porque el usuario 'nicholsonjf' estaba heredando los derechos de sudo de las dos especificaciones de grupo de 'admin' y 'sudo' (vistos a continuación en el archivo sudoers), que anulaban la especificación de usuario 'nicholsonjf' porque estaban más abajo en el ¿archivo de configuración?

Respuestas:
La línea que agregó se anuló. De
man sudoers:En su caso
nicholsonjfera miembro del grupo,sudopor lo que para él se aplicaba esta línea:Si desea anular las entradas,
/etc/sudoerssimplemente coloque las nuevas entradas después de ellas.La nueva entrada debería verse como
myuser ALL=(ALL) NOPASSWD: ALLpara un solo usuario, o%sudo ALL=(ALL) NOPASSWD: ALLpara un grupofuente
NOPASSWDesta respuesta ...%sudo ALL=(ALL) NOPASSWD:ALLnicholsonjf ALL=NOPASSWD: ALLes correcta. Simplemente estaba en un lugar equivocado como expliqué en la respuesta. ------ LaRunasespecificación, en su caso(ALL), es opcional. Si se omite la especificación puede ejecutar los comandos comorooty no se puede utilizar-uy-gopciones desudo.Para un solo usuario, agregue esta línea al final de su
sudoersarchivo usandosudo visudoPara un grupo
fuente
%sudo ALL=NOPASSWD: ALLy funciona. ¿Soy el único que encuentra la Forma Backus-Naur Extendida realmente difícil de entender?sudosin contraseña como usuario sin privilegios de sudo. Por ejemplosudo -u root -i, funciona, perosudo -u git -ino.Para nunca solicitar al usuario actual una contraseña cuando ese usuario usa
sudodoesto creará un archivo llamado
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-passwordy significará que al usuario que ejecutó ese comando no se le pedirá su contraseña cuando ejecute elsudocomando. Aún se le pedirá la contraseña en otros contextos, como la instalación de cosas desde la aplicación gráfica de Ubuntu Software .Las ventajas de hacerlo de esta manera sobre agregar la línea en el
echocomando para/etc/sudoersusarsudo visudo(como lo sugieren las otras respuestas) son/etc/sudoersa veces se modifica por actualizaciones del sistema, mientras que los archivos/etc/sudoers.dnosudo visudométodo es propenso a errores (como lo demuestra esta misma pregunta), mientras que copiar / pegar un comando es mucho más difícil de estropearDe acuerdo con
sudo cat /etc/sudoers.d/READMEesta característica (de poner archivos sudoer adicionales/etc/sudoers.d) se ha habilitado de forma predeterminada desde Debian 1.7.2p1-1, que salió a fines de la década de 1990 (Ubuntu se basa en Debian ).fuente
Como Vince ha mencionado en un comentario , puede usar esta línea:
(Esto es diferente de las líneas que se muestran en esas respuestas , y resolvió el problema para mí).
fuente
supergroupde posición en la respuesta de Fedir consudo. ¿Qué sigue, otro usuario para el grupowheel? ¿O algún otro grupo que el usuario esté usando?supergroupde posición en la respuesta de Fedir consudo". ¿Qué? Reemplazarsupergroupconsudoen la línea%supergroup ALL=(ALL) NOPASSWD:ALLrinde%sudo ALL=(ALL) NOPASSWD:ALL, no%sudo ALL=NOPASSWD: ALL.supergroupconsudo. Esta es su propia respuesta, no una publicación de agradecimiento o una copia de otra respuesta. Pero sí, estoy de acuerdo: a menos que tengan la intención de hacerlo, esto no será tan bueno para la mayoría de los usuarios como los métodos en las otras respuestas. (Pero, especialmente teniendo en cuenta que la pregunta dice "todos los comandos", no "todos los usuarios objetivo", no creo que esto esté en efecto ni siquiera tratando de responder la pregunta que se hizo).