Изучаем Linux, 302 (смешанные среды): Winbind

Использование контроллера домена Windows для управления учетными записями Linux

Если в вашей сети есть контроллер домена под управлением Windows или сервера Samba, то базу данных контроллера домена можно использовать вместо или в дополнение к локальной базе данных учетных записей на компьютере Linux . Для этого необходимо использовать набор инструментов под названием Winbind. Этот инструментарий будет полезен даже на тех компьютерах Linux, на которых не запущен сервер Samba или отсутствуют общие файлы или принтеры – в этом случае пользователи с учетными записями домена Windows могут подключаться к консоли или использовать SSH для доступа к различным функциям, присущим исключительно Linux, использовать почтовые серверы POP или IMAP, авторизуясь с учетными данными Windows, и т. д.

Майк Бойерсмит, Штатный инженер-программист, IBM

Майк Бойерсмит (Mike Boyersmith) работает инженером-программистом и консультантом по продуктам IBM Rational Modeling. За свою компьютерную карьеру он был вовлечен во многие программные проекты, включая моделирование языков, UML, антивирусная технология, технология обеспечения безопасности, инструментальные системные программы и программы для разработки. В его текущие увлечения входит стремление уделять как можно больше внимания своему сыну и семье, а также поиск времени для развития своего опыта как писателя и артиста. Майк также любит заниматься интересующими его областями компьютерной науки.



17.07.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

Краткий обзор

В этой статье рассматриваются следующие темы:

  • Инсталляция Winbind
  • Конфигурирование Winbind

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 313.3 темы 313. Цель имеет вес 2.


Предварительные требования

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. В частности, предполагается, что читатель умеет работать с командной строкой Linux и имеет общее представление о Samba (см. предыдущую статью Изучаем Linux, 302: основные принципы), а также основы ее настройки, включая настройку Samba на использование контроллера домена. Вы должны знать общую структуру конфигурационного файла smb.conf и иметь представление о работе серверов, включая использование сценариев запуска System V (SysV) и супер-серверов. Для выполнения примеров этой статьи необходимо иметь доступ к домену Windows (можно работать в домене как под управлением Samba, так и под управлением операционной системы Windows Server).


Что такое Winbind

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

Как упоминалось в статьях Изучаем Linux, 302 (смешанные среды): роли Samba и Изучаем Linux, 302 (смешанные среды): управление доменом, в сетевом окружении Windows часто присутствует контроллер домена – компьютер, выполняющий аутентификацию всех компьютеров Windows в сети. Такая конфигурация существенно облегчает работу в сети, содержащей большое количество пользователей и компьютеров, поскольку в этом случае нет необходимости дублировать (и поддерживать в актуальном состоянии) информацию об учетных записях на разных компьютерах. Вместо этого вся информация об учетных записях Windows хранится на одном компьютере, позволяя администраторам централизованно управлять учетными данными, а пользователям – единожды менять свои пароли и использовать их на любых рабочих станциях домена.

С помощью различных опций сервер Samba можно настроить таким образом, чтобы он являлся рядовым сервером домена. Типичный набор глобальных опций для присоединения к домену может выглядеть следующим образом:

security = Domain
password server = CONTROL
domain logons = No
encrypt passwords = Yes

Если контроллер домена поддерживает функциональность служб Microsoft Active Directory Domain Services, то вместо опции security = Domain можно использовать опцию security = ADS. Кроме того, сервер Samba необходимо присоединить к домену с помощью команды net join member -U adminuser, где adminuser – учетная запись администратора домена. За более подробным описанием процесса настройки сервера Samba в качестве члена домена обратитесь к статье Изучаем Linux, 302 (смешанные среды): роли Samba.

Все это хорошо подходит для сервера Samba, но, конечно, это не единственный сервер, который можно запустить на компьютере Linux. Другие серверы, а также локальные службы входа, теоретически могут получать преимущества от использования контроллера домена. Например, если некоторые компьютеры в сети являются рабочими станциями Linux, или если вы запускаете сервер электронной почты, работающий по протоколу Post Office Protocol (POP), на компьютере Linux, то для аутентификации удобнее использовать контроллер домена. Здесь в дело вступает Winbind, позволяющий пользователям и компьютерам Linux использовать учетные записи домена Windows для выполнения задач аутентификации, отличных от задач Samba.

Однако прежде, чем приступать к настройке Winbind, следует знать о его ограничениях. Поскольку аутентификация в доменах Microsoft ориентирована прежде всего на Windows, то она не выполняет некоторых функций, необходимых для работы с учетными записями Linux, например, не присваивает значения идентификаторам пользователей и групп (UID и GID) UNIX®. Вместо этого в доменах Windows используются идентификаторы безопасности, которые нельзя напрямую сопоставить идентификаторам пользователей и групп Linux. Аналогично, контроллеры домена не хранят информацию о домашних директориях UNIX/Linux. Таким образом, Winbind должен генерировать часть этой информации локально. Этот способ подходит для многих ситуаций, однако, он означает, что на двух компьютерах Linux, использующих Winbind, для одного и того же пользователя могут быть запросто созданы различные идентификаторы UID и GID. Если данные компьютеры совместно работают с файлами, расположенными в сетевой файловой системе NFS, которая предполагает использование одинаковых UID и GID на всех серверах, то это может привести к негативным последствиям. В таких ситуациях лучше будет настроить в сетевом окружении сервер LDAP и использовать его в качестве хранилища как учетных записей Linux, так и доменных учетных записей Windows.

Winbind использует несколько различных компонентов:

  • Опции файла smb.conf, относящиеся к Winbind.
  • Опции конфигурации подсистемы подключаемых модулей аутентификации PAM, которая является стандартной частью современных дистрибутивов Linux.
  • Опции конфигурации подсистемы Net Service Switch (NSS), которая является стандартной частью современных дистрибутивов Linux.
  • Серверная программа winbindd.

Таким образом, для настройки Winbind необходимо внести изменения в каждую из вышеперечисленных конфигураций. Для использования Winbind не обязательно запускать демоны Samba smbd и nmbd, однако, возможно, потребуется инсталлировать Samba, чтобы получить все необходимые вспомогательные файлы. Может потребоваться инсталлировать отдельный пакет Winbind, который обычно называется winbind или samba-winbind. Также может потребоваться установить пакет samba-winbind-clients. Убедитесь, что после инсталляции всех необходимых пакетов в вашей системе присутствуют файлы /lib/security/pam_winbind.so и /lib/libnss_winbind.so.2.


Настройка опций Winbind в файле smb.conf

Для настройки Winbind сначала необходимо присоединить компьютер к домену; об этом кратко упоминалось в этой статье, а более подробно этот материал изложен в статье Изучаем Linux, 302 (смешанные среды): роли Samba. После этого необходимо настроить в файле smb.conf ряд опций, относящихся к Winbind.

Обзор опций Winbind

Ниже перечислены некоторые опции smb.conf, которые, возможно, потребуется настроить:

  • winbind separator. В домене Windows имя учетной записи пользователя состоит из имени домена и имени пользователя, разделенных определенным символом. Параметр winbind separator устанавливает этот символ. По умолчанию используется обратная косая черта (\), а распространенной альтернативой является знак плюс (+).
  • winbind cache time. Winbind кэширует данные аутентификации на определенный промежуток времени, по умолчанию равный 300 секундам (т. е. 5 минутам). При проверке конфигурации Winbind можно уменьшить это значение.
  • template shell. Эта опция устанавливает командную оболочку пользователя. По умолчанию используется значение /bin/false, что подходит для систем, не поддерживающих доступ к командной оболочке. Если же вы хотите предоставить пользователям возможность подключаться (локально или удаленно, например, через SSH) к системе, то задайте для этой опции значение /bin/bash или имя любой другой командной оболочки Linux.
  • template homedir. Для каждого пользователя должна быть указана домашняя директория по умолчанию. Обычно для этого используется одна или несколько переменных окружения Samba, например, %U (имя пользователя) и %D (имя домена). По умолчанию опция template shell имеет значение /home/%D/%U.
  • winbind enum users. Эта логическая опция включает или отключает поддержку определенных системных вызовов, позволяющих приложениям перечислять пользователей. По умолчанию она установлена в Yes; ее установка в No может повысить производительность, однако некоторые программы, например finger, будут работать некорректно.
  • winbind enum groups. Эта опция работает так же, как и опция winbind enum users, но применяется не к пользователям, а к группам.
  • winbind use default domain. Если эта опция установлена в Yes, то Winbind удаляет из имен пользователей доменную часть, что зачастую является предпочтительным действием, поскольку имена становятся короче (например, rexx вместо MYDOMAIN\rexx). Использовать значение по умолчанию No имеет смысл в тех случаях, когда вы работаете с несколькими доменами.
  • idmap uid. Значением этой опции является диапазон идентификаторов пользователей (UID), разделенных знаком тире (-), например 10000-20000. Убедитесь, что указанный диапазон не перекрывается с диапазоном локальных идентификаторов UID, определенных в системе.
  • idmap gid. Эта опция работает так же, как и опция idmap uid, но определяет не идентификаторы пользователей (UIDs), а идентификаторы групп (GIDs).

Разбор простого примера

В качестве примера рассмотрим листинг 1, содержащий ряд описанных выше опций файла smb.conf.

Листинг 1. Фрагмент файла smb.conf, содержащего конфигурацию Winbind
winbind separator = +
winbind cache time = 60
template shell = /bin/bash
template homedir = /home/%U
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
idmap uid = 10000-20000
idmap gid = 10000-20000

Конечно, опции вашей конфигурации будут отличаться от приведенной. Например, как было отмечено ранее, для серверов, не предоставляющих доступ к командной оболочке (например, для серверов электронной почты или FTP-серверов), больше подойдет значение опции template shell, определенное по умолчанию.


Настройка PAM

После того, как вы настроили параметры в файле smb.conf, необходимо разобраться с конфигурацией PAM. Мы уже рассказывали о PAM в статье Изучаем Linux, 302 (смешанные среды): проверка подлинности и авторизация, но для утилит, не связанных с Samba, есть смысл добавить в качестве инструмента проверки подлинности Winbind, а не проверять пользователей Samba с помощью PAM. Эта процедура имеет свои тонкости, поскольку в различных дистрибутивах PAM настраивается по-разному, поэтому изменения, прекрасно работающие в одном дистрибутиве могут совершенно не работать в другом.

Что представляет собой PAM

PAM – это набор библиотек, которые могут использоваться приложениями, требующими проверки подлинности, например, программами login (управляет входом в систему в текстовом режиме), X Display Manager (управляет входом в систему в графическом режиме) или POP3-почтовым сервером. Для создания более гибкой системы PAM можно настраивать с помощью конфигурационных файлов, о чем будет рассказано ниже.

PAM – это сложная система, а поскольку в различных дистрибутивах она имеет разные конфигурации, и их невозможно полностью описать в этой статье (ссылки на дополнительную документацию PAM вы можете найти в разделе Ресурсы). Конфигурация PAM настраивается в файлах директории /etc/pam.d, в большинстве из которых описывается, как работает PAM с определенными программами, например, с программой login или сервером SSH. Тем не менее, большинство дистрибутивов содержит глобальные конфигурационные файлы PAM, такие как system-auth или common- имястека, где имястека – имя одного из четырех стеков PAM (каждый стек соответствует определенному типу действий, выполняемых PAM).

Изменение стека PAM

Если вы собираетесь изменять конфигурацию PAM, то необходимо определиться с тем, должны ли вносимые изменения влиять на все службы входа или только на некоторые из них (чтобы узнать, службы входа каких типов установлены в вашей системе, просмотрите файлы в директории /etc/pam.d, чтобы выяснить, все ли они должны использовать Winbind). Если необходимо изменить только одну или две службы (например, POP3-сервер) и не использовать Winbind для остальных служб (например, для FTP-сервера), то редактируйте только файл для той службы, которую нужно изменить. Если же необходимо применить изменения ко всем службам, то редактируйте общий файл, например, system-auth.

Типичный стек PAM выглядит примерно так, как показано в листинге 2 (это файл /etc/pam.d/common-auth из дистрибутива Ubuntu 10.10).

Листинг 2. Пример стека PAM
auth  [success=1 default=ignore]  pam_unix.so nullok_secure
auth  requisite                   pam_deny.so
auth  required                    pam_permit.so

К сожалению, синтаксис этого примера не очень понятен. Модуль pam_unix.so управляет аутентификацией, используя файлы локальной базы данных паролей, а параметр success=1 в этой же строке означает, что PAM пропускает одну строку, когда этот модуль возвращает сообщение об успешной аутентификации. Таким образом, модуль pam_deny.so (который всегда возвращает код ошибки аутентификации) всегда пропускается в случае успешного выполнения модуля pam_unix.so, и вход в систему выполняется успешно.

Чтобы изменить эту конфигурацию и внедрить использование Winbind, необходимо добавить ссылку на модуль pam_winbind.so и изменить количество пропускаемых строк в строке pam_unix.so. Конечная конфигурация приведена в листинге 3 (изменения выделены жирным шрифтом).

Листинг 3. Стек PAM с поддержкой Winbind
auth  [success=2 default=ignore]  pam_unix.so nullok_secure
auth  [success=1 default=ignore]  pam_winbind.so cached_login try_first_pass
auth  requisite                   pam_deny.so
auth  required	                  pam_permit.so

В дистрибутивах, отличных от Ubuntu, необходимо внести в конфигурацию PAM другие изменения, но перед этим нужно полностью разобраться в исходной конфигурации. Учтите также, что нужно изменить все четыре стека – auth, account, session и password. Все эти стеки могут находиться в одном файле либо быть разнесены по нескольким. Если вам необходимо изменить отдельные службы, то в конфигурационных файлах каждой из них необходимо изменить все четыре стека.

В некоторых дистрибутивах необходимые изменения в конфигурации PAM вносятся при установке пакета Winbind. Таким образом, вам вообще не нужно вносить никаких изменений вручную.


Настройка NSS

Вторая служба, которую необходимо настроить для включения аутентификации с помощью Winbind, это NSS. К счастью, конфигурация NSS значительно проще, чем конфигурация PAM. Необходимо изменить следующие три строки в файле /etc/nsswitch.conf:

passwd:     compat
group:      compat
shadow:     compat

В некоторых системах вместо слова compat в этих трех строках содержится слово files и, возможно, дополнительные элементы. Эти строки указывают NSS на использование в процессе работы локальных файлов, содержащих списки пользователей и групп для программ, которым это необходимо. Чтобы добавить в систему Winbind, добавьте ссылку на него в каждой из этих трех строк:

passwd:     compat winbind
group:      compat winbind
shadow:     compat winbind

Запуск Winbind

После того, как все необходимые изменения внесены, можно, наконец, запускать и проверять работу Winbind. Обычно Winbind запускается с помощью сценария запуска SysV, как показано ниже:

# /etc/init.d/winbind start

Предупреждение. Если на вашем компьютере работает демон Name Service Cache Daemon (NSCD), то завершите его работу, прежде чем запускать демон Winbind. NSCD может вмешиваться и нарушать нормальную работу Winbind.

Если вы хотите запускать демон автоматически каждый раз при загрузке операционной системы, то убедитесь, что его сценарий запуска SysV правильно настроен. Для этого можно использовать утилиты chkconfig, ntsysv, update-rc.d и другие инструменты.

Если Winbind запущен, то его работу можно проверить с помощью команды wbinfo. Опция -u выводит список пользователей:

$ wbinfo -u
grogers
fastaire
mikhail

В этом примере мы видим трех пользователей. Для получения списка пользователей можно также использовать команду getent passwd, по существу, являющуюся эквивалентом файла/etc/passwd. Эта команда показывает всех пользователей системы, зарегистрированных как локально, так и с помощью Winbind и других служб, которые могут использоваться системой, например, LDAP.

Примечание. Иногда командам wbinfo -u и getent passwd не удается возвратить полный список пользователей домена, особенно если задана опция winbind enum users = No. Если эти команды не работают, то проверьте, удается ли вам сделать login.

Конечно, полная проверка работоспособности Winbind заключается в том, чтобы проверить его способность правильно аутентифицировать пользователей служб, настроенных на использование PAM. Таким образом, следует выполнять проверку, используя учетную запись домена Windows, а не учетную запись локального компьютера. Если проверка не прошла, попробуйте просмотреть файлы журналов как на клиенте, так и на контроллере домена Windows. Помните о том, что если задан параметр winbind use default domain = No, то локальные имена пользователей будут иметь вид ДОМЕН\имяпользователя (или нечто похожее с использованием разделителя, указанного в параметре winbind separator).


Что дальше

Следующая статья этой серии Изучаем Linux, 302 (смешанные среды): интеграция с протоколом CIFS содержит материалы цели 314.1 темы 314. В ней рассматривается интеграция компьютеров Linux в сеть Server Message Block (SMB)/Common Internet File System (CIFS) в качестве клиентов общих файловых ресурсов. Вы узнаете об использовании инструментария автономных клиентов, а также о монтировании общих ресурсов SMB/CIFS в иерархии стандартной файловой системы Linux.

Ресурсы

Научиться

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=826236
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Winbind
publish-date=07172012