У меня есть ящик 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"