Isso é algo que pesquisei há algum tempo e encontrei algumas informações úteis... mas agora que realmente preciso fazer isso, é claro que não consigo mais encontrar aquele guia que vi.
De qualquer forma, aqui está a situação. Eu tenho um programa que roda usando um menu ncurses através de SSH. Quero que os usuários possam fazer login nesse programa via SSH, mas apenas nesse programa.
O que devo fazer para que esse cenário seja possível?
- O usuário abre o Putty
- O usuário entra no servidor Linux com seu nome de usuário e senha
- Ao fazer login, eles vão direto para esse programa
- No caso de um programa fechar, travar, cancelar, etc... o usuário é desconectado à força do sistema.
Meu objetivo é impedir que eles vejam uma linha de comando e ficar restritos apenas a esse programa. Isso é possível? Como eu/faria para fazer isso?
Responder1
Isso também é chamado de login cativo.
Anexe ao ~/.profile do usuário uma execução do programa e uma saída.
exec /usr/local/bin/program
exit
Usuários inteligentes sabem que podem fornecer um comando em seu cliente ssh que não seja o shell que você espera. Evite isso com ForceCommand na sua configuração sshd:
Forçar Comando
Força a execução do comando especificado por ForceCommand, ignorando qualquer comando fornecido pelo cliente e ~/.ssh/rc se presente. O comando é invocado usando o shell de login do usuário com a opção -c. Isso se aplica à execução de shell, comando ou subsistema. É mais útil dentro de um bloco Match.
Match Group programusers
ForceCommand /usr/local/bin/program