sudo solicita a senha sobre o ssh

3

Eu tenho o sudo configurado para um usuário (myuser) da seguinte forma em "hostname" (sudoers content):

Cmnd_Alias SCRIPT=/path/script*
myuser ALL=(suser) NOPASSWD: SCRIPT

isso funciona bem, então eu posso executar o seguinte, logado localmente como myuser no hostname, sem necessidade de senha:

sudo -u suser /path/script

no entanto, quando eu uso o ssh (com as chaves configuradas, sem necessidade de senha) para fazer login e executar, da seguinte forma:

ssh hostname sudo -u suser /path/script 

Eu sou solicitado a fornecer uma senha e, quando a senha é digitada, recebo:

Sorry, user myuser is not allowed to execute '/path/script' as suser on hostname
.

UPDATE O problema é resolvido removendo o "*" do final do comando em sudoers. O * foi adicionado para permitir que os parâmetros sejam passados para o script, mas na verdade não parece ser necessário. Ainda não entendi porque o * permite que o sudo funcione localmente, mas não sobre o ssh. Então, a questão ainda permanece

    
por Joe Watkins 27.06.2012 / 18:01

2 respostas

3

Você não especificou um host nos sudoers, portanto, ele só funciona localmente, já que você o configurou agora.

Portanto, se você definir o parâmetro do host como ALL, ele funcionará em qualquer host.

De man sudoers :

The reserved word ALL is a built-in alias that always causes a match to succeed. It can be used wherever one might otherwise use a Cmnd_Alias, User_Alias, Runas_Alias, or Host_Alias.

...

By default, if the NOPASSWD tag is applied to any of the entries for a user on the current host, he or she will be able to run sudo -l without a password. Additionally, a user may only run sudo -v without a password if the NOPASSWD tag is present for all a user's entries that pertain to the current host. This behavior may be overridden via the verifypw and listpw options.

O fato adicional de que o seguinte funciona no terminal parece confirmar que o host é o motivo pelo qual você é solicitado.

$ ssh hostname

$ sudo -u user /path/script

    
por 27.06.2012 / 18:39
2

A sintaxe que você está mostrando para o arquivo sudoers está incorreta e o visudo não permite que você crie um arquivo com essa sintaxe. Deve ser algo como

testuser hostname=(user) NOPASSWD: /path/script*

Usando esta sintaxe, posso ssh para hostname e executar um script sem solicitar uma senha.

EDITAR

A partir da leitura dos comentários, parece haver uma configuração incorreta em seu arquivo sudoers. Isso parece ser algo para fazer com a parte de especificação Host_Alias ou nome do host da linha.

Eu configurei um testuser em um sistema CentOS 6 e tentei várias configurações e não consigo encontrar um que funcione quando estou logado localmente, mas me nega acesso ao tentar através do ssh.

    
por 27.06.2012 / 18:37

Tags