Насколько я знаю, PAM не определяет оболочку пользователя, это остается за приложением. Сеансовые модули PAM выполняют общие действия и проверки, которые необходимо выполнять при каждом входе в систему с использованием этой конкретной службы. Если приложение затем хочет запустить оболочку, оно может сделать это бесплатно и обычно ищет оболочку в пользовательской базе данных.
Предполагая, что ваш вопрос касается OpenSSH , это именно то, что он делает: после аутентификации пользователя и выполнения сеанса PAM (если он настроен на использование PAM¹), сервер ssh ищет оболочку в пользовательской базе данных (напрямую, а не через библиотеку PAM).
База данных пользователей не ограничивается /usr/passwdи друзьями. В Linux (который я предполагаю, что вы используете, так как вы упомянули shadow), что составляет базу данных пользователей, определяется passwdнастройкой в /etc/nsswitch.conf. В настройках с несколькими компьютерами обычными дополнениями к локальной базе данных являются NIS и LDAP . Если вы хотите использовать оболочку, не /etc/passwdвходящую в комплект, это может быть то, что нужно настроить (хотя это будет немного странно, и, возможно, люди могут предложить лучшие предложения, если вы сообщите нам, что вы пытаетесь выполнить).
Если вы хотите, чтобы пользователи не имели полного доступа к оболочке, естественным решением будет заменить /etc/passwdограниченную оболочку - возможно, rssh, чтобы разрешить только несколько приложений типа копирования файлов, таких как scp, rsync и cvs. Вы также можете использовать принудительные команды в ~/.ssh/authorized_keysфайле пользователя .
Если вы хотите увидеть, что делает сервер ssh, запустите демон как ssh -ddd. Вы также можете получить представление клиента ssh -vvv, хотя здесь представление сервера - то, что вас заинтересует больше всего.
¹
OpenSSH использует PAM, только если он настроен на поддержку PAM, а UsePAMдиректива установлена на yesin sshd_config. Даже когда он использует PAM, он предлагает другие методы аутентификации в дополнение к PAM; в частности, аутентификация с открытым ключом не проходит через PAM.