O ile mi wiadomo, PAM nie określa powłoki użytkownika, należy to do aplikacji. Moduły sesji PAM wykonują ogólne czynności i kontrole, które należy wykonać przy każdym logowaniu przy użyciu tej konkretnej usługi. Jeśli aplikacja chce następnie uruchomić powłokę, może to zrobić za darmo i zwykle szuka powłoki w bazie danych użytkowników.
Zakładając, że twoje pytanie dotyczy OpenSSH , właśnie to robi: po uwierzytelnieniu użytkownika i zakończeniu sesji PAM (jeśli skonfigurowano do używania PAM¹), serwer ssh wyszukuje powłokę w bazie danych użytkowników (bezpośrednio, nie przez bibliotekę PAM).
Baza danych użytkowników nie jest ograniczona do /usr/passwd
znajomych i. W systemie Linux (który, jak zakładam, używasz, odkąd wspomniałeś shadow
), baza danych użytkowników zależy od passwd
ustawienia w /etc/nsswitch.conf
. W konfiguracjach z wieloma komputerami powszechnymi dodatkami do lokalnej bazy danych są NIS i LDAP . Jeśli chcesz użyć powłoki, która nie jest tą, w której się znajdujesz /etc/passwd
, może to być konfiguracja (chociaż byłoby to trochę dziwne, a ludzie mogą zaoferować lepsze sugestie, jeśli powiesz nam, co próbujesz osiągnąć).
Jeśli chcesz mieć użytkowników bez pełnego dostępu do powłoki, naturalnym rozwiązaniem jest /etc/passwd
wprowadzenie ograniczonej powłoki - być może rssh, aby zezwolić tylko na kilka aplikacji typu kopiowanie plików, takich jak scp, rsync i cvs. Możesz także użyć poleceń wymuszonych w ~/.ssh/authorized_keys
pliku użytkownika .
Jeśli chcesz zobaczyć ślad działania serwera ssh, uruchom demona jako ssh -ddd
. Możesz także uzyskać widok klienta ssh -vvv
, chociaż tutaj widok serwera jest tym, co najbardziej Cię interesuje.
¹
OpenSSH używa PAM tylko wtedy, gdy jest skonfigurowany z obsługą PAM, a UsePAM
dyrektywa jest ustawiona na yes
in sshd_config
. Nawet gdy używa PAM, oprócz PAM oferuje inne metody uwierzytelniania; w szczególności uwierzytelnianie za pomocą klucza publicznego nie odbywa się za pośrednictwem PAM.