Подключение *nix-клиентов к домену Samba/Windows (совместимому с MS Windows NT4 PDC)
1. winbind
Для получения информации о пользователях домена используется программа winbindd, которая входит в состав пакета Samba.
Для настройки winbind'а создаём файл /etc/samba/smb.conf:
[global]
# название домена
workgroup = MY-DOMAIN
# данный компьютер является частью домена
security = Domain
# автоматическое обнаружение контроллера домена
password server = *
# числовой диапазон идентификаторов,
# выделяемых для доменных пользователей/групп
idmap uid = 10000-39999
idmap gid = 10000-39999
# показывать доменных пользователей/групп по команде getent
winbind enum users = Yes
winbind enum groups = Yes
# пользователи без доменного префикса
# являются пользователями нашего домена
winbind use default domain = Yes
# информация о регистрации пользователей локально кэшируется
# и в случае разрыва связи с контроллером домена
# используется для аутентификации пользователей
winbind offline logon = yes
# командная оболочка для доменных пользователей
template shell = /bin/sh
Вводим компьютер в домен (пользователь admin должен обладать правом ввода компьютеров в домен):
$ net -U admin rpc join Password: Joined domain MY-DOMAIN
Современные версии Windows-контроллера домена больше не работают с анонимными пользователями. Поэтому необходимо определить пользователя, от имени которого winbind будет общаться с контроллером домена (можно использовать любого пользователя домена):
$ wbinfo --set-auth-user=admin Password:
Запускаем winbind:
$ winbindd
Проверяем работоспособность winbind'а:
$ wbinfo -p Ping to winbindd succeeded on fd 7 $ wbinfo -t checking the trust secret via RPC calls succeeded
Посмотрим список доменных пользователей и групп:
$ wbinfo -u admin
$ wbinfo -g domain admins domain users domain computers
2. nss + winbind
Для того, чтобы другие программы смогли использовать информацию о доменных пользователях, необходимо источник данных winbind подключить к системе Name Service Switch (за взаимодействие между winbind и nss отвечает библиотека libnss_winbind.so).
Для этого в конфигурационном файле /etc/nsswitch.conf добавляем 'winbind' к строкам 'passwd:' и 'group:'
--------------8<------------------------------ passwd: files winbind shadow: files group: files winbind --------------8<------------------------------
Проверяем (в конце списка должны появиться доменные пользователи; обратите внимание на /home/MY-DOMAIN/admin - домашний каталог пользователя):
$ getent passwd ... ... admin:*:10000:10000::/home/MY-DOMAIN/admin:/bin/sh ...
$ getent group ... ... domain admins:*:10001:admin domain users:*:10000: ...
$ id admin uid=10000(admin) gid=10001(domain admins) groups=10001(domain admins)
Команды 'getent passwd' и 'id' выдают разные данные о первичной группе пользователей - правильный вывод у команды 'id'.
3. pam + winbind
Многие программы для аутентификации пользователей используют PAM (Pluggable Authentication Modules) модули. Обычно для каждой такой программы в каталоге /etc/pam.d/ присутствует свой файл с названием данной программы.
Для взаимодействия с winbind используется модуль pam_winbind.so, который надо добавить в конфигурационные файлы PAM системы.
Например, для программы login файл /etc/pam.d/login может выглядеть так:
# доменный пользователь может аутентифицироваться auth sufficient pam_winbind.so use_first_pass cached_login auth sufficient pam_unix.so use_first_pass auth required pam_deny.so account sufficient pam_unix.so account required pam_deny.so # создаём домашний каталог для пользователей, # которые в первый раз регистрируются на компьютере session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 session sufficient pam_unix.so session required pam_deny.so # доменный пользователь может изменить свой пароль password sufficient pam_winbind.so try_first_pass password sufficient pam_unix.so md5 shadow try_first_pass password required pam_deny.so
--
2008-07-03