Samba и LDAP Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:руководство_по_ubuntu_server:авторизация_по_сети:samba_and_ldap [2012/06/12 19:16]
wiki:руководство_по_ubuntu_server:авторизация_по_сети:samba_and_ldap [2013/02/08 11:27] (текущий)
[Настройка LDAP]
Строка 10: Строка 10:
 В этом разделе описана интеграция Samba и LDAP. В этом случае сервер Samba выполняет роль "​отдельного"​ сервера,​ а LDAP обеспечивает уровень авторизации с описанием пользователя,​ группы и информации о пользователе компьютера для нормального функционирования и выполнения своих ролей (из 3 возможных). Отправной точкой в этом может служить сервер OpenLDAP с определённой директорией,​ которая принимает запросы авторизации. Подробнее эта процедура описана в предыдущей главе [[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети:​openldap_server|OpenLDAP сервер]]. После прочтения этой главы, вы должны решить для себя что вы хотите от вашего сервера Samba, а затем настроить его относительно ваших потребностей. В этом разделе описана интеграция Samba и LDAP. В этом случае сервер Samba выполняет роль "​отдельного"​ сервера,​ а LDAP обеспечивает уровень авторизации с описанием пользователя,​ группы и информации о пользователе компьютера для нормального функционирования и выполнения своих ролей (из 3 возможных). Отправной точкой в этом может служить сервер OpenLDAP с определённой директорией,​ которая принимает запросы авторизации. Подробнее эта процедура описана в предыдущей главе [[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети:​openldap_server|OpenLDAP сервер]]. После прочтения этой главы, вы должны решить для себя что вы хотите от вашего сервера Samba, а затем настроить его относительно ваших потребностей.
  
-=====Установка пакетов=====+====Установка пакетов====
  
 Для правильной интеграции Samba и LDAP вам необходимо установить три пакета:​ //samba, samba-doc// и //​smbldap-tools//​. Для правильной интеграции Samba и LDAP вам необходимо установить три пакета:​ //samba, samba-doc// и //​smbldap-tools//​.
Строка 18: Строка 18:
 <​code>​sudo apt-get install samba samba-doc smbldap-tools</​code>​ <​code>​sudo apt-get install samba samba-doc smbldap-tools</​code>​
  
- +====Настройка LDAP====
-=====Настройка LDAP=====+
  
 Теперь настроим LDAP сервер,​ чтобы он мог хранить данные Samba. Для этого нам необходимо выполнить три пункта:​ Теперь настроим LDAP сервер,​ чтобы он мог хранить данные Samba. Для этого нам необходимо выполнить три пункта:​
Строка 26: Строка 25:
   - Добавить объекты   - Добавить объекты
  
-Схема Samba +===Схема Samba=== 
-----+
 Для того чтобы OpenLDAP использовался как дополнение к Samba, теоретически в дереве (DIT) должны присутствовать атрибуты которые корректно описывают данные Samba. Такие атрибуты могут быть получены путем введения схемы Samba в LDAP. Сейчас мы это сделаем. Для того чтобы OpenLDAP использовался как дополнение к Samba, теоретически в дереве (DIT) должны присутствовать атрибуты которые корректно описывают данные Samba. Такие атрибуты могут быть получены путем введения схемы Samba в LDAP. Сейчас мы это сделаем.
  
 <​note>​Для более детальной информации о схемах и их установке смотри [[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети/​openldap_server#​изменение_базы_данных_настройки_slapd|Изменение базы данных настройки slapd]].</​note>​ <​note>​Для более детальной информации о схемах и их установке смотри [[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети/​openldap_server#​изменение_базы_данных_настройки_slapd|Изменение базы данных настройки slapd]].</​note>​
   ​   ​
-1. Такая схема ​может быть ​найдена в установленном вами пакете samba-doc. ​Этот файл нужно ​скопировать и разархивировать в директорию ///​etc/​ldap/​schema//​ следующим образом:​+1. Такая схема находится в свежеустановленном вами пакете samba-doc. ​Ее требуется скопировать и разархивировать в директорию ///​etc/​ldap/​schema//​ следующим образом:​
   ​   ​
 <​code>​sudo cp /​usr/​share/​doc/​samba-doc/​examples/​LDAP/​samba.schema.gz /​etc/​ldap/​schema <​code>​sudo cp /​usr/​share/​doc/​samba-doc/​examples/​LDAP/​samba.schema.gz /​etc/​ldap/​schema
 sudo gzip -d /​etc/​ldap/​schema/​samba.schema.gz</​code>​ sudo gzip -d /​etc/​ldap/​schema/​samba.schema.gz</​code>​
  
-2. Найти ​файл конфигурации schema_convert.conf,​ который должен содержать следующие строки:​+2. Получаем файл конфигурации schema_convert.conf,​ который должен содержать следующие строки:​
 <​code>​ <​code>​
 include /​etc/​ldap/​schema/​core.schema include /​etc/​ldap/​schema/​core.schema
Строка 56: Строка 55:
 </​code> ​ </​code> ​
  
-3. Оставить директорию ​ldif_output ​исходящей.+3. Оставляем каталог ldif_output ​для вывода.
  
-4. Определить ​индекс для схемы:+4. Определяем ​индекс для схемы:
 <​code>​slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,​cn=schema <​code>​slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,​cn=schema
 dn: cn={14}samba,​cn=schema,​cn=config</​code>​ dn: cn={14}samba,​cn=schema,​cn=config</​code>​
  
-5. Конвертировать ​схему в формат LDIF: +5. Конвертируем ​схему в формат LDIF:  
 +<​code>​slapcat -f schema_convert.conf -F ldif_output -n0 -H \ 
 +ldap:///​cn={14}samba,​cn=schema,​cn=config -l cn=samba.ldif</​code>​ 
 + 
 +6. Редактируем созданный файл cn=samba.ldif,​ удаляя индексную информацию,​ по достижению:
 <​code>​dn:​ cn=samba,​cn=schema,​cn=config <​code>​dn:​ cn=samba,​cn=schema,​cn=config
 ... ...
 cn: samba</​code>​ cn: samba</​code>​
  
-Удалив следующие строки:​+удалите строки ​в конце:
 <​code>​structuralObjectClass:​ olcSchemaConfig <​code>​structuralObjectClass:​ olcSchemaConfig
 entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
Строка 76: Строка 79:
 modifyTimestamp:​ 20080827045234Z</​code>​ modifyTimestamp:​ 20080827045234Z</​code>​
  
-//​Внимание:​ данные могут ​незначительно ​отличаться!//​+//​Внимание: ​Ваши ​данные могут отличаться!//​
  
-7. Добавить ​новую схему:+7. Добавляем ​новую схему:
 <​code>​sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif</​code>​ <​code>​sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif</​code>​
  
 Для запроса и просмотра новой схемы введите:​ Для запроса и просмотра новой схемы введите:​
 <​code>​sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,​cn=config '​cn=*samba*'</​code>​ <​code>​sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,​cn=config '​cn=*samba*'</​code>​
 +
 +===Индексы Samba===
 +
 +Теперь,​ когда slapd знает о атрибутах Samba, мы можем создать несколько индексов на их основе. Индексация записей является способом повышения производительности,​ когда клиент осуществляет выборочный поиск в дереве (DIT).
 +
 +Создайте файл samba_indices.ldif следующего содержания:​
 +<​code>​dn:​ olcDatabase={1}hdb,​cn=config
 +changetype: modify
 +add: olcDbIndex
 +olcDbIndex: uidNumber eq
 +olcDbIndex: gidNumber eq
 +olcDbIndex: loginShell eq
 +olcDbIndex: uid eq,pres,sub
 +olcDbIndex: memberUid eq,pres,sub
 +olcDbIndex: uniqueMember eq,pres
 +olcDbIndex: sambaSID eq
 +olcDbIndex: sambaPrimaryGroupSID eq
 +olcDbIndex: sambaGroupType eq
 +olcDbIndex: sambaSIDList eq
 +olcDbIndex: sambaDomainName eq
 +olcDbIndex: default sub</​code>​
 +
 +Используйте утилиту //​ldapmodify//​ для загрузки новых индексов:​
 +<​code>​sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif</​code>​
 +
 +Если все настроено правильно,​ вы увидите новые индексы используя утилиту //​ldapsearch//:​
 +<​code>​sudo ldapsearch -Q -LLL -Y EXTERNAL -H \
 +ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex</​code> ​
 +
 +Добавление объектов Samba к LDAP
 +----
 +Далее настройте пакет smbldap-tools для соответствия среды работы. Пакет поставляется со скриптом конфигурации,​ в котором указаны вопросы о необходимых опциях установки. Для запуска скрипта введите в терминале: ​
 +<​code>​sudo gzip -d /​usr/​share/​doc/​smbldap-tools/​configure.pl.gz
 +sudo perl /​usr/​share/​doc/​smbldap-tools/​configure.pl</​code>​
 +
 +Если у вас есть резервная копия, продолжайте наполнять директорию:​
 +<​code>​sudo smbldap-populate</​code>​
 +
 +Вы можете создать файл LDIF содержащий новые объекты Samba выполнив //sudo smbldap-populate -e samba.ldif//​. Это позволит просматривать изменения,​ убедившись,​ что все работает правильно. Если это так, перезапустите скрипт без опции '​-e'​. Либо вы можете взять файл LDIF и импортировать его данные в обычном режиме.
 +
 +Сейчас ваша директория LDAP имеет всю необходимую информацию для авторизации пользователей Samba.
 +
 +====Конфигурация Samba====
 +
 +Есть несколько способов настройки Samba. Более подробную информацию смотри в разделе "​Windows Networking"​. Чтобы настроить Samba для использования LDAP необходимо отредактировать конфигурационный файл /​etc/​samba/​smb.conf указав комментарий в значении //passdb// и добавив некоторые значения для работы LDAP:
 +<​code># ​  ​passdb backend = tdbsam
 +
 +# LDAP Settings
 +   ​passdb backend = ldapsam:​ldap://​hostname
 +   ldap suffix = dc=example,​dc=com
 +   ldap user suffix = ou=People
 +   ldap group suffix = ou=Groups
 +   ldap machine suffix = ou=Computers
 +   ldap idmap suffix = ou=Idmap
 +   ldap admin dn = cn=admin,​dc=example,​dc=com
 +   ldap ssl = start tls
 +   ldap passwd sync = yes
 +...
 +   add machine script = sudo /​usr/​sbin/​smbldap-useradd -t 0 -w "​%u"</​code>​
 +   
 +//​Измените значения для вашей конфигурации.//​
 +
 +Перегрузите сервер Samba для применения изменений.
 +
 +<​code>​sudo restart smbd
 +sudo restart nmbd</​code>​
 +
 +Теперь укажите Samba пароль DN пользователя root (который указывается при установке пакета slapd):
 +
 +<​code>​sudo smbpasswd -w password</​code>​
 +
 +Если у вас уже есть существующие пользователи LDAP, которых вы хотите включить в вашу конфигурацию Samba, они должны иметь необходимые атрибуты. Утилита //​smbpasswd//​ подойдет для этого наилучшим образом (ваш компьютер должен иметь возможность видеть (нумеровать) этих пользователей через NSS; или же должны быть установлены и настроены пакеты libnss-ldapd или libnss-ldap):​
 +
 +<​code>​sudo smbpasswd -a username</​code>​
 +
 +Вам будет предложено ввести пароль. Это рассматривается как выдача нового пароля пользователю,​ что делает его таким как прежде и является разумным решением.
 +
 +Для настройки пользователей,​ групп и учётных записей на компьютерах используйте стандартные утилиты предоставляемые пакетом smbldap-tools. Вот несколько примеров: ​
 +
 +1. Добавление нового пользователя:​
 +<​code>​sudo smbldap-useradd -a -P username</​code>​
 +
 +Опция '​-a'​ добавляет атрибут Samba, а опция '​-P'​ вызывает утилиту //​smbldap-passwd//,​ после того как пользователь создан,​ позволяя создать новый пароль для этого пользователя.
 +
 +2. Удаление пользователя:​
 +<​code>​sudo smbldap-userdel username</​code>​
 +
 +В этой команде также можно использовать опцию '​-r'​ для удаления домашней директории пользователя.
 +
 +3. Добавление группы:​
 +<​code>​sudo smbldap-groupadd -a groupname</​code>​
 +
 +В **smbldap-useradd** опция '​-a'​ добавляет атрибуты Samba.
 +
 +4. Сделать существующего пользователя членом группы:​
 +<​code>​sudo smbldap-groupmod -m username groupname</​code>​
 +Опция -m может добавлять более одного пользователя за раз, если использовать список,​ разделенный запятыми.
 +
 +5. Удаление пользователя из группы:​
 +<​code>​sudo smbldap-groupmod -x username groupname</​code>​
 +
 +6. Добавить в Samba учетную запись компьютера:​
 +<​code>​sudo smbldap-useradd -t 0 -w username</​code>​
 +Замените **username** на имя рабочей станции. Опция **-t 0** создает учетную запись без задержки,​ в то время как опция **-w** определяет пользователя как учетную запись компьютера. Также обратите внимание,​ что параметр **add machine script** в /​etc/​samba/​smb.conf изменен чтобы использовался **smbldap-useradd**.
 +
 +Существуют утилиты в пакете **smbldap-tools**,​ которые тут не рассматривались. Здесь полный список:​
 +
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-groupadd.8.html|smbldap-groupadd]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-groupdel.8.html|smbldap-groupdel]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-groupmod.8.html|smbldap-groupmod]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-groupshow.8.html|smbldap-groupshow]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-passwd.8.html|smbldap-passwd]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-populate.8.html|smbldap-populate]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-useradd.8.html|smbldap-useradd]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-userdel.8.html|smbldap-userdel]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-userinfo.8.html|smbldap-userinfo]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-userlist.8.html|smbldap-userlist]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-usermod.8.html|smbldap-usermod]] \\
 +[[http://​manpages.ubuntu.com/​manpages/​en/​man8/​smbldap-usershow.8.html|smbldap-usershow]]
 +
 +====Ссылки====
 +
 +  -- Для дополнительной информации по установке и настройке Samba смотрите раздел [[wiki:​руководство_по_ubuntu_server:​сеть_windows|Настройка сети Windows]].
 +  -- Существует много мест где документированы LDAP и Samba по возрастанию сложности [[http://​samba.org/​samba/​docs/​man/​Samba-HOWTO-Collection/​|Samba HOWTO Collection]].
 +  -- Относительно предыдущей ссылки,​ смотрите отдельно [[http://​samba.org/​samba/​docs/​man/​Samba-HOWTO-Collection/​passdb.html|секцию passdb]]
 +  -- Также устаревшее (2007) [[http://​download.gna.org/​smbldap-tools/​docs/​samba-ldap-howto/​|Linux Samba-OpenLDAP HOWTO]], содержит важные заметки.
 +  -- Основная страница [[https://​help.ubuntu.com/​community/​Samba#​samba-ldap|документации сообщества Ubuntu по Samba]] содержит множество ссылок на статьи,​ которые могут оказаться полезными.
 +
 +----
 +
 +<style float-right>​
 +[[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети:​openldap_server|<​-назад]] | 
 +[[wiki:​руководство_по_ubuntu_server:​авторизация_по_сети:​kerberos|далее->​]]</​style>​
 +