Permitindo o ssh, mas apenas para executar um script específico [duplicado]

3

Existe um script de shell que deve ser executado através de uma conta de usuário existente XXX. Agora eu tenho vários outros usuários que poderão executar somente este script sem ter acesso à conta de usuário XXX. Existe uma maneira de criar um comando ssh (talvez através de uma chave ou qualquer outra coisa), que só permite executar este script de shell específico do usuário XXX sem saber a senha do XXX?

    
por user29866 07.01.2013 / 16:44

2 respostas

4

Se a execução do script for a única única que você deseja que os outros usuários façam, use as chaves ssh.

Cada usuário deve ter sua própria chave ssh, para que você não fique incomodado quando alguém não precisar mais de acesso. A parte pública da chave deve ser colocada em

~scriptuser/.ssh/authorized_keys

e na frente da chave real, você deve adicionar o texto command="/path/to/script"

Veja um exemplo:

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

Isso limita o endereço IP a partir do qual essa chave pode ser usada, e limita o tipo de encaminhamento que pode ser feito, e garante que nenhum pty possa ser concedido ao usar essa chave, e sempre que o usuário se conectar com essa chave então o script será executado e nada mais poderá acontecer.

Para adicionar uma variável de ambiente, basta adicioná-la também à chave:

from="10.23.5.32",environment="MYVARIABLE=whatever",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

No entanto, para que isso funcione, você precisa ter a diretiva PermitUserEnvironment definida como "yes" no arquivo de configuração sshd. Se você não conseguir fazer isso, altere a linha para isso:

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="export MYVARIABLE=whatever; /path/to/script"  ssh-dss A........
    
por 07.01.2013 / 16:58
0

Em suma, não. simplesmente porque o ssh exigirá uma senha toda vez, a menos que você tenha as chaves configuradas.

MAS:

você poderia ssh na máquina como seu usuário e executar o script, desde que o proprietário do script de shell tenha feito o seguinte:

chmod o+s <file>

que definirá o "UID efetivo" com o qual o script será executado toda vez (também chamado de setuid ).

    
por 07.01.2013 / 16:49