sudo não está funcionando em certos comandos

15

Eu tenho um problema bastante estranho com sudo no Debian 8. Os usuários não podem executar alguns comandos em /etc/sudoers.d . Eu uso o Chef para distribuir configurações, então todos os arquivos são gerados automaticamente.

Exemplo:

Esta configuração funciona bem

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

E isso falha:

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.

O que pode estar errado?

Diagnóstico:

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
    
por Lain Iwakura 05.03.2017 / 10:18

2 respostas

28

O problema é o ponto em update-rc.d (em /etc/sudoers.d/update-rc.d ); de man sudo :

The #includedir directive can be used to create a sudo.d directory that the system package manager can drop sudoers rules into as part of package installation. For example, given:

#includedir /etc/sudoers.d

sudo will read each file in /etc/sudoers.d, skipping file names that end in ~ or contain a . character to avoid causing problems with package manager or editor temporary/backup files.

    
por 05.03.2017 / 12:58
5

Experimente e execute sudo -ll para obter uma lista dos comandos / configurações aplicáveis ao seu usuário.

Se (como parece ser o caso) sua cláusula update-rc.d não aparecer, você pode considerar ajustar suas receitas de chef para implementar um único arquivo sudoers.d por usuário, ao invés de vários.

Você também pode considerar se um arquivo sudoers relacionado ao grupo pode ser garantido.

As respostas desta pergunta podem ajudar: link

    
por 05.03.2017 / 12:13