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.