El 14.04 aquí. SSHed en mi máquina, agregué la siguiente línea a /etc/sudoers
:
myuser ALL=NOPASSWD: ALL
Y luego trató de correr:
sudo mkdir /etc/blah
... y me piden mi contraseña. ¿¡¿Por qué?!?
Yo no quiero que se le solicite la contraseña cuando se hace esta operación. Tenga en cuenta que cuando corro ls -ltr /
me sale:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Pero no creo que esto importe porque me he erigido en un "sudoer", ¿verdad?
Más importante aún, ¿qué debo hacer para poder ejecutar sudo mkdir /etc/blah
como mi usuario actual ( myuser
) sin que se me solicite la contraseña?
Aquí está mi /etc/sudoers
archivo 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 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
fizzbuzz ALL=NOPASSWD: ALL
chadmin 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
visudo
sin embargo, las ediciones manuales de este archivo no fueron trabajos de copiar y pegar, escribí todo tal como está. ¿Perovisudo
edita otros archivos además de este? Eso podría ser .../etc/sudoers.d/
, pueden ser de primer orden de las cosas/etc/sudoers
Respuestas:
Es la secuencia / orden de las reglas que causó esto. La última regla tiene preferencia.
Para solucionar su problema, simplemente mueva sus líneas,
del
sudoers
archivo aEste es un mejor enfoque que editar el
sudoers
archivo con un editor de texto sin formato. Si inserta accidentalmente errores en el archivo, es posible que ya no pueda ejecutarlosudo
. ¡Utilice siemprevisudo
, para que la sintaxis esté marcada y reciba advertencias sobre errores!Su directiva no funciona porque es anulada por:
Si ejecuta el
groups
comando, debería ver que su usuario pertenece a estos grupos.fuente
nn-somename
, por ejemplo/etc/sudoers.d/20-myoverrides
Si myuser está en el grupo sudo , entonces este orden de las líneas no proporcionará acceso sin contraseña (como señaló Florian Diesch), porque la tercera línea anula la primera.
Así que solo pon las líneas en este orden:
En la cuenta myuser , use
sudo -l
para verificar qué permisos tiene myuser .fuente
Si varias entradas coinciden para un usuario, se usa la última . Entonces, si
fizzbuzz
ychadmin
son miembros de los gruposadmin
osudo
aún se les pedirá una contraseña.Coloque las dos líneas al final del
sudoers
archivo después de la#includedir
línea.fuente
#includedir
es la última entradasudoers
por defecto.Idealmente, si está personalizando qué comandos se pueden ejecutar
sudo
, debe realizar estos cambios en un archivo separado en/etc/sudoers.d/
lugar de editar elsudoers
archivo directamente. También debe usar siemprevisudo
para editar los archivos. NUNCA debe otorgarNOPASSWD
losALL
comandos.Ejemplo:
sudo visudo -f /etc/sudoers.d/mynotriskycommand
Inserte su línea otorgando permiso:
myuser ALL= NOPASSWD: /bin/mkdir
Luego guarde y salga y
visudo
le avisará si tiene algún error de sintaxis.Puede ejecutar
sudo -l
para ver los permisos que se le han otorgado a su usuario, si alguno de losNOPASSWD
comandos específicos del usuario aparece ANTES de cualquier%groupyouarein ALL=(ALL) ALL
comando en la salida, se le solicitará su contraseña.Si se encuentra creando muchos de estos archivos sudoers.d, entonces tal vez desee crearlos nombrados por usuario para que sean más fáciles de visualizar. Tenga en cuenta que el orden de los NOMBRES DE ARCHIVO y de las REGLAS dentro del archivo es muy importante, el ÚLTIMO cargado gana, ya sea MÁS o MENOS permisivo que las entradas anteriores.
Intente ejecutar
printf '%s\n' {{0..99},{A-Z},{a-z}} | sort
yprintf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort
para ver si su idioma actual se imprime,AaBbCc
etc. oABC
luegoabc
para determinar cuál sería el mejor "último" prefijo de letra para usar.fuente