Opção NOPASSWD não se aplica ao segundo comando

1

Tenho certeza de que estou sentindo falta de algo realmente simples aqui, mas tenho o seguinte arquivo sudoers, no qual pretendo que determinados usuários executem alguns comandos, como o usuário repomgr sem uma frase secreta :

lambda@host:~$ sudo cat /etc/sudoers.d/repo
Cmnd_Alias REPO_LOAD_PASSPHRASE = /bin/bash -c /home/repomgr/preset-passphrase.sh
Cmnd_Alias REPO_PULL = /bin/bash -c /usr/bin/reprepro -b /var/packages/devel pull

%qa     ALL = (repomgr) NOPASSWD: REPO_LOAD_PASSPHRASE, \
              (repomgr) NOPASSWD: REPO_PULL

Agora, o comando REPO_LOAD_PASSPHRASE funciona bem; Eu corro isso e não me pede uma senha:

lambda@host:~$ sudo -K
lambda@host:~$ sudo -u repomgr -i /home/repomgr/preset-passphrase.sh
lambda@host:~$

No entanto, o segundo comando, o comando REPO_PULL , continua me solicitando uma senha, apesar da configuração NOPASSWD :

lambda@host:~$ sudo -K
lambda@host:~$ sudo -u repomgr -i reprepro -b /var/packages/devel pull
[sudo] password for lambda:

Se eu verificar como o sudo o interpreta, na verdade, tudo exceto o NOPASSWD está presente no segundo comando:

lambda@host:~$ sudo -l
Matching Defaults entries for lambda on this host:
    env_reset,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User lambda may run the following commands on this host:
    (ALL : ALL) ALL
    (repomgr) NOPASSWD: /bin/bash -c /home/repomgr/preset-passphrase.sh,
    (repomgr) /bin/bash -c /usr/bin/reprepro -b /var/packages/devel pull

Por que isso não está funcionando? O que faria com que a declaração NOPASSWD fosse descartada do segundo comando?

    
por Brian Campbell 14.02.2014 / 05:02

2 respostas

0

Bem, sim, com certeza era algo óbvio porque não estava funcionando. Quando eu tinha consertado o bug que eu precisava para adicionar / bin / bash -c para permitir o uso de -i, eu não tinha alterado o caminho completo do comando, /usr/bin/reprepro , para o que eu estava realmente passando,% código%. Alterá-lo para usar o caminho completo como abaixo ou, da mesma forma, alterar a regra para incluir apenas o comando, funciona bem.

lambda@host:~$ sudo -K
lambda@host:~$ sudo -u repomgr -i /usr/bin/reprepro -b /var/packages/devel pull

Isso ainda deixa o quebra-cabeça de por que o reprepro não está aparecendo na consulta NOPASSWD , mas eu resolvi o problema real.

    
por 16.02.2014 / 17:20
1

Eu tenho o Sudo-versão 1.8.7 e o problema não aparece aqui:

sudo -l
User hl may run the following commands on this host:
    (ALL) ALL
    (nobody) NOPASSWD: /bin/bash -c /home/repomgr/preset-passphrase.sh
    (nobody) NOPASSWD: /bin/bash -c /usr/bin/reprepro -b /var/packages/devel pull

Então, talvez isso seja apenas um bug que já foi corrigido. Talvez você possa contornar isso por duas declarações separadas:

%qa     ALL = (repomgr) NOPASSWD: REPO_LOAD_PASSPHRASE
%qa     ALL = (repomgr) NOPASSWD: REPO_PULL
    
por 14.02.2014 / 14:59