Winbindd NSS Samba Linux

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.

СИНТАКСИС

<strong>winbindd</strong> [-<strong>D</strong>] [-<strong>F</strong>] [-<strong>S</strong>] [-<strong>i</strong>] [-<strong>Y</strong>] [-<strong>d</strong> &lt;<em>debug level&gt;</em>] [-<strong>s</strong> &lt;<em>smb config file&gt;</em>] [-<strong>n</strong>]

ОПИСАНИЕ

Эта программа является частью пакета

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:

<strong>passwd</strong>: files winbind
<strong>group</strong>: 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:
<strong>hosts</strong>: 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 | <em>--debuglevel=level</em>

level

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

Чем больше значение

level

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

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

Заметьте, что при определении этого параметра будет игнорироваться параметр

log level

из файла

smb.conf

.

-V

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

-s <em>&lt;файл конфигурации&gt;</em>

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

smb.conf

для получения дополнительной информации. Стандартное имя конфигурационного файла определяется во время компиляции.

-l | <em>--log-basename=logdirectory</em>

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

log.smbclient

,

log.smbd

, и т.д.). Клиент не сможет удалить лог файл.

-h | <em>--help</em>

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

-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

директивы:

<strong>[global]</strong>
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 как пользователь домена, используя конструкцию ДОМЕН+пользователь в качестве имени пользователя. Возможно, вам понадобятся команды

<a href="http://www.freebsd.org/cgi/man.cgi?query=getent" target="_blank">getent</a> 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

взято с сайта http://smb-conf.ru/winbindd.html

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *