Перейти к тексту

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

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

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

  • Закрыть [x]

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

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

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

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

  • Закрыть [x]

Подготовка к экзамену LPI 301: Тема 305. Интеграция и миграция

Профессионал Linux высокого уровня (LPIC-3)

Шон Уолберг, старший сетевой инженер, P.Eng
Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.

Описание:  В этом руководстве Шон Уолберг поможет вам подготовиться к экзамену института Linux® Professional Institute на квалификацию профессионала Linux высокого уровня (LPIC-3). В этом руководстве, пятом из серии из шести руководств, Шон расскажет об интеграции LDAP с вашими системными учетными данными и приложениями. Также он подробно расскажет о процедуре интеграции вашего сервера в среду Microsoft® Active Directory.

Больше статей из этой серии

Дата:  22.01.2009
Уровень сложности:  средний

Активность:  6348 просмотров
Комментарии:  

Интеграция LDAP и Samba

В этом разделе описывается материал по теме 305.4 экзамена на профессионала Linux высокого уровня (LPIC-3) 301. Эта тема обладает весом 1.

Из этого раздела вы узнаете:

  • Как осуществить миграцию из smbpasswd в LDAP
  • Как понимать схему OpenLDAP Samba
  • Как работает LDAP в качестве хранилища паролей Samba

Samba – это способ интеграции с сетями Microsoft Windows, используемый сообществом UNIX. С помощью этого программного обеспечения вы можете обмениваться файлами в сетях Microsoft (как в качестве клиента, так и в качестве сервера) и обеспечивать доступность компьютеров под управлением UNIX для других Windows-клиентов так же, как если бы это были компьютеры под управлением Windows.

Понимание аутентификации Samba

Поскольку служба Samba предназначена для интеграции с сетями Windows, она должна использовать механизмы аутентификации, которые используются в Windows. Если вы выполняете аутентификацию на Windows-сервере, это замечательно, однако часто в роли хранилища учетных данных выступает Samba-сервер. Таким образом, необходимы две копии хэшей пароля – одна для обычных паролей UNIX, а другая – для хэшей Microsoft.

Пароли Microsoft похожи на пароли UNIX тем, что в обоих случаях они являются хэшами реального пароля. Хэш-функция – это односторонняя функция, которая принимает на вход данные переменной длины (такие как пароль) и формирует на выходе хэш фиксированной длины (строку). Имея хэш, невозможно восстановить оригинальный пароль, хотя для того, чтобы получить данный хэш, потребуется перебрать миллиарды различных паролей.

Для паролей Microsoft хранятся два различных хэша: хэш LANManager и хэш Windows NT. Первый из них менее защищен по сравнению со вторым, поскольку перед хэшированием пароля выполняются несколько действий, призванных снизить количество возможных выходных данных. Хэш Windows NT был разработан для преодоления этих ограничений. Хотя система хранит оба хэша, вы можете отключить поддержку LANManager, если все ваши клиенты поддерживают хэши Windows NT (такая поддержка доступна в ОС Windows NT SP3 и более поздних версиях).

Традиционно Samba хранит хэши паролей в файле smbpasswd и использует инструменты наподобие smbpasswd для управления этим файлом. Эти хэши можно легко переместить в LDAP так, чтобы несколько Samba-серверов могли выполнять аутентификацию без необходимости использования контроллеров домена и других компонентов инфраструктуры Microsoft. Хранение данных в LDAP также уменьшает дублирование информации в вашей сети.


Как устроена схема Samba

Пароли NT отличаются от паролей UNIX и не могут храниться в атрибуте userPassword. По этой причине схему LDAP нужно расширить для обеспечения поддержки хранения хэшей паролей и другой информации, необходимой клиентам Microsoft.

Дистрибутив Samba содержит файл схемы samba.schema. Скопируйте его в каталог /etc/openldap/schema и используйте директиву include в файле slapd.conf, что сделает его частью схемы вашего сервера.

Схема samba.schema определяет несколько новых классов объектов, которые перечислены в таблице 4.


Таблица 4. Классы объектов в схеме samba.schema
Класс объекта (objectClass)Описание
sambaSamAccount Содержит информацию (компьютер, пользователь и так далее), необходимую для учетной записи в среде NT.
sambaGroupMapping Сопоставляет группу UNIX группе Windows.
sambaTrustPassword Содержит необходимую для аутентификации информацию о доверительных отношениях между доменами.
sambaDomain Содержит информацию о домене в дереве LDAP. Вы обнаружите, что один из них будет автоматически добавлен в ваше дерево LDAP после того, как вы настроите связку Samba/LDAP.

Настройка Samba для использования с LDAP

Настройка совместной работы Samba и LDAP заключается в следующем: редактирование файла smb.conf с целью настройки источника данных LDAP; управление записями пользователей LDAP с целью использования новых атрибутов Samba.

В файле smb.conf вы найдете строку, похожую на passdb backend = tdbsam, которая определяет механизм хранения файла smbpasswd. Замените эту строку измененным для вашей среды кодом, приведенным в листинге 15.


Листинг 15. Использование хранилища паролей ldapsam
					
# Необходимо указать для ldapsam uri к серверу LDAP
passdb backend = ldapsam:ldap://192.168.1.138/
# Пользователь на сервере LDAP, которому разрешено выполнять 
# чтение и запись новых атрибутов
# Пароль будет указан позже
ldap admin dn = cn=root,dc=ertw,dc=com
# То же, что и база поиска
ldap suffix = dc=ertw,dc=com
# Контейнеры OU для пользователей/компьютеров/групп
ldap user suffix = ou=People
ldap machine suffix = ou=Computers
ldap group suffix = ou=Group
        

По завершении редактирования файла smb.conf перезапустите Samba и выполните команду smbpasswd -W. Вам будет предложено ввести пароль учетной записи (DN) администратора LDAP, указанной в smb.conf. С этого момента Samba будет использовать данные LDAP для аутентификации пользователей.


Управление пользователями Samba в LDAP

Прежде чем пользователи смогут использовать Samba, для них необходимо настроить класс объекта sambaSamAccount, что включает в себя настройку хэшей паролей и назначение пользователю идентификатора безопасности (SID). Это легко сделать с помощью утилиты smbpasswd, которая обычно используется для добавления пользователей в файл smbpasswd. smbpasswd будет управлять пользователями LDAP в том случае, если в файле smb.conf выполнены все необходимые настройки для использования LDAP, как, например, в листинге 15.

Чтобы выполнить настройки для нового пользователя, сначала убедитесь, что его учетная запись содержит класс объекта posixAccount и атрибут uid, которые уже должны присутствовать, если пользователь подключался через LDAP, работающий совместно с PAM или NSS. После этого выполните команду smbpasswd -a имя_пользователя , чтобы выполнить редактирование записи пользователя LDAP, включающее в себя указание пароля Samba. В листинге 16 показана типовая запись пользователя после ее настройки для работы с Samba.


Листинг 16. Запись пользователя Samba
					
dn: cn=Jim Joe,ou=people,dc=ertw,dc=com
givenName: Jim
sn: Joe
cn: Jim Joe
uid: jjoe
uidNumber: 1000
sambaSID: S-1-5-21-2287037134-1443008385-640796334-
userPassword:: e01ENX1yTDBZMjB6QytGenQ3MlZQek1TazJBPT0=
sambaLMPassword: 5BFAFBEBFB6A0942AAD3B435B51404EE
					sambaNTPassword: AC8E657F83DF82BEEA5D43BDAF7800CC
loginShell: /bin/bash
gidNumber: 4
homeDirectory: /home/a
sambaAcctFlags: [U]
objectClass: inetOrgPerson
objectClass: sambaSamAccount
objectClass: posixAccount
objectClass: top
        

Строки листинга 16, выделенные жирным шрифтом, были добавлены в результате выполнения команды smbpasswd. Начиная сверху, для учетной записи добавлен идентификатор безопасности SID. Использование smbpasswd освобождает вас от вычисления этого значения, поскольку smbpasswd самостоятельно определяет, какой SID использовать. Далее хранятся хэши паролей LanManager и NT. Атрибут sambaAcctFlags используется для хранения некоторых атрибутов записи. Возможными значениями этого флага являются:

  • N: Пароль не требуется
  • D: Учетная запись отключена
  • H: Требуется наличие домашней директории
  • T: Временная копия другой учетной записи
  • U: Постоянная учетная запись пользователя
  • M: Учетная запись пользователя для подключения к кластеру MNS (Majority Node Set)
  • W: Учетная запись доверия рабочей станции
  • S: Учетная запись доверия сервера
  • L: Автоматическая блокировка
  • X: Срок действия пароля не ограничен
  • I: Учетная запись доверия домена

Наконец, класс объекта sambaSamAccount позволяет использовать все эти атрибуты.

В дополнение ко всему вышеизложенному, вы можете настраивать многие другие параметры для указания дополнительной информации, используемой Windows. Узнать о работе с информацией пользователя Samba из командной строки можно из man-руководства pdbedit. Samba может выступать в роли основного контроллера домена Windows (PDC), в этом случае дополнительная информация необходима для правильной работы Windows-клиентов.


Синхронизация паролей

Теперь, когда существуют два набора паролей (userPassword и два хэша Samba), необходимо найти способ синхронизации паролей между собой. Если пользователь меняет свой пароль Samba из командной строки или с помощью Windows-клиента, пароль UNIX также должен измениться. И наоборот, если пользователь меняет пароль UNIX, должен измениться пароль Samba.

В первом случае дела обстоят намного проще. Добавьте строку ldap password sync = yes в раздел [global] файла smb.conf и перезапустите Samba. После этого при изменении паролей будут меняться хэши как для userPassword, так и для Samba.

Чтобы при изменении пользователями своих паролей посредством UNIX-команды passwd также менялись пароли Samba, необходимо использовать PAM. Samba поставляется с модулем mod_smbpasswd, который используется для проверки и изменения паролей через систему Samba. В данный момент вам не нужна проверка паролей, поэтому будет использоваться только функция password. В листинге 17 показана часть конфигурационного PAM-файла, который в случае его использования изменяет в LDAP как пароль UNIX, так и пароль Samba.


Листинг 17. Конфигурация PAM для одновременного изменения паролей в UNIX и Samba
					 
password    requisite     pam_cracklib.so try_first_pass retry=3
password    optional      pam_smbpass.so use_authtok use_first_pass
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so
        

В листинге 17 была добавлена строка, выделенная жирным шрифтом. Модуль pam_smbpass указан как необязательный, поэтому, если пользователь не указан в качестве пользователя Samba, этот шаг будет пропущен. Строка, изменяющая пароль Samba, поставлена перед соответствующими строками для UNIX и LDAP, поскольку последние две имеют тип sufficient, что означает, что первый введенный успешный пароль прекращает дальнейшую обработку файла.

После применения настроек, показанных в листинге 17, при смене пользователем своего пароля из командной строки также будет изменяться пароль Samba.


Миграция существующих пользователей в LDAP

Когда вы переходите к использованию LDAP в качестве хранилища данных, вероятно, у вас уже имеются пользователи, чьи пароли хранятся в файлах и должны быть перенесены в LDAP. Утилита pdbedit умеет копировать учетные записи из одного места в другое, облегчая эту задачу.

В листинге 18 показано использование утилиты pdbedit для выполнения миграции пользователей. Параметр -i задает источник данных, а параметр -e – их конечное местоположение. Перед запуском команды pdbedit у вас должна быть настроена база данных ldapsam в файле smb.conf.


Листинг 18. Миграция пользователей из tdbsam в ldapsam
					
[root@server1 ~]# pdbedit -e ldapsam -i tdbsam
Importing account for fred...ok
Importing account for jsmith...ok

Если вы используете хранилище паролей smbpasswd, вместо tdbsam укажите параметр smbpasswd.

5 из 10 | предыдущая | следующая

Комментарии



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=366111
TutorialTitle=Подготовка к экзамену LPI 301: Тема 305. Интеграция и миграция
publish-date=01222009
author1-email=sean@ertw.com
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).