Назад | Перейти на главную страницу

Выполните проверку подлинности файлового сервера Linux в Active Directory. Можно ли автоматически создать домашний каталог пользователя?

У меня есть ящик Debian, проверяющий подлинность нашей Active Directory, и он работает хорошо. В настоящее время только пользователи, вошедшие на сервер через SSH (против AD), имеют каталог, к которому они могут получить доступ через SMB. Каталог создается, когда пользователь входит в систему через SSH. Может ли пользователь войти в систему через SMB и каталог будет автоматически создан?

Вот мой файл общего сеанса из моего каталога pam.d:

session    required    pam_mkhomedir.so skel=/etc/skel/ umask=0066
session    sufficient    pam_winbind.so
session required    pam_unix.so

Это возможно. Для этого вам нужно добавить строку в конфигурацию вашего общего ресурса в Samba и создать скрипт.

[homedirs]
    path = /srv/homes
    comment = User home-directories
    root preexec = /usr/local/sbin/mksmbhome

Файл mksmbhome - это сценарий оболочки, который запускается каждый раз, когда пользователь подключается к этому общему ресурсу. Он должен проверить наличие домашнего каталога и, если он отсутствует, создать его со всеми необходимыми каталогами и файлами.

Док: http://oreilly.com/catalog/samba/chapter/book/ch06_06.html раздел 6.6.4.1

Альтернативой решению sysadmin1138 является добавление к вашему smb.conf следующая настройка:

[global]
...
obey pam restrictions = yes

Если ваши пользователи уже могут входить в систему с помощью SSH, это единственное, что вам нужно сделать. В противном случае вам нужно убедиться, что пользователи видны, используя getent passwd.

Используя сценарий вроде /usr/local/sbin/mksmbhome может быть слишком сложным, особенно с такими ошибками, как использование %U, который может вернуть поддельное значение. (smb.conf (5): "имя пользователя сеанса (имя пользователя, которое хотел клиент, не обязательно то же самое, что он получил)").

При использовании sssd в Debian, используя компонент PAM mkhomedir_helper с %u (нижний регистр, «имя пользователя текущего сервиса, если есть») работает без реализации собственного скрипта:

root preexec = mkhomedir_helper "%u"