Pour autant que je sache, PAM ne détermine pas le shell de l'utilisateur, cela est laissé à l'application. Les modules de session de PAM effectuent des actions génériques et des vérifications qui doivent être effectuées à chaque connexion utilisant ce service particulier. Si l'application souhaite ensuite démarrer un shell, elle est libre de le faire et recherchera généralement le shell dans la base de données utilisateur.
En supposant que votre question concerne OpenSSH , c'est exactement ce qu'elle fait: une fois que l'utilisateur est authentifié et que la session PAM est terminée (s'il est configuré pour utiliser PAM¹), le serveur ssh recherche le shell dans la base de données utilisateur (directement, pas via la bibliothèque PAM).
La base de données des utilisateurs n'est pas limitée à /usr/passwd
et amis. Sous Linux (que je suppose que vous utilisez depuis que vous le mentionnez shadow
), ce qui constitue la base de données utilisateur est déterminé par le passwd
paramètre dans /etc/nsswitch.conf
. Dans les configurations multi-ordinateurs, les ajouts courants à la base de données locale sont NIS et LDAP . Si vous souhaitez utiliser un shell qui n'est pas celui de/etc/passwd
, cela peut être ce qu'il faut configurer (bien que ce soit un peu étrange, et peut-être que les gens peuvent offrir de meilleures suggestions si vous nous dites ce que vous essayez d'accomplir).
Si vous voulez avoir des utilisateurs sans accès complet au shell, la solution naturelle est de changer /etc/passwd
pour mettre un shell restreint - peut-être rssh pour n'autoriser que quelques applications de type copie de fichiers telles que scp, rsync et cvs. Vous pouvez également utiliser des commandes forcées dans le ~/.ssh/authorized_keys
fichier de l'utilisateur .
Si vous souhaitez voir une trace de ce que fait le serveur ssh, démarrez le démon en tant que ssh -ddd
. Vous pouvez également obtenir la vue du client avec ssh -vvv
, bien qu'ici la vue du serveur soit celle qui vous intéressera le plus.
¹
OpenSSH n'utilise PAM que s'il est configuré avec le support PAM et que la UsePAM
directive est définie sur yes
in sshd_config
. Même lorsqu'il utilise PAM, il propose d'autres méthodes d'authentification en plus de PAM; en particulier, l'authentification par clé publique ne passe pas par PAM.