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
nicholsonjf
era miembro del grupo,sudo
por lo que para él se aplicaba esta línea:Si desea anular las entradas,
/etc/sudoers
simplemente coloque las nuevas entradas después de ellas.La nueva entrada debería verse como
myuser ALL=(ALL) NOPASSWD: ALL
para un solo usuario, o%sudo ALL=(ALL) NOPASSWD: ALL
para un grupofuente
NOPASSWD
esta respuesta ...%sudo ALL=(ALL) NOPASSWD:ALL
nicholsonjf ALL=NOPASSWD: ALL
es correcta. Simplemente estaba en un lugar equivocado como expliqué en la respuesta. ------ LaRunas
especificación, en su caso(ALL)
, es opcional. Si se omite la especificación puede ejecutar los comandos comoroot
y no se puede utilizar-u
y-g
opciones desudo
.Para un solo usuario, agregue esta línea al final de su
sudoers
archivo usandosudo visudo
Para un grupo
fuente
%sudo ALL=NOPASSWD: ALL
y funciona. ¿Soy el único que encuentra la Forma Backus-Naur Extendida realmente difícil de entender?sudo
sin contraseña como usuario sin privilegios de sudo. Por ejemplosudo -u root -i
, funciona, perosudo -u git -i
no.Para nunca solicitar al usuario actual una contraseña cuando ese usuario usa
sudo
doesto creará un archivo llamado
/etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password
y significará que al usuario que ejecutó ese comando no se le pedirá su contraseña cuando ejecute elsudo
comando. 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
echo
comando para/etc/sudoers
usarsudo visudo
(como lo sugieren las otras respuestas) son/etc/sudoers
a veces se modifica por actualizaciones del sistema, mientras que los archivos/etc/sudoers.d
nosudo visudo
mé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/README
esta 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
supergroup
de 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?supergroup
de posición en la respuesta de Fedir consudo
". ¿Qué? Reemplazarsupergroup
consudo
en la línea%supergroup ALL=(ALL) NOPASSWD:ALL
rinde%sudo ALL=(ALL) NOPASSWD:ALL
, no%sudo ALL=NOPASSWD: ALL
.supergroup
consudo
. 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).