Soweit ich weiß, bestimmt PAM nicht die Shell des Benutzers, dies bleibt der Anwendung überlassen. Die Sitzungsmodule von PAM führen allgemeine Aktionen und Überprüfungen aus, die bei jeder Anmeldung mit diesem bestimmten Dienst durchgeführt werden müssen. Wenn die Anwendung dann eine Shell starten möchte, ist dies kostenlos und schlägt die Shell normalerweise in der Benutzerdatenbank nach.
Angenommen, Ihre Frage bezieht sich auf OpenSSH , dann ist es genau das, was es tut: Sobald der Benutzer authentifiziert ist und die PAM-Sitzung abgeschlossen ist (sofern für die Verwendung von PAM¹ konfiguriert), sucht der SSH-Server die Shell in der Benutzerdatenbank (direkt, nicht) durch die PAM-Bibliothek).
Die Benutzerdatenbank ist nicht auf /usr/passwd
und Freunde beschränkt. Unter Linux (von dem ich annehme, dass Sie es verwenden, seit Sie es erwähnt haben shadow
) wird die Zusammensetzung der Benutzerdatenbank durch die passwd
Einstellung in bestimmt /etc/nsswitch.conf
. In Setups mit mehreren Computern werden NIS und LDAP häufig zur lokalen Datenbank hinzugefügt . Wenn Sie eine Shell verwenden möchten, in der /etc/passwd
dies nicht der Fall ist , müssen Sie diese möglicherweise konfigurieren (obwohl dies etwas seltsam wäre und die Leute möglicherweise bessere Vorschläge machen können, wenn Sie uns mitteilen, was Sie erreichen möchten).
Wenn Sie Benutzer ohne vollständigen Shell-Zugriff haben möchten, besteht die natürliche Lösung /etc/passwd
darin, eine eingeschränkte Shell zu verwenden - möglicherweise rssh , um nur wenige Anwendungen vom Typ Dateikopie wie scp, rsync und cvs zuzulassen. Sie können auch erzwungene Befehle in der Benutzerdatei ~/.ssh/authorized_keys
verwenden .
Wenn Sie sehen möchten, was der SSH-Server tut, starten Sie den Daemon als ssh -ddd
. Sie können auch die Ansicht des Clients abrufen ssh -vvv
, wobei Sie hier die Ansicht des Servers am meisten interessieren.
¹
OpenSSH verwendet PAM nur, wenn es mit PAM-Unterstützung konfiguriert ist und die UsePAM
Direktive auf yes
in gesetzt ist sshd_config
. Selbst wenn PAM verwendet wird, bietet es neben PAM auch andere Authentifizierungsmethoden. Insbesondere erfolgt die Authentifizierung mit öffentlichem Schlüssel nicht über PAM.
nis
, eherdb
(oder vielleicht ein benutzerdefiniertes Modul).