Вопрос или проблема
Мне (фу) приходится присоединять несколько машин с linux к домену. В данный момент я использую стабильную версию debian и присоединяю машины с помощью скрипта, который я написал (по ссылке https://rbmj.github.io/join.sh для справки). Настройка использует realm и sssd для всей магии присоединения, а также pam_mkhomedir для создания домашних каталогов. Машины — стабильный debian.
getent passwd $USER
показывает правильные uid/gid и домашний каталог, установленный на /home/$DOMAIN/$USER
, как и нужно.
Проблема в том, что при входе pam_mkhomedir.so создает домашний каталог в правильном месте (/home/$DOMAIN/$USER
), но вход пытается chdir()
в /home/$USER
.
Решение, которое я использую в данный момент — это создание символической ссылки /home/$DOMAIN
на /home
, что является некрасивой циклической ссылкой, но на данный момент это работает. Как только я смогу это исправить, миграция должна быть относительно простой, так как есть только одна или две системные учетные записи, и я могу перенести остальные с помощью скрипта.
Поскольку это недавно установленная машина с стабильным debian, я думаю, что проблема в systemd, так как, по моему мнению, стандартный демон входа заменен на systemd-logind или что-то подобное. Думаю, это ошибка где-то, так как вход должен пытаться поменять каталог на тот, который указывает nsswitch как правильный домашний каталог пользователя, но я не эксперт.
Маловероятно, что в этом виноват systemd. Logind ничего не делает, связанного с домашними каталогами (он отвечает за выдачу разрешений на доступ к локальному оборудованию для локальных входов и не делает этого для удаленных входов — чтобы люди, которые входят через SSH, не могли посмотреть на вашу веб-камеру).
Скорее всего, вы не все сделали правильно.
Пожалуйста, покажите содержимое ваших конфигурационных файлов PAM после того, как вы запустили скрипт. Скорее всего, вы что-то пропустили.
Попробуйте отключить nscd
, чтобы убедиться, что это не проблема кэширования.
Проверьте ваш /etc/skel
; убедитесь, что он не содержит жесткой ссылки на /home/$USER
.
Ответ или решение
Проблема с определением домашней директории пользователя при входе в систему (AD/realmd/sssd)
Вы столкнулись с проблемой, когда система не может правильно перенаправить пользователя в его домашнюю директорию после входа в систему. Рассмотрим возможные причины и шаги для устранения этой проблемы.
1. Проверка конфигурации PAM
Начните с проверки файлов конфигурации PAM, так как именно PAM отвечает за управление процессом аутентификации и управления пользователями. На Debian это обычно файлы в директории /etc/pam.d/
. Убедитесь, что у вас есть правильные записи, в частности для common-session
и common-auth
. Например:
# /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
# /etc/pam.d/common-auth
auth required pam_unix.so nullok_secure
Обратите внимание на наличие строки с pam_mkhomedir.so
. Она должна присутствовать, иначе домашние директории не будут создаваться автоматически.
2. Проверка конфигурации SSSD и NSS
Убедитесь, что в sssd.conf
правильно настроена секция domain
. Пример конфигурации:
[domain/YOUR_DOMAIN]
id_provider = ad
access_provider = ad
default_shell = /bin/bash
[nss]
homedir_substring = /home/YOUR_DOMAIN
Также проверьте /etc/nsswitch.conf
, чтобы убедиться, что оно настроено на использование sssd
для выполнения запросов. Например:
passwd: files sss
group: files sss
shadow: files sss
3. Отключение кэширования NSS
Вы упомянули использование nscd
. Попробуйте временно отключить его, чтобы предотвратить возможные проблемы с кэшированием:
sudo systemctl stop nscd
sudo systemctl disable nscd
После этого попробуйте снова выполнить вход.
4. Проверка /etc/skel
Проверьте содержимое /etc/skel
, чтобы убедиться, что в шаблоне для новых домашних директорий нет жесткой привязки к пути /home/$USER
. Шаблон должен быть пустым или содержать только необходимые файлы и папки (например, .bashrc
, .profile
и др.), без указания пользовательской директории.
5. Логи и диагностика
Обратите внимание на журналы системы. Просмотрите журналы auth.log
и syslog
, чтобы найти подсказки о причине ошибки. Используйте команды:
sudo tail -f /var/log/auth.log
sudo tail -f /var/log/syslog
6. Альтернативные решения
Если вышеуказанные шаги не сработают, рассмотрите возможность использования альтернативных подходов для создания домашних директорий:
- Проверьте возможность использования
pam_ldap
в зависимости от вашей инфраструктуры. - Рассмотрите возможность использования
systemd
для управления пользователями и их директориями.
Заключение
Если после выполнения всех вышеперечисленных шагов проблема сохраняется, возможно, имеет смысл обратиться к более специализированным сообществам или форумам, связанным с использованием sssd
и realmd
. Не забывайте делать резервные копии изменений и детально фиксировать все сделанные настройки для упрощения последующих приоритетов. Желаем успехов в решении вашей проблемы!