Samba и LDAP
В этом разделе описана интеграция Samba и LDAP. В этом случае сервер Samba выполняет роль «отдельного» сервера, а LDAP обеспечивает уровень авторизации с описанием пользователя, группы и информации о пользователе компьютера для нормального функционирования и выполнения своих ролей (из 3 возможных). Отправной точкой в этом может служить сервер OpenLDAP с определённой директорией, которая принимает запросы авторизации. Подробнее эта процедура описана в предыдущей главе OpenLDAP сервер. После прочтения этой главы, вы должны решить для себя что вы хотите от вашего сервера Samba, а затем настроить его относительно ваших потребностей.
Установка пакетов
Для правильной интеграции Samba и LDAP вам необходимо установить три пакета: samba, samba-doc и smbldap-tools. Откровенно говоря, пакет smbldap-tools не является необходимым, но если вы хотите настроить ваш сервер иным способом, он может вам понадобится в дальнейшем.
Для установки введите в терминале:
sudo apt-get install samba samba-doc smbldap-tools
Настройка LDAP
Теперь настроим LDAP сервер, чтобы он мог хранить данные Samba. Для этого нам необходимо выполнить три пункта:
- Импортировать схему
- Индексировать записи
- Добавить объекты
Схема Samba
Для того чтобы OpenLDAP использовался как дополнение к Samba, теоретически в дереве (DIT) должны присутствовать атрибуты которые корректно описывают данные Samba. Такие атрибуты могут быть получены путем введения схемы Samba в LDAP. Сейчас мы это сделаем.
1. Такая схема находится в свежеустановленном вами пакете samba-doc. Ее требуется скопировать и разархивировать в директорию /etc/ldap/schema следующим образом:
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema sudo gzip -d /etc/ldap/schema/samba.schema.gz
2. Получаем файл конфигурации schema_convert.conf, который должен содержать следующие строки:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/ldapns.schema include /etc/ldap/schema/pmi.schema include /etc/ldap/schema/samba.schema
3. Оставляем каталог ldif_output для вывода.
4. Определяем индекс для схемы:
slapcat -f schema_convert.conf -F ldif_output -n 0 | grep samba,cn=schema dn: cn={14}samba,cn=schema,cn=config
5. Конвертируем схему в формат LDIF:
slapcat -f schema_convert.conf -F ldif_output -n0 -H \ ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif
6. Редактируем созданный файл cn=samba.ldif, удаляя индексную информацию, по достижению:
dn: cn=samba,cn=schema,cn=config ... cn: samba
удалите строки в конце:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
Внимание: Ваши данные могут отличаться!
7. Добавляем новую схему:
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=samba.ldif
Для запроса и просмотра новой схемы введите:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'
Индексы Samba
Теперь, когда slapd знает о атрибутах Samba, мы можем создать несколько индексов на их основе. Индексация записей является способом повышения производительности, когда клиент осуществляет выборочный поиск в дереве (DIT).
Создайте файл samba_indices.ldif следующего содержания:
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
Используйте утилиту ldapmodify для загрузки новых индексов:
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f samba_indices.ldif
Если все настроено правильно, вы увидите новые индексы используя утилиту ldapsearch:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H \ ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex
Добавление объектов Samba к LDAP
Далее настройте пакет smbldap-tools для соответствия среды работы. Пакет поставляется со скриптом конфигурации, в котором указаны вопросы о необходимых опциях установки. Для запуска скрипта введите в терминале:
sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz sudo perl /usr/share/doc/smbldap-tools/configure.pl
Если у вас есть резервная копия, продолжайте наполнять директорию:
sudo smbldap-populate
Вы можете создать файл LDIF содержащий новые объекты Samba выполнив sudo smbldap-populate -e samba.ldif. Это позволит просматривать изменения, убедившись, что все работает правильно. Если это так, перезапустите скрипт без опции '-e'. Либо вы можете взять файл LDIF и импортировать его данные в обычном режиме.
Сейчас ваша директория LDAP имеет всю необходимую информацию для авторизации пользователей Samba.
Конфигурация Samba
Есть несколько способов настройки Samba. Более подробную информацию смотри в разделе «Windows Networking». Чтобы настроить Samba для использования LDAP необходимо отредактировать конфигурационный файл /etc/samba/smb.conf указав комментарий в значении passdb и добавив некоторые значения для работы LDAP:
# 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"
Измените значения для вашей конфигурации.
Перегрузите сервер Samba для применения изменений.
sudo restart smbd sudo restart nmbd
Теперь укажите Samba пароль DN пользователя root (который указывается при установке пакета slapd):
sudo smbpasswd -w password
Если у вас уже есть существующие пользователи LDAP, которых вы хотите включить в вашу конфигурацию Samba, они должны иметь необходимые атрибуты. Утилита smbpasswd подойдет для этого наилучшим образом (ваш компьютер должен иметь возможность видеть (нумеровать) этих пользователей через NSS; или же должны быть установлены и настроены пакеты libnss-ldapd или libnss-ldap):
sudo smbpasswd -a username
Вам будет предложено ввести пароль. Это рассматривается как выдача нового пароля пользователю, что делает его таким как прежде и является разумным решением.
Для настройки пользователей, групп и учётных записей на компьютерах используйте стандартные утилиты предоставляемые пакетом smbldap-tools. Вот несколько примеров:
1. Добавление нового пользователя:
sudo smbldap-useradd -a -P username
Опция '-a' добавляет атрибут Samba, а опция '-P' вызывает утилиту smbldap-passwd, после того как пользователь создан, позволяя создать новый пароль для этого пользователя.
2. Удаление пользователя:
sudo smbldap-userdel username
В этой команде также можно использовать опцию '-r' для удаления домашней директории пользователя.
3. Добавление группы:
sudo smbldap-groupadd -a groupname
В smbldap-useradd опция '-a' добавляет атрибуты Samba.
4. Сделать существующего пользователя членом группы:
sudo smbldap-groupmod -m username groupname
Опция -m может добавлять более одного пользователя за раз, если использовать список, разделенный запятыми.
5. Удаление пользователя из группы:
sudo smbldap-groupmod -x username groupname
6. Добавить в Samba учетную запись компьютера:
sudo smbldap-useradd -t 0 -w username
Замените username на имя рабочей станции. Опция -t 0 создает учетную запись без задержки, в то время как опция -w определяет пользователя как учетную запись компьютера. Также обратите внимание, что параметр add machine script в /etc/samba/smb.conf изменен чтобы использовался smbldap-useradd.
Существуют утилиты в пакете smbldap-tools, которые тут не рассматривались. Здесь полный список:
smbldap-groupadd
smbldap-groupdel
smbldap-groupmod
smbldap-groupshow
smbldap-passwd
smbldap-populate
smbldap-useradd
smbldap-userdel
smbldap-userinfo
smbldap-userlist
smbldap-usermod
smbldap-usershow
Ссылки
Для дополнительной информации по установке и настройке Samba смотрите раздел Настройка сети Windows.
Существует много мест где документированы LDAP и Samba по возрастанию сложности Samba HOWTO Collection.
Относительно предыдущей ссылки, смотрите отдельно секцию passdb
Также устаревшее (2007) Linux Samba-OpenLDAP HOWTO, содержит важные заметки.
Основная страница документации сообщества Ubuntu по Samba содержит множество ссылок на статьи, которые могут оказаться полезными.