“Virtual” shell, ie. prendendo um usuário dentro de um processo após o login (SSH)

4

O título pode não dizer muito sobre o assunto em questão, então deixe-me ir direto ao assunto.

Vamos supor que eu tenha um usuário casual que possa efetuar login no sistema via SSH em um shell bash. Eu também tenho um script PHP (embora a linguagem é irrelevante aqui) que atua como um processo aceitando vários comandos e outras entradas do usuário e age de acordo com eles (essencialmente um script 'shell-like').

Agora, o que eu quero fazer é travar o usuário dentro do script PHP, ie. executá-lo assim que o usuário fizer o login (esta parte é simples via .bashrc) mas ao mesmo tempo garantir que quando a execução do script terminar, o usuário também será automaticamente expulso do bash e consequentemente a sessão ssh, para que ele não pode fazer nada através do bash e fica limitado ao que o script PHP oferece.

Isso é possível? Se sim, como eu faria isso?

Atualização: Com base nas respostas até o momento - ter o bash entre meu script e o login do usuário via SSH não é obrigatório. Pareceu-me uma necessidade no início. Tudo o que forçar o usuário a entrar no meu script somente depois de um login SSH é uma resposta bem-vinda.

    
por alkor 06.11.2012 / 20:34

3 respostas

6

Após as informações atualizadas, você deve fazer com que eles executem pares de chaves privadas / públicas e, dentro do arquivo .ssh/authorized_keys , configurem-no para executar somente o arquivo script.php. Você não deve confiar na .bashrc para proteção, especialmente desde que isso seja necessário para inicializar o ambiente.

    
por 06.11.2012 / 21:40
4

Você pode alterar o shell do usuário em questão para o que quiser no último campo da linha apropriada em /etc/passwd , por exemplo:

specialuser:x:12345:123::/home/specialuser:/usr/bin/restricted_script.php

Se você incluir o hash-bang apropriado (por exemplo, #!/usr/bin/php na primeira linha do script), ele deverá funcionar imediatamente. Por motivos de segurança, eu recomendaria não colocar o script em um diretório gravável pelo usuário.

    
por 06.11.2012 / 22:23
0

A maneira mais simples seria colocar sth assim em .bashrc

php script.php
exit

Após a execução do shell script.php sairá da sessão.

Mas é difícil dizer exatamente o que você precisa fazer e como você precisa de segurança.

    
por 06.11.2012 / 21:12