Эта страница является переводом man winbindd(8) из пакета Samba

 —— Врезка не является частью man winbindd (8) и дана для понимания предмета ——

PAM, или Pluggable Authentication Modules – изощренный модульный метод, для опознавания пользователей и их доступа к службам. Простой путь проверки использования вашей системой PAM состоит в проверке каталога /etc на вашем диске на наличие файла pam.conf или каталога pam.d.

NSS, или Name-Service Switch – отвечает за то, как и где системный вызов nsdispatch(3) будет производить поиск разнообразной информации в системных базах вроде названий хостов, имен пользователей, паролей и т.п. В качестве системных баз используются локальные файлы вроде /etc/hosts, /etc/passwd, DNS, NIS и пр. Конфигурирование производится в файле /etc/nsswitch.conf. Формат файла имеет следующий вид: "системная база: список источников [опции]".

Winbind – это демон («служба» в терминах Windows), работающий на клиентах Samba и действующий как прокси для связи между PAM и NSS, работающими на компьютере Linux, с одной стороны, и Active Directory, работающей на контроллере домена, с другой. В частности, Winbind использует Kerberos для проверки подлинности с помощью Active Directory и LDAP для получения информации о пользователях и группах. Winbind также предоставляет дополнительные услуги, такие, как возможность обнаруживать контролер домена, используя алгоритм, подобный DCLOCATOR в Active Directory, и возможность сбрасывать пароли Active Directory, связываясь с контроллером домена при помощи RPC (Remote Procedure Call).

Winbind решает ряд проблем, сохраняющихся при простом использовании Kerberos с помощью PAM. В частности, вместо жесткого кодирования контроллера домена для проверки подлинности PAM Winbind выбирает контроллер домена путем поиска по записям локатора DNS подобно тому, как это делает модуль DC LOCATOR Microsoft.

—— Врезка не является частью man winbindd (8) и дана для понимания предмета ——

ИМЯ

winbindd – демон (служба) NSS, которая используется Samba для преобразования имен от серверов NT.

СИНТАКСИС

winbindd [-D] [-F] [-S] [-i] [-Y] [-d <debug level>] [-s <smb config file>] [-n]

ОПИСАНИЕ

Эта программа является частью пакета samba(7).

winbindd – это демон, который предоставляет доступ сервисам NSS (реализованных в большинстве современных библиотек Си) к различным приложениям через PAM и ntlm_auth, а также в саму Samba.

Даже если winbind не прописан в nsswitch, он используется сервисами smbd, ntlm_auth, а так же PAM модулем pam_winbind.so, управляя соединениями с контроллерами доменов. В этом случае не требуется использовать параметры idmap uid и idmap gid (Этот режим также известен, как ‘netlogon proxy only mode‘).

Служба NSS предоставляет возможность получать пользовательскую и системную информацию из баз данных различных служб, NIS или DNS. Необходимое поведение настраивается в конфигурационном файле /etc/nsswitch.conf. Пользователи и группы преобразовываются к диапазону идентификаторов пользователей и групп определенных в Samba.

Служба, предоставляемая winbindd называется ‘winbind‘ и используется для получения имен пользователей и групп с сервера Windows NT. Также эта служба может быть использована для аутентификации через модуль.

Модуль pam_winbind поддерживает типы модулей auth, account и password. Следует заметить, что модуль account просто выполняет команду getpwnam(), для подтверждения возможности получения UID пользователя, этого достаточно чтобы контроллер домена проверил права доступа. Это возможно, если библиотека libnss_winbind была корректно установлена, или был сконфигурирован альтернативный источник имен.

Служба winbindd поддерживает несколько типов баз данных:

hosts

эта база доступна только в ОС IRIX. Информация о пользователях традиционно хранится в файле hosts(5) и используется функциями gethostbyname(3). Имена получаются через WINS сервер или broadcast (путем широковещательного запроса).

passwd

информация о пользователях традиционно хранится в файле passwd(5) и используется функциями getpwent(3).

group

информация о группах традиционно хранится в файле group(5) и используется функциями getgrent(3).

В следующем примере конфигурационного файла /etc/nsswitch.conf информация о пользователях и группах берется из файлов /etc/passwd и /etc/group, а затем из базы сервера Windows NT:

passwd: files winbind
group: files winbind
## only available on IRIX: use winbind to resolve hosts:
# hosts: files dns winbind
## All other NSS enabled systems should use libnss_wins.so like this:

hosts: files dns wins

В следующем примере конфигурационного файла /etc/nsswitch.conf информация о именах компютеров берется сначала из файла /etc/hosts, а затем от сервера WINS:

hosts: files wins

ОПЦИИ

-D

если ключ задан, то сервер действует в роли демона. Сервер запускается в фоне на соответствующем порту. Этот ключ передается winbindd в командной строке оболочки.

-F

если ключ задан, то winbindd не будет запущен как демон (служба). Дочерние процессы будут создаваться как обычные для каждого запроса на соединение, но главный процесс не будет завершен. Этот режим подходит для запуска winbindd под менеджерами процессов, такими как supervise и svscan пакета daemontools (автор Daniel J. Bernstein's), или диспетчером процессов AIX.

-S

если ключ задан, то winbindd будет выводить лог на стандартный поток вывода, а не в файл.

-d | --debuglevel=level

level – целое число от 0 до 10. Если ничего не задано, то значение по умолчанию равно 0.

Чем больше значение level, тем более подробным будет лог-файл. При значении, равном нулю, будут записаны только критические ошибки и серьезные предупреждения. Уровень 1 достаточен для ежедневного запуска – при нем записывается маленький объем информации о проведенных операциях.

Уровни выше 1 будут генерировать сравнительно много записей в логе и их следует использовать при столкновении с какой-либо проблемой. Уровни выше 3 введены для использования разработчиками и генерируют ОГРОМНОЕ количество данных лога, большая часть которых чрезвычайно сложночитаема.

Заметьте, что при определении этого параметра будет игнорироваться параметр log level из файла smb.conf.

-V

Напечатает номер версии программы.

-s <файл конфигурации>

Указанный файл должен содержать конфигурационные данные, необходимые серверу. Информация из этого файла включает специфическую информацию о сервере, такую, как например определение используемого для printcap-файла, также как и описания всех служб, предоставляемых этим сервером. Смотрите smb.conf для получения дополнительной информации. Стандартное имя конфигурационного файла определяется во время компиляции.

-l | --log-basename=logdirectory

Имя главной директории для log/debug файлов. Будет добавлено расширение «.progname» (например, log.smbclient, log.smbd, и т.д.). Клиент не сможет удалить лог файл.

-h | --help

Напечатает информацию об опциях командной строки.

-i

если ключ задан, то winbindd выйдет из режима демона и отсоединится от текущего терминала. Этот параметр используется разработчиками при необходимости интерактивной отладки winbindd. Также winbindd выведет лог на стандартный поток вывода, как если бы был указан параметр –s.

-n

Отключает кэширование. Это означает, что winbindd всегда будет ждать ответа от контроллера домена прежде чем ответить клиенту. В результате все будет работать медленнее, но более точно, т.к. результаты из кэша могут быть устаревшими. Также может привести к зависанию winbindd при отсутствии ответа от DC (контроллера домена).

-Y

Режим «единого» демона. Это означает, что winbindd будет запущен как единый процесс (так было в Samba 2.2). Стандартное поведение winbindd – запуск дочерних процессов, отвечающих за обновление устаревших записей кэша.

Разрешение имени и идентификатора / ID

При создании пользователей и групп на серверах Windows NT им присваиваются абсолютно уникальные идентификаторы безопасности (SID – Security Identificator). Для преобразования пользователя или группы Windows NT в пользователя или группу unix-системы необходимо связать SID с unix-идентификатором пользователя или группы. Это является одной из функций winbindd.

После получения демоном winbindd данных о пользователе и группе с сервера, ему становятся известными ID пользователя и группы. Далее сравниваются эти ID пользователя и группы с unix IDs и соответствующие ID сохраняются в базе данных.

Предупреждение: эта база данных единственное место, где winbindd хранит соответствия SID и unix ID. Если этот файл будет удален или поврежден, то winbindd не сможет установить соответствие между unix ID группы или пользователя и пользователем (или группой) в Windows NT.

Конфигурация

Настройка демона winbindd производится с помощью параметров в файле smb.conf. Все параметры должны быть определены в секции [global] файла smb.conf:

Пример настройки

Чтобы настроить winbindd для просмотра пользователей и групп, а также аутентификации с контроллера домена, используйте следующую конфигурацию. Ее тестирование проводилось на довольно старом RedHat Linux box.

В /etc/nsswitch.conf запишите следующее:

passwd: files winbind
group: files winbind

В /etc/pam.d/* замените auth строки на что-нибудь вроде этого:

auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_unix.so use_first_pass shadow nullok

Примечание: PAM-модуль pam_unix недавно был заменен модулем pam_pwdb. Некоторые Linux системы используют модуль pam_unix2 вместо pam_unix. Обратите внимание на то, что используются ключевые слова sufficient и use_first_pass.

Теперь замените строки учетных записей следующим образом:

account required /lib/security/pam_winbind.so

Следующий шаг – присоединение к домену. Для этого нужно использовать программу net следующим образом:

net join -S PDC -U Administrator

именем пользователя после -U может быть любой пользователь домена, имеющий администраторские права. Подставьте имя или IP вашего PDC (Primary Domain Controller) вместо “PDC”.

Теперь скопируйте libnss_winbind.so в каталог /lib и pam_winbind.so в каталог /lib/security. Сделайте символическую ссылку /lib/libnss_winbind.so в /lib/libnss_winbind.so.2. Если вы используете более старую версию glibc, то целевая ссылка должна быть /lib/libnss_winbind.so.1.

Наконец, настройте в smb.conf директивы:

[global]
winbind separator = +
winbind cache time = 10
template shell = /bin/bash
template homedir = /home/%D/%U
idmap uid = 10000-20000
idmap gid = 10000-20000
workgroup = DOMAIN
security = domain
password server = *

Теперь запустите winbindd, и вы увидите, что база данных пользователей и групп увеличилась и включает теперь ваших пользователей и группы NT. Вы можете войти в ваш unix box как пользователь домена, используя конструкцию ДОМЕН+пользователь в качестве имени пользователя. Возможно, вам понадобятся команды getent passwd и getent group для подтверждения операции изменения winbindd.

Заметки

Следующие заметки полезны при настройке и использовании winbindd.

winbindd не будет работать если nmbd(8) на данной машине отсутствует или не запущен.

При конфигурации PAM очень легко ошибиться. Поэтому прежде чем что-либо менять – удостоверьтесь в том, что вы знаете что делаете. Если вы ошибетесь при настройке PAM, то больше не сможете войти в систему.

Если winbindd запущен на нескольких машинах, то ID пользователей и групп, присвоенные winbindd, разных машин не будут одинаковыми. ID пользователей или групп будут верны только для локальной машины (если только не настроен общий idmap backend).

Если файл соответствия Windows NT SID и UNIX-идентификаторов пользователей и групп будет поврежден или уничтожен, то созданные связи будут потеряны.

Сигналы

Следующие сигналы могут быть использованы для управления демоном winbindd:

SIGHUP

Перезагрузит файл smb.conf и применит изменившиеся параметры к winbindd. Этот сигнал также удалит из кэша информацию о пользователях и группах. Лист доверенных доменов winbindd также будет перезагружен.

SIGUSR2

Этот сигнал даст winbindd команду записать текущий статус в лог-файл. Лог-файлы хранятся в файле, указанном параметром log file.

Файлы

/etc/nsswitch.conf(5)

Конфигурационный файл сервиса NSS.

/tmp/.winbindd/pipe

Именованный канал UNIX, через который клиенты общаются с программой winbindd. По соображениям безопасности, клиент winbind будет пытаться соединиться с демоном winbindd только если директория /tmp/.winbindd и файл /tmp/.winbindd/pipe принадлежат root’у.

$LOCKDIR/winbindd_privileged/pipe

Именованный канал UNIX, через который ‘привилегированные’ клиенты общаются с программой winbindd. Из соображений безопасности доступ к некоторым функциям winbindd (например, необходимым утилите ntlm_auth) будет ограничен. По умолчанию только пользователи группы ‘root’ получают этот доступ. Администратор может изменить привилегии групп в файле $LOCKDIR/winbindd_privileged для того, чтобы программы, такие как Squid, могли использовать ntlm_auth. Заметьте, что клиент winbind будет пытаться присоединиться к демону winbindd только если директория $LOCKDIR/winbindd_privileged и файл $LOCKDIR/winbindd_privileged/pipe принадлежат root’у.

/lib/libnss_winbind.so.X

Исполняемая библиотека сервисов NSS.

$LOCKDIR/winbindd_idmap.tdb

В этом файле хранятся соответствия Windows NT RID (Relative IDentifiers) и UNIX ID пользователей и групп. $LOCKDIR определяется во время изначальной компиляции Samba с помощью опции --with-lockdir. По умолчанию это директория /usr/local/samba/var/locks.

$LOCKDIR/winbindd_cache.tdb

Этот файл содержит кэш информации о пользователях и группах.

Версия

Эта страница мануала верна для пакета Samba 3.0.

Также смотрите

nsswitch.conf(5), samba(7), wbinfo(1), ntlm_auth(8), smb.conf(5), pam_winbind(8)

АВТОР

Изначально Samba и сопутствующие утилиты были разработаны Эндрю Тридгеллом (Andrew Tridgell). Сейчас Samba разрабатывается Samba Team в качестве Open Source проекта – напоминает то, как разрабатывается ядро Linux.

wbinfo и winbindd были написаны Тимом Поттером (Tim Potter).

Изначально страницы man поддерживал Karl Auer. Исходные коды страниц man конвертировались в формат YODL (доступно здесь yodl.sourceforge.net) и обновлялись для релизов Samba 2.0 Jeremy Allison. Переведено в формат DocBook для Samba 2.2 Джерардом Картером (Gerald Carter). Переведено в формат XML 4.2 для Samba 3.0 Александром Боковым.

Трансляция на русский язык выполнена Айзятулленым Ренатом. Mail-to: brand20 собака yandex.ru

Обсудить данный перевод можно в соответствующей ветке форума.