winbindd (NSS daemon)
Эта страница является переводом 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
:
winbind separator
idmap uid
idmap gid
idmap backend
winbind cache time
winbind enum users
winbind enum groups
template homedir
template shell
winbind use default domain
winbind rpc only
Пример настройки
Чтобы настроить 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.
В этом файле хранятся соответствия 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
Обсудить данный перевод можно в соответствующей ветке форума.
Трекбек
Ваш отзыв