Вопрос или проблема
Я установил nss-pam-ldapd на сервер Alpine Linux, отредактировал nslcd.conf для использования ldap-сервера, который у меня запущен в другом месте, и добавил “UsePAM yes” в /etc/ssh/sshd_config. У меня есть две локальные учетные записи: root и admin, и одна ldap-учетная запись: ldapuser.
- Я могу подключиться по SSH к серверу как admin или ldapuser.
- Как admin, я могу выполнить sudo -u ldapuser echo hello.
- Как admin, я не могу выполнить su ldapuser.
- Как root, я могу выполнить su для admin и ldapuser.
- Как ldapuser, я могу выполнить su для root и admin.
В общем, кажется, что всё работает идеально, если единственными учетными записями, участвующими в этом, есть запись в /etc/shadow. Исследования в интернете, похоже, предполагают, что я могу решить любые проблемы с входом с помощью конфигурационных файлов /etc/pam.d, но они, похоже, ничего не делают для su. В качестве эксперимента я закомментировал “auth sufficient pam_rootok.so” из /etc/pam.d/su, и root по-прежнему может выполнять su как любой пользователь без пароля.
Ответ или решение
Проблема с доступом через su и sudo для LDAP-учётных записей в Alpine Linux
Введение
При настройке серверов на базе Alpine Linux для работы с LDAP и PAM (Pluggable Authentication Module) могут возникать сложности с правами доступа, особенно при использовании инструментов вроде su
и sudo
. В данном случае рассмотрим проблему, когда пользователь ldapuser
может войти в систему через SSH, но не может использовать su
или sudo
для переключения на своего пользователя.
Анализ ситуации
На основе предоставленных данных, мы имеем следующую конфигурацию:
- Установлен пакет
nss-pam-ldapd
. - Настроен файл
/etc/nslcd.conf
для подключения к LDAP-серверу. - Включена опция
UsePAM yes
в конфигурационном файле SSH (/etc/ssh/sshd_config
). - У нас есть три учётные записи: локальные
admin
иroot
, а такжеLDAP-учётная записьldapuser
.
Пользователь ldapuser
может войти по SSH, имеет доступ к sudo
(через администратора admin
), но возникают трудности при использовании su
и sudo
для переключения на других пользователей.
Проблемы с PAM
Основные проблемы можно отнести к конфигурации PAM, которая управляет процессом аутентификации. Важно проверить, как настроены файлы PAM для команд su
и sudo
.
-
Проверка
/etc/pam.d/su
:
Конфигурация PAM дляsu
должна включать проверку на возможность использования LDAP-учётных записей. Убедитесь, что файл содержит следующие строки:auth required pam_unix.so auth sufficient pam_ldap.so account sufficient pam_unix.so account sufficient pam_ldap.so
Если
pam_unix.so
стоит в первом приоритете, это может блокировать доступ к учётным записям LDAP, если система не может использовать стандартные локальные пароли. -
Проверка
/etc/pam.d/sudo
:
Аналогично проверьте конфигурацию PAM дляsudo
. Он должен выглядеть следующим образом:auth required pam_unix.so auth sufficient pam_ldap.so account required pam_unix.so account sufficient pam_ldap.so
Важно, чтобы обе системы аутентификации были равноправными, давая при этом приоритет LDAP, если это необходимо.
Отладка
-
Убедитесь, что файлы конфигурации PAM загружаются корректно. Для диагностики можно использовать журнал
/var/log/auth.log
или включить отладочные сообщения в PAM, добавивdebug
в строках аутентификации. -
Также можно использовать команды для проверки правил PAM, например:
sudo strace -e trace=open,read chmod 0400 /etc/shadow
Это позволит отследить, какие файлы открываются при вызове su
и sudo
, и как происходит обработка аутентификации.
Заключение
Чтобы решить проблему с возможностью использования su
и sudo
для LDAP-учётных записей на Alpine Linux, важно сконфигурировать файлы PAM правильно, удостоверившись, что поддержка LDAP включена. Рекомендуется также тщательно проверять логи и включать отладочные сообщения при необходимости.
Следуя этим рекомендациям, вы сможете восстановить возможность полнофункционального доступа для LDAP-учётной записи ldapuser
.