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.