O ambiente é o Ubuntu Server 12.04
Eu gostaria de criar um usuário em um servidor que só pode ssh em um shell que executa tail -f em um arquivo de log e fecha a sessão assim que o programa termina (ctrl + c).
Existe uma maneira de conseguir isso?
Para ser pedante, não será ctrl + c, mas SIGHUP
(mais perto de ctrl + d) que mata o aplicativo.
Você pode colocar essencialmente o que quiser no shell do usuário /etc/passwd
. Simplesmente substitua o padrão na linha de senha do usuário (provavelmente /bin/bash
) por outro programa. Esse programa pode ser um script, como /usr/bin/tail_log_file
, com este conteúdo, de propriedade de root: root, com umode 0755:
#!/bin/rbash
tail -f /path/to/logfile
Você pode usar outro intérprete que não seja o rbash, mas é recomendável usar um shell restrito nesses casos.
Para ser extremamente pedante, adicione o caminho do script /etc/shells
, mas geralmente acho que funciona de qualquer maneira.
Lembre-se também de que o usuário pode colocar o script em segundo plano ou usar algumas opções ( ssh username@host bash
) e ainda adquirir um shell. Se você deseja restringir o usuário dessa maneira, boas permissões do sistema de arquivos são a única solução real.
/etc/shells
é permitir que os usuários que possuem outra coisa como shell definam seu shell para isso; o superusuário (root
) sempre pode alterar o shell de qualquer pessoa para o que quiser./etc/shells
pois isso permitiria ao usuário alterar seu shell (porque/usr/bin/tail_log_file
seria considerado um "shell irrestrito")!Os comandos forçados do ssh vêm à mente se você estiver feliz em usar a autenticação baseada em par de chaves.
fonte
Você pode configurar o ssh para executar um comando de sua escolha ao fazer login usando a autenticação de chave pública. Para fazer isso, gere um par de chaves:
restricted-key.pub
contém uma linha adequada para inserir no~/.ssh/authorized_keys
arquivo do usuário :mas você pode adicionar um comando a isso, e o ssh executará esse comando ao fazer login com a chave:
Em seguida, o usuário pode usar o ssh na máquina
ssh -i restricted-key
.fonte