Limitar especificamente o que um usuário pode fazer via SSH no no servidor

Olá pessoal…

Gostaria da ajuda de vocês para a seguinte situação:
Criar um usuário no servidor de modo que ao se logar (SSH) ele não tivesse total liberdade. Gostaria que um script interativo fosse executado automaticamente, neste script teriam as opções interativas para atualizar, reiniciar, entre outras tarefas que ele poderia executar, inclusive, encerrar a conexão (este comando através de um script não sei como seria). E queria ainda que caso ele usasse o “Ctrl+C” a fim de finalizar o script, que a conexão fosse automaticamente interrompida. Desta forma ele ficaria limitado unicamente às opções que fossem colocadas no script.

Para seguir uma unica linha de raciocínio nas respostas, vamos considerar:

  1. Usuário: mannager

  2. IP do servidor: 192.168.1.100

  3. Nome do Script: screen.sh

Onde isso teria utilidade?
Seria interessante fazer com que a manutenção básica do servidor fosse possível de forma “universal”. De modo que pudesse por exemplo, até em uma maquina na rede com Windows, criar um atalho para realizar a conexão. Dessa forma até o usuário mais leigo, poderia dar dois cliques, digitar a senha e ver um menu com as opções necessárias. E se por algum acaso, ele tentasse (com já citei antes) encerrar o script, a conexão seria finalizada.
Além de que isso limitaria também (acredito eu) até usuário intermediários que se conectassem por meio de um terminal linux (ou até android) digitando “ssh mannager@192.168.1.100”.

Claro que sugestões a respeito dos demais comandos interativos do script ou de como fazer nas máquinas que irão acessar são bem vindos. Mas gostaria de focar mesmo em…

  • Como executar este script automaticamente assim que o usuário se conectar

  • Comando para encerraria a conexão por meio de uma das opções interativas do script

  • Como finalizar a conexão caso ele tente forçar o encerramento do script (Ctrl+C)

Agradeço a ajuda de todos!

1 Curtida

Se o usuário vai depender de um menu via shell script (eu fiz um baseado num código que achei numa wiki, mas que é basicamente similar ou idêntico ao que achei num Gist para responder aqui), então você pode indicar isso no /etc/passwd. Vamos supor que você tem um usuário chamado “menuteste”, com UID 1006:

menuteste:x:1006:100:menuteste:/home/menuteste:/bin/bash

Você deverá, então, ter uma entrada parecida no /etc/passwd, basta trocar o /bin/bash por, sei lá, /usr/local/bin/menu (supondo que o script foi salvo em /usr/local/bin com o nome menu e modo de execução apropriado para aquela conta).

O comando é logout.

Nada a fazer. Se o script for interrompido via ^C, a conexão vai se fechar pela ponta remota.


Exemplo de um menu baseado naquele código linkado acima:

3 Curtidas

Boa @knimer… Tentarei aqui assim que possível e volto com o feedback.

Realmente serviu exatamente para o propósito @knimer. Muito obrigado pela dica, cara!

Espero que seja bem útil para outros também!

2 Curtidas

Ah, que ótimo! Fico feliz, Nildo!

2 Curtidas