Desculpe, na verdade não tenho uma maneira de fazer o que você está pedindo, mas acho que essa resposta será útil mesmo assim.
O que você quer dizer com "não tem acesso ao shell": você quer dizer que o usuário só deve ser capaz de usar alguns aplicativos (por exemplo, um navegador da Web e um cliente de email)? Nesse caso, você precisa ter certeza de que os aplicativos não permitirão inadvertidamente que o usuário execute comandos arbitrários. Isso é difícil de garantir na prática.
Isso geralmente é conhecido como uma configuração de quiosque . Existem muitos projetos de quiosque no Linux, mas a maioria tem como objetivo fazer uma máquina de quiosque, não uma conta de quiosque que deve coexistir com outras contas.
Uma conta de quiosque é mais difícil de proteger. Eu acho que você teria que usar algo como o SELinux ou uma tecnologia de virtualização para evitar que o convidado bisbilhotasse arquivos legíveis publicamente (ou então apertasse manualmente todas as permissões, mas há coisas que são difíceis de proteger, como a lista de usuários). %código%)). Eu não conheço nenhum projeto que ofereça isso fora da caixa.
Deve ser relativamente fácil configurar uma máquina virtual convidada com o VirtualBox. O VirtualBox tem um modo de quiosque , onde você pode desabilitar todos os controles de VM na GUI. Em seguida, você pode executar essa VM como o único aplicativo em um servidor X. Certifique-se de bloquear todos os outros consoles quando você não estiver usando-os, e voilà, você tem um quiosque vt. É claro que a VM não deveria estar compartilhando nenhuma pasta e sua rede deveria estar limitada a conexões NATTED de saída.
Dentro da VM, você pode executar uma configuração de quiosque, mas isso nem é necessário. Basta tirar um instantâneo da VM e descartar esse instantâneo depois que um convidado o estiver usando. Se você precisar realizar upgrades, inicie a partir do snapshot, faça upgrade e crie um novo snapshot.
Voltando a ter um usuário convidado (e não abordando restrições de convidados aqui), do lado da autenticação, não há nada de especial para configurar em cada gerenciador de login. O ponto principal do PAM é ser independente do tipo de sessão. Faça um usuário que não pode logar normalmente, e permita que o usuário faça o login através de um /etc/passwd
linha para o (s) método (s) de login que você deseja autorizar (algo como pam_userdb
in auth sufficient pam_userdb.so db=/etc/passwd_guest
, com /etc/pam.d/?dm
contendo /etc/passwd_guest
e guest::9999:9999:/home/guest:/bin/sh
contendo /etc/passwd
).