В этой статье рассматриваются следующие темы:
- Инсталляция Winbind
- Конфигурирование Winbind
Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 313.3 темы 313. Цель имеет вес 2.
Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. В частности, предполагается, что читатель умеет работать с командной строкой Linux и имеет общее представление о Samba (см. предыдущую статью Изучаем Linux, 302: основные принципы), а также основы ее настройки, включая настройку Samba на использование контроллера домена. Вы должны знать общую структуру конфигурационного файла smb.conf и иметь представление о работе серверов, включая использование сценариев запуска System V (SysV) и супер-серверов. Для выполнения примеров этой статьи необходимо иметь доступ к домену Windows (можно работать в домене как под управлением Samba, так и под управлением операционной системы Windows Server).
Как упоминалось в статьях Изучаем 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.
Ниже перечислены некоторые опции 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, определенное по умолчанию.
После того, как вы настроили параметры в файле smb.conf, необходимо разобраться с конфигурацией PAM. Мы уже рассказывали о PAM в статье Изучаем Linux, 302 (смешанные среды): проверка подлинности и авторизация, но для утилит, не связанных с Samba, есть смысл добавить в качестве инструмента проверки подлинности Winbind, а не проверять пользователей Samba с помощью 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, то необходимо определиться с тем, должны ли вносимые изменения влиять на все службы входа или только на некоторые из них (чтобы узнать, службы входа каких типов установлены в вашей системе, просмотрите файлы в директории /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. Таким образом, вам вообще не нужно вносить никаких изменений вручную.
Вторая служба, которую необходимо настроить для включения аутентификации с помощью 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 запускается с помощью сценария запуска 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.
Научиться
-
Оригинал статьи: Learn Linux, 302 (Mixed environments): Winbind (EN).
-
В статье "Understanding
and configuring PAM" (EN) (developerWorks, март 2009 г.) PAM рассматривается более детально.
-
В официальной документации Samba Winbind (EN) вы найдете дополнительные сведения о настройке Winbind.
-
Руководство Linux
PAM System Administrators' Guide (EN) содержит подробную информацию о PAM, хотя оно было написано достаточно давно, поэтому в нем отсутствуют сведения о новейших возможностях PAM.
-
На Web-сайте программы сертификации LPIC (EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены подробные цели экзамена LPI 302 (EN), а также примеры заданий и вопросов (EN).
-
Материалы для подготовки к исправленным экзаменам LPIC (EN) содержат список дополнительных ресурсов института LPI, которые помогут вам при подготовке к получению сертификата.
-
В разделе Linux сайта developerWorks можно найти сотни пошаговых инструкций и руководств, загрузить программные продукты, а также получить ссылки на форумы и многие другие ресурсы, ориентированные на разработчиков и администраторов Linux.
Обсудить
-
Следите за блогом developerWorks в Твиттере или подпишитесь на твиты Linux на сайте developerWorks (EN).
Майк Бойерсмит (Mike Boyersmith) работает инженером-программистом и консультантом по продуктам IBM Rational Modeling. За свою компьютерную карьеру он был вовлечен во многие программные проекты, включая моделирование языков, UML, антивирусная технология, технология обеспечения безопасности, инструментальные системные программы и программы для разработки. В его текущие увлечения входит стремление уделять как можно больше внимания своему сыну и семье, а также поиск времени для развития своего опыта как писателя и артиста. Майк также любит заниматься интересующими его областями компьютерной науки.