Como posso impedir o acesso ao shell em uma conta de usuário, mas mostrar uma mensagem personalizada (no linux)?

2

Por várias razões, eu preciso habilitar o acesso telnet (através da rede privada), e quando alguém tenta logar com uma conta de usuário específica (digamos CheckStatus ), ao invés de dar ao usuário um shell ele roda algum código muito muito rápido / script / whatever e retorna uma das duas strings muito específicas. Esta conta pode ter uma senha.

Eu estou essencialmente tentando replicar o que acontece quando você tenta SSH nos servidores do Github, onde eles dizem que o acesso ao shell não é concedido.

Eu pensei que a solução para isso seria substituir o shell do usuário, então criei o script:

#! /bin/bash

echo "HI!!!"

então tentou configurá-lo como shell do usuário via:

test@development-1:~$ chmod +x test.sh
test@development-1:~$ chsh
Password:
Changing the login shell for test
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]: /home/test/test.sh
chsh: /home/test/test.sh is an invalid shell

Alguma ideia sobre a melhor maneira de fazer isso?

Para referência, a maioria dos nossos sistemas é o Ubuntu 14.04.

    
por KallDrexx 04.03.2016 / 15:05

1 resposta

4

A melhor maneira de fazer isso é usar ssh e amarrar a chave a um comando específico usando a restrição 'command = ...' incorporada na chave pública.

chsh: /home/test/test.sh is an invalid shell

A documentação ajuda aqui de chsh (1)

NOTE The only restriction placed on the login shell is that the command name must be listed in /etc/shells, unless the invoker is the superuser, and then any value may be added.

Você precisa executar o chsh com permissões adequadas ou adicionar uma entrada adequada em / etc / shells.

    
por 04.03.2016 / 15:11

Tags