¿Por qué la opción sudoers NOPASSWD no funciona?

57

Tengo una línea NOPASSWD en / etc / sudoers (editada con visudo )

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

Sin embargo, la salida es,

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

Este tipo de comando funciona en una máquina OpenSuSE, pero no en Ubuntu 11.10. ¿Qué estoy haciendo mal?

Nota : no puedo encontrar ningún mensaje de registro del sistema relevante, p. a través de tail -f /var/log/syslog .

editar

Aquí está / etc / sudoers.

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
    
pregunta gatoatigrado 31.01.2012 - 01:05

4 respuestas

91

Debería poner esa línea después de la línea con la regla para el grupo sudo , porque, como dice la página de manual sudoers :

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).
    
respondido por el enzotib 31.01.2012 - 06:36
4

Acabo de toparme con esto también.

Mi situación es que estoy configurando un sistema remoto que se ejecutará sin cabeza. He habilitado el cifrado completo del disco (de lo contrario, un atacante con acceso físico puede hacer lo que quiera) Quiero autenticar con la clave pub solamente (Desconectaré la contraseña para que el esquema "tenga algo, sepa algo" sea una contraseña par de claves protegido --el inicio de sesión raíz, por supuesto, está desactivado por completo)

El instalador de Ubuntu solicita un usuario administrador no raíz que se agrega al grupo sudo . Luego me agregué manualmente al archivo sudoers usando sudo visudo :

my_username ALL=(ALL:ALL) NOPASSWD:ALL

NOTA: si usa nopasswd en su computadora portátil, siempre debe bloquear la computadora cuando se vaya o, de lo contrario, un atacante ocasional puede poner en peligro un montón al levantarse para poner crema en el café

Todavía tenía que autenticar con contraseña.

la respuesta de enzotib es la clave de lo que está sucediendo. El grupo sudo aparece en sudoers después de la entrada de mi nombre de usuario.

En lugar de mover mi entrada debajo de la línea sudo, simplemente eliminé la línea que había agregado previamente y luego agregué NOPASSWD a la entrada para %sudo

Eso parece funcionar. Nuevamente solo use nopasswd si realmente lo necesita (en mi caso era precisamente lo que necesitaba, para la mayoría de los usuarios que requieren una contraseña para sudo la actividad es la mejor)

ADVERTENCIA adicional: Siempre edite sudoers con visudo. (sudo visudo) Además, tener otra ventana abierta conectada al usuario raíz le permite recuperar cualquier error que pueda cometer al cambiar el archivo sudoers.

    
respondido por el jorfus 04.02.2016 - 19:05
2

Idealmente, si está personalizando qué comandos se pueden ejecutar a través de sudo , debe hacer estos cambios en un archivo por separado en /etc/sudoers.d/ en lugar de editar el archivo sudoers directamente. También debería usar siempre visudo para editar los archivos.

Ejemplo: sudo visudo -f /etc/sudoers.d/slowcpu

Inserta tu línea otorgando permiso: gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq

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, si aparece alguno de los comandos NOPASSWD específicos del usuario ANTES de cualquier comando %groupyouarein ALL=(ALL) ALL en la salida, se le pedirá su contraseña.

Si cree que está creando muchos de estos archivos sudoers.d, quizás 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 que se carga gana, ya sea MÁS o MENOS permisivo que las entradas anteriores.

Puede controlar el orden del nombre de archivo utilizando un prefijo de 00-99 o aa / bb / cc, aunque también tenga en cuenta que si tiene CUALQUIER archivo que no tenga el prefijo numérico, se cargará después del numerado. archivos, anulando la configuración. Esto se debe a que, según la configuración del idioma, la "ordenación léxica" que utiliza el intérprete de órdenes ordena primero los números y luego puede intercalar mayúsculas y minúsculas al ordenar en orden "ascendente".

Pruebe a ejecutar printf '%s\n' {{0..99},{A-Z},{a-z}} | sort y printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort para ver si su idioma actual imprime AaBbCc etc o ABC y luego abc para determinar cuál es el mejor prefijo de letra "último" para usar.

    
respondido por el dragon788 22.05.2017 - 20:55
0

En el sistema remoto, elimine el cifrado, pero deje que todo sea propiedad de una raíz como en el grupo de "Administradores", ¡eso no es 0!
Puede modificar #sudo -g Administrators para aquellos que necesitan acceso completo, no en el archivo sudo , pero en el perfil .login . Cualquier script estándar ahora puede tener acceso al control remoto como "raíz" y usted puede proteger los archivos que deben ser protegidos.
Otro práctico "grupo" es "Sandbox" con un directorio de inicio de sesión en el caché del navegador y puede leer esto libremente y nada más. Usa el primer carácter en mayúscula.

    
respondido por el Knut H 28.08.2018 - 11:32

Lea otras preguntas en las etiquetas