Это старая версия документа.
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
Ссылки
For more information on installing and configuring Samba see Windows Networking of this Ubuntu Server Guide.
There are multiple places where LDAP and Samba is documented in the upstream Samba HOWTO Collection.
Regarding the above, see specifically the passdb section.
Although dated (2007), the Linux Samba-OpenLDAP HOWTO contains valuable notes.
The main page of the Samba Ubuntu community documentation has a plethora of links to articles that may prove useful.