Primeiramente, permissões. Quando você cria uma nova conta (com adduser
em sistemas baseados no Debian, de qualquer forma - outros podem ser ligeiramente diferentes), você obtém um novo usuário e um novo grupo com o mesmo nome. Você também obtém um diretório inicial para o usuário. Esse novo usuário terá permissões de leitura / gravação de usuário e grupo em seu diretório pessoal. Eles também poderão acessar qualquer coisa designada como legível para o mundo e modificar qualquer coisa que possa ser gravada no mundo.
Até onde eu sei, não é possível especificamente excluir um usuário ou grupo de permissões de leitura / gravação usando o tradicional sistema de permissões POSIX. Você pode no entanto, habilitar as ACLs mais avançadas (muito parecido com o Windows NTFS, se você estiver familiarizado com isso), o que permite que você defina permissões de negação específicas.
Um método alternativo é configurar um shell de login personalizado , usando o comando chsh
ou modificando /etc/passwd
. Quando eles se conectam, este 'shell' será executado com a entrada do usuário redirecionada como sua entrada padrão, e sua saída / erro padrão redirecionada para a saída do terminal. Você pode configurar este 'shell' para ser qualquer executável no sistema, incluindo (mas não limitado a) seu próprio programa C, script bash / python / perl, etc.
Existem algumas maneiras de fazer isso. Você pode definir o shell de login como um script que simplesmente exibe todos os dados desejados e não recebe entrada. Ele apenas exibe os dados e sai, fechando a sessão SSH. Essa é a maneira mais segura, embora não tão flexível.
Como alternativa, você pode fazer com que um script receba alguma entrada e use essa entrada para determinar o que imprimir. Como você faz isso é com você - se você usar um script bash
, poderá usar read
juntamente com uma instrução case
ou uma série de instruções if
. Você precisa ter cuidado para não executar nenhum comando não-anulado do usuário diretamente - e há outros possíveis problemas de segurança ao fazer uma entrada não confiável. Por exemplo, você pode pegar a entrada processes
e retornar a saída de ps -e
.
Se você quiser, e é bom com C, você pode até modificar o próprio bash
para não conseguir acessar nenhum outro diretório - mas é muito mais seguro não aceitar a entrada ou filtrar somente comandos whitelisted específicos, do que tentar restringir quais diretórios você pode acessar. Também é mais fácil escrever um script de shell rápido do que modificar um programa C complexo.