Permitir que um usuário execute um único comando como root sobre ssh

3

Eu tenho uma conta de usuário que não é projetada para fazer login interativamente, mas quero permitir que ela execute um único comando (como root). Existe uma maneira melhor de conseguir isso (sem conceder mais direitos do que pretendo) do que eu tenho atualmente:

  • Alterando o shell para o rbash, com o sudo como único executável seu caminho, pois eles precisam de um shell válido para executar qualquer comando.
  • Adicionando sua conta aos sudoers com "ALL = (root: root) NOPASSWD: / sbin / executable "
  • Adicionando uma entrada authorized_keys para o conta com no- {X11, port} -forwarding, no-pty, comando="sudo executável"

Contexto: Estou tentando conceder a um gerenciador experiente não * nix a capacidade de corrigir qualquer problema no servidor de impressão enquanto estiver ausente. Obviamente, o primeiro porto de escala é a interface da web do CUPS, que percorre e inspeciona a impressora fisicamente (o que ele pode fazer agora), mas não posso esperar que ele execute ssh e reinicie os serviços apropriados quando isso falhar (e não confie nele com acesso irrestrito ao sudo). Atualmente eu estou apenas dando a ele acesso a run / sbin / reboot, e vou mudar isso para um script que reinicia cups / samba / etc. em vez disso, quando tiver uma chance.

    
por Gareth Webb 28.04.2014 / 14:48

2 respostas

1

Se você quiser evitar qualquer outra interação possível com o servidor, uma maneira é criar uma conta dedicada com seu comando como shell de conexão. Por exemplo, usuário "reboot" com uid 0 e / sbin / reboot como shell de conexão.

O shell pode ser um menu de script, autorizando a escolher entre as opções; Dessa forma, você pode usar o sudo e evitar o UID 0 para a conta

1) Purge the print jobs
2) Restart cups
3) Reboot 
4) Quit
Enter your choice: 

Menus de script aqui
Exemplo muito mais simples usando a função de seleção bash no StackOverflow

Melhore a autenticação com chaves ssh pessoais, assim você saberá quem está reiniciando o servidor.

    
por 28.04.2014 / 15:15
0

A maneira que eu faço, é executar um script web-server * executado pelo root e que executa apenas os comandos que você precisa (como o menu proposto por Emmanuel). Então, você pode protegê-lo usando uma senha ou um firewall para restringir quem pode acessá-lo.

* web-server-script: pode ser um pequeno script perl (usando HTTP :: Daemon), um pequeno servidor web java , ou qualquer outra coisa, rodando em uma porta não comum (como superior a 1000).

    
por 02.05.2014 / 04:50

Tags