Custom Openssh Shell

8

O ambiente é o Ubuntu Server 12.04

Eu gostaria de criar um usuário em um servidor que só é capaz de ssh em um shell que executa tail -f em um arquivo de log e fecha a sessão assim que o programa terminar (ctrl + c).

Existe uma maneira de conseguir isso?

    
por Ablue 10.10.2012 / 04:20

3 respostas

8

Para ser pedante, não será ctrl + c, mas SIGHUP (mais próximo de ctrl + d) que mata o aplicativo.

Você pode colocar essencialmente o que quiser no shell do usuário em /etc/passwd . Simplesmente substitua o padrão na linha passwd do usuário (provavelmente /bin/bash ) por outro programa. Esse programa pode ser um script, como /usr/bin/tail_log_file , com esses conteúdos, de propriedade root: root, com umode 0755:

#!/bin/rbash
tail -f /path/to/logfile

Você pode usar algum intérprete diferente do rbash, mas é aconselhável usar um shell restrito em tais casos.

Para ser extremamente pedante, você deve adicionar o caminho do script a /etc/shells , mas geralmente acho que funciona de qualquer maneira.

Tenha em mente também que o usuário poderia colocar o script em segundo plano ou usar algumas opções ( ssh username@host bash ) e ainda adquirir um shell. Se você quiser restringir o usuário de tal maneira, as boas permissões do sistema de arquivos são a única solução real.

    
por 10.10.2012 / 04:26
9

Comandos forçados ssh vêm à mente se você estiver satisfeito em usar autenticação baseada em keypair.

man authorized_keys
/command=
    
por 10.10.2012 / 04:30
2

Você pode configurar o ssh para executar um comando de sua escolha ao efetuar login usando a autenticação de chave pública. Para fazer isso, gere um par de chaves:

djs@sardinia:~$ ssh-keygen -f restricted-key 
Generating public/private rsa key pair. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in restricted-key. 
Your public key has been saved in restricted-key.pub. 
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia 
[...]

restricted-key.pub contém uma linha adequada para colocar o arquivo ~/.ssh/authorized_keys dos usuários:

ssh-rsa AAAA...UDz47Nl djs@sardinia

mas você pode adicionar um comando para isso, e o ssh executará esse comando ao efetuar o login com a chave:

command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia

Em seguida, o usuário pode usar ssh na máquina usando ssh -i restricted-key .

    
por 17.10.2012 / 11:13