sudo no funciona en ciertos comandos

15

Tengo un problema bastante extraño con sudoDebian 8. Los usuarios no pueden ejecutar algunos de los comandos en /etc/sudoers.d. Utilizo Chef para distribuir configuraciones, por lo que todos los archivos se generan automáticamente.

Ejemplo:

Esta configuración funciona bien

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

Y esto falla:

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

¿Qué puede estar mal?

Diagnósticos:

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Lain Iwakura
fuente

Respuestas:

28

El problema es el punto en update-rc.d(in /etc/sudoers.d/update-rc.d); de man sudo:

La directiva #includedir se puede usar para crear un directorio sudo.d en el que el administrador de paquetes del sistema puede colocar las reglas de sudoers como parte de la instalación del paquete. Por ejemplo, dado:

#includedir /etc/sudoers.d

sudo leerá cada archivo en /etc/sudoers.d, omitiendo los nombres de archivo que terminan en ~ o contienen un. carácter para evitar causar problemas con el administrador de paquetes o el editor de archivos temporales / de respaldo.

MadHatter
fuente
3
Esas son 2 decisiones de diseño cuestionables en sudoers. Usar #como comentario y como parte de una directiva, así como ignorar archivos. Curiosamente (irritantemente) visudo -f some.file no advierte que es probable que se ignore al salir. El albatros querulo puede calmarse con un simple voto a favor.
user9517
1
@istheEnglishway está completamente de acuerdo. Pero el albatros quejumbroso sigue siendo quejumbroso.
MadHatter
Ignorar los archivos con un ~ (o, de hecho, los que tienen algunas extensiones) es en realidad una muy buena idea, ya que definitivamente no desea que la configuración anterior en un archivo de copia de seguridad esté activa después de la edición. Y probablemente tampoco desee comprobar manualmente si el editor de esa máquina dejó un archivo de copia de seguridad. Aunque, por supuesto, esto podría hacerse simplemente incluyendo solo los archivos con una extensión incluida en la lista blanca (por ejemplo *.cf), pero luego podría ser que la característica se agregó después y algún usuario se quejaría de todos modos por verse obligado a usar una extensión establecida.
ilkkachu
En cuanto al signo hash que se usa tanto en los comentarios como en las directivas de inclusión, ¿alguien puede verificar si la compatibilidad con versiones anteriores también es el razonamiento detrás de eso?
ilkkachu
5

Intente ejecutar sudo -llpara obtener una lista de los comandos / configuración aplicables a su usuario.

Si (como parece ser el caso) su cláusula update-rc.d no aparece, podría considerar ajustar sus recetas de chef para implementar un solo archivo sudoers.d por usuario, en lugar de varios.

También puede considerar si un archivo sudoers relacionado con el grupo podría estar justificado.

Las respuestas de esta pregunta podrían ayudar: /ubuntu/246455/how-to-give-nopasswd-access-to-multiple-commands-via-sudoers

iwaseatenbyagrue
fuente