Подключение *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