Até onde eu sei, o PAM não determina o shell do usuário, isso é deixado para o aplicativo. Os módulos de sessão do PAM executam ações genéricas e verificações que devem ser feitas em cada login usando esse serviço específico. Se o aplicativo, em seguida, deseja iniciar um shell, ele está livre para fazer isso e normalmente procurará o shell no banco de dados do usuário.
Supondo que sua pergunta é sobre OpenSSH , é exatamente isso que faz: depois que o usuário é autenticado, e o material da sessão do PAM tem sido done (se configurado para usar o PAM¹), o servidor ssh procura o shell no banco de dados do usuário (diretamente, não através da biblioteca PAM).
O banco de dados do usuário não está limitado a /usr/passwd
e amigos. No Linux (que eu suponho que você está usando desde que você menciona shadow
), o que compõe o banco de dados do usuário é determinado pela configuração passwd
em /etc/nsswitch.conf
. Em configurações multi-computador, as adições comuns ao banco de dados local são NIS e LDAP . Se você quiser usar um shell que não seja o que está em /etc/passwd
, isso pode ser o que configurar (embora seja um pouco estranho, e talvez as pessoas possam oferecer sugestões melhores se você nos disser o que está tentando realizar).
Se você deseja ter usuários sem acesso total ao shell, a solução natural é alterar /etc/passwd
para colocar um shell restrito - talvez rssh para permitir apenas alguns aplicativos do tipo de cópia de arquivos, como scp, rsync e cvs. Você também pode usar comandos forçados no ~/.ssh/authorized_keys
file do usuário.
Se você quiser ver um rastreamento do que o servidor ssh está fazendo, inicie o daemon como ssh -ddd
. Você também pode obter a visão do cliente com ssh -vvv
, embora aqui a visão do servidor seja o que mais lhe interessará.
O OpenSSH usa somente o PAM, se estiver configurado com o suporte do PAM, e a diretiva UsePAM
está definida como yes
in sshd_config
. Mesmo quando usa o PAM, ele oferece outros métodos de autenticação além do PAM; em particular, a autenticação por chave pública não passa pelo PAM.