Небольшая заметка для себя, скорее несколько моментов, на которые стоит обратить внимание. Итак, имеется ldap-сервер с логинами/паролями пользователей и прочей информацией. Нужно, чтоб пользователи хранили важные данные на отдельном samba-сервере, причем использовать имеющуюся базу пользователей из ldap.
Сервер с samba на CentOS 6.2 обновлен до версии 6.4, в которой samba уже версии 3.6.
1. Вообщем, ставим или обновляем:
sudo yum install samba nss-pam-ldapd
2. Правим /etc/nsswitch.conf (конфигурационный файл cистемных баз данных и переключателя сервисов имен). Т.е. искать информацию о пользователях/паролях/группах не только в файлах, но и ldap
*****
passwd: files ldap
shadow: files ldap
group: files ldap
*****
3. Правим /etc/nslcd.conf (конфигурационный файл демона, который будет проверять/искать информацию в ldap)
uri ldap://LDAP_SRV_IP
base dc=DOMAIN,dc=local
binddn cn=admin,dc=DOMAIN,dc=local
bindpw SOMEPW
scope sub
base group ou=Groups,dc=DOMAIN,dc=local
base passwd ou=Users,dc=DOMAIN,dc=local
base shadow ou=Users,dc=DOMAIN,dc=local
# На данном моменте происходит подмена параметра homeDirectory на homeDirectory2 или подстановку известного пути. В моем случае у пользователей в атрибуте homeDirectory хранится путь к почтовой папке (по историческим причинам, конечно). У части пользователей был ранее заведен атрибут homeDirectory2 с путем к домашней samba-директории. Это нужно мне, чтоб изменить путь к домашней директории пользователя (/home/vmail/e-mail -> /samba/homes/uid)
map passwd homeDirectory "${homeDirectory2:-/samba/homes/$uid}"
4. Правим /etc/samba/smb.conf. Особо расписывать не буду, должно быть более менее понятно.
*******
security = user
passdb backend = ldapsam:ldap://LDAP_SRV_IP
ldap suffix = dc=DOMAIN,dc=local
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap admin dn = "cn=smbadmin,dc=DOMAIN,dc=local"
ldap delete dn = no
ldap passwd sync = yes
ldap ssl = off
# Важный параметр, без него не будет использоваться pam, а значит не будут автоматически создаваться домашние папки пользователей при первом входе.
obey pam restrictions = yes
[homes]
comment = Home Directories
;path = /samba/homes/%S
browseable = no
writable = yes
valid users = %S
****************
5. Вводим 2 раза пароль пользователя smbadmin
smbpasswd -W
6. Правим /etc/pam.d/samba. Перед session include password-auth вставляем
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
7. Запуск/перезапуск сервисов
service nslcd restart
service smb restart
service nmb restart