The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Сети, протоколы, сервисы" / Оглавление документа

7. OpenLDAP как хранилище карт автоматического монтирования для autofs

В этом разделе мы разберёмся, как настроить сервер NFS. Клиент NFS (ldap-client) будет монтировать ресурсы сервера с помощью autofs версии 5. При этом карты автоматического монтирования будут располагаться на сервере OpenLDAP (ldap-srv). Мы так же создадим центральный NFS репозиторий для программного обеспечения.

7.1 Создание сервера NFS

Развернём NFS-сервер по аналогии с первым разделом. Для начала обновим информацию на DNS сервере (в нашем случае — в файле /etc/hosts):

Где работаем: dns-srv

127.0.0.1        localhost
192.168.122.140  dns-srv.example.com

192.168.122.150  ldap-srv.example.com
192.168.122.151  ldap-client.example.com
192.168.122.154  nfs-srv.example.com

И перезапустим демон DNS, чтобы изменения вступили в силу:

#  service dnsmasq restart

Теперь настроим наш NFS-сервер.

Где работаем: nfs-srv

Настроим сеть в файле /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.122.154
        netmask 255.255.255.0
        gateway 192.168.122.1
        dns-nameservers 192.168.122.140

Настроим имя NFS-сервера. В Ubuntu 14.04 останов или перезапуск сервиса networking не поддерживается, поэтому придётся сделать так:

#  echo 'nfs-srv.example.com' > /etc/hostname
#  reboot

Проверим разрешение имени будущего сервера LDAP:

$  dig nfs-srv.example.com +short
192.168.122.150

Проверим обратное разрешение имени:

$  dig -x `dig nfs-srv.example.com +short` +short
nfs-srv.example.com.

7.2 Интеграция сервера NFS с сервером каталогов

Где работаем: nfs-srv

Установим необходимые пакеты:

#  passwd
Введите новый пароль UNIX:
Повторите ввод нового пароля UNIX:
passwd: password updated successfully
#  apt-get install nfs-common nfs-kernel-server nfs4-acl-tools libnss-ldapd libpam-ldapd sudo-ldap

Заменим ссылку /etc/sudo-ldap.conf на пустой файл:

#  rm /etc/sudo-ldap.conf
#  touch /etc/sudo-ldap.conf

Так как наши пользовательские учётные записи хранятся на сервере OpenLDAP, NFS-сервер тоже должен быть LDAP-клиентом. Произведём их интеграцию. Для этого надо внести изменения в четыре конфигурационных файла и произвести ряд нехитрых манипуляций.

Конфигурация LDAP-клиента в /etc/ldap/ldap.conf:

BASE  dc=example,dc=com
URI  ldap://ldap-srv.example.com
TLS_CACERT /etc/ssl/certs/rootca.crt
TLS_REQCERT demand
TLS_CRLFILE /etc/ssl/rootca.crl
TIMELIMIT 15
TIMEOUT  20

Конфигурация LDAP для sudo в /etc/sudo-ldap.conf:

BASE  dc=example,dc=com
URI  ldap://ldap-srv.example.com
TLS_CACERT /etc/ssl/certs/rootca.crt
TLS_REQCERT demand
TLS_CRLFILE /etc/ssl/rootca.crl
BINDDN  cn=nssproxy,ou=users,dc=example,dc=com
BINDPW  пароль.пользователя.nssproxy
SUDOERS_BASE    ou=sudo,ou=services,dc=example,dc=com
TIMELIMIT 15
TIMEOUT  20

Конфигурация локальной службы имён LDAP в /etc/nslcd.conf:

uid nslcd
gid nslcd
uri ldap://ldap-srv.example.com
base dc=example,dc=com
binddn cn=nssproxy,ou=users,dc=example,dc=com
bindpw пароль.пользователя.nssproxy
rootpwmoddn cn=admin,dc=example,dc=com
base group ou=groups,dc=example,dc=com
base passwd ou=users,dc=example,dc=com
base shadow ou=users,dc=example,dc=com
bind_timelimit 5
timelimit 10
idle_timelimit 60
ssl start_tls
tls_reqcert never
tls_cacertfile /etc/ssl/certs/rootca.crt
nss_initgroups_ignoreusers bin,daemon,games,lp,mail,nobody,nslcd,root,sshd,sync,uucp
nss_initgroups_ignoreusers sys,man,news,proxy,www-data,backup,list,irc,gnats,landscape

Конфигурация Name Service Switch (NSS) в /etc/nsswitch.conf:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis ldap
sudoers:        files ldap

Скопируем сертификат нашего удостоверяющего центра и CRL на NFS-сервер. Подставим вместо user имя Вашей пользовательской учётной записи на ldap-srv:

#  scp [email protected]:/etc/ssl/certs/rootca.crt /etc/ssl/certs/
#  scp [email protected]:/etc/ssl/rootca.crl /etc/ssl/

Завершая интеграцию с LDAP-сервером, поменяем права доступа к /etc/nslcd.conf и /etc/sudo-ldap.conf, потому что теперь в них хранится информация для аутентификации. Затем перезапустим сервисы nslcd и nscd:

#  chmod 600 /etc/{nslcd.conf,sudo-ldap.conf}
#  chown root:root /etc/sudo-ldap.conf
#  chown nslcd:nslcd /etc/nslcd.conf
#  service nslcd restart
 * Restarting LDAP connection daemon nslcd                                [ OK ]
#  service nscd restart
 * Restarting LDAP connection daemon nscd                                 [ OK ]

Теперь удостоверимся, что пользователя test.user нет в локальной конфигурации в /etc/passwd:

$  grep ^test.user /etc/passwd || echo No such user
No such user

А теперь проверим, что мы можем получить информацию об этом пользователе от нашего сервера каталогов. Напоминаю, что данные shadow можно получить только выполнив getent от имени суперпользователя (UID=0):

$  getent passwd test.user
test.user:x:1101:1101:Test User:/home/test.user:/bin/bash
$  getent group test.group
test.group:*:1101:
#  getent shadow test.user
test.user:*:15140:0:99999:7:::0

Можем переходить к настройке сетевых ресурсов.

7.3 Настройка сетевых ресурсов NFS-сервера

Где работаем: nfs-srv

Создайте каталоги, в которых будут находиться пользовательские домашние каталоги (/export/home) и центральный репозиторий программного обеспечения (/export/install):

#  mkdir -p /export/home /export/install

Держите в уме, что нам необходим домашний каталог для каждого пользователя.

Теперь можем создать тестовый пример. Для этих целей у нас и есть учётная запись test.user:

#  mkdir /export/home/test.user
#  cp /etc/skel/.* /export/home/test.user
#  chown -R test.user:test.group /export/home/test.user

Если забыли пароль учётной записи test.user, теперь можем его поменять:

$  ldappasswd -xZZWD cn=admin,dc=example,dc=com -S cn=test.user,ou=users,dc=example,dc=com

Укажем экспортируемые каталоги в /etc/exports:

/export/home    *.example.com(rw,no_subtree_check)
/export/install *.example.com(rw,no_subtree_check)

Перезапустим демон NFS:

#  service nfs-kernel-server restart

И проверим работоспособность:

$  showmount -e
Export list for nfs-srv.example.com:
/export/install *.example.com
/export/home    *.example.com

Каталоги успешно экспортируются. С помощью сервера OpenLDAP мы будем централизованно управлять тем, что и куда монтировать на клиентских машинах.

7.4 Создание карт автоматического монтирования на сервере LDAP

Где работаем: ldap-srv

Теперь, когда сервер NFS настроен, мы должны добавить новую схему данных для автоматического монтирования в базу данных нашего сервера каталогов.  Самый простой способ её получить — установить пакет autofs-ldap:

#  apt-get install autofs-ldap

Искомая схема данных - /etc/ldap/schema/autofs.schema. Как Вы уже возможно догадались, прежде всего её надо перевести в формат LDIF. В разделе 2.5 для этого мы использовали скрипт 2.5-schema-ldif.sh. Схема autofs.schema зависит от схемы core.schema. Поэтому перед конвертацией надо добавить в итоговый autofs.schema директиву include. Выполним в консоли:

$  echo "include /etc/ldap/schema/core.schema" > ~/ldap/autofs.schema
$  cat /etc/ldap/schema/autofs.schema >> ~/ldap/autofs.schema
$  SCHEMAS='autofs.schema' ~/ldap/2.5-schema-ldif.sh
config file testing succeeded

Посмотрим содержимое получившегося LDIF. Он довольно короткий:

$  cat ~/ldap/autofs.ldif
dn: cn=autofs,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: autofs
olcAttributeTypes: {0}( 1.3.6.1.1.1.1.25 NAME 'automountInformation' DESC 'Inf
 ormation used by the autofs automounter' EQUALITY caseExactIA5Match SYNTAX 1.
 3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.1.1.1.13 NAME 'automount' DESC 'An entry in an 
 automounter map' SUP top STRUCTURAL MUST ( cn $ automountInformation $ object
 class ) MAY description )
olcObjectClasses: {1}( 1.3.6.1.4.1.2312.4.2.2 NAME 'automountMap' DESC 'An gro
 up of related automount objects' SUP top STRUCTURAL MUST ou )

Пeреместим его к остальным наборам схем:

#  mv autofs.ldif /etc/ldap/schema

Загрузим его в конфигурацию сервера каталогов:

$  ldapadd -xZZWD cn=admin,dc=example,dc=com  -f /etc/ldap/schema/autofs.ldif
Enter LDAP Password:
adding new entry "cn=autofs,cn=schema,cn=config"

Можем удостовериться в том, что схема данных загружена:

$  ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b cn=schema,cn=config dn | grep auto
Enter LDAP Password:
dn: cn={14}autofs,cn=schema,cn=config

Создадим файл конфигурации с картами автоматического монтирования (7.4-autofs-map.ldif):

# Контейнер для конфигураций autofs
dn: ou=autofs,ou=services,dc=example,dc=com
ou: AutoFS
objectClass: top
objectClass: organizationalUnit
description: Automount maps

# Контейнер для карты auto.master
dn: ou=auto.master,ou=autofs,ou=services,dc=example,dc=com
ou: auto.master
objectClass: top
objectClass: automountMap

# Точка монтирования /nfs
dn: cn=/nfs,ou=auto.master,ou=autofs,ou=services,dc=example,dc=com
cn: /nfs
objectClass: top
objectClass: automount
automountInformation: ldap:ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com rsize=8192,wsize=8192

# Контейнер для карты auto.nfs
dn: ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com
ou: auto.nfs
objectClass: top
objectClass: automountMap

# Конфигурация дочерней точки монтирования home карты auto.nfs
dn: cn=home,ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com
objectClass: top
objectClass: automount
cn: home
automountInformation: nfs-srv.example.com:/export/home

# Конфигурация дочерней точки монтирования install карты auto.nfs
dn: cn=install,ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com
objectClass: top
objectClass: automount
cn: install
automountInformation: nfs-srv.example.com:/export/install

И добавим новую информацию в службу каталогов:

$  ldapadd -xZZWD cn=admin,dc=example,dc=com  -f 7.4-autofs-map.ldif

Проверить сделанные изменения можно так:

$  ldapsearch -xZZLLLWD cn=admin,dc=example,dc=com -b ou=autofs,ou=services,dc=example,dc=com dn
Enter LDAP Password:
dn: ou=autofs,ou=services,dc=example,dc=com
dn: ou=auto.master,ou=autofs,ou=services,dc=example,dc=com
dn: cn=/nfs,ou=auto.master,ou=autofs,ou=services,dc=example,dc=com
dn: ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com
dn: cn=home,ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com
dn: cn=install,ou=auto.nfs,ou=autofs,ou=services,dc=example,dc=com

Отлично! Теперь мы готовы настроить клиент для сервера NFS.

7.5 Настройка клиента для сервера NFS

Где работаем: ldap-client

В предыдущих разделах мы уже произвели интеграцию клиента с сервером каталогов. В этом разделе настроим на нём демон автоматического монтирования так, чтобы демон брал карты монтирования с сервера каталогов.

Как всегда, для начала установим несколько пакетов:

#  apt-get install nfs-common nfs4-acl-tools autofs5 autofs5-ldap

Настроим демон, транслирующий UID/GID в имена и наоборот (rpc.idmapd) в файле /etc/idmapd.conf:

[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
Domain = example.com

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

[Translation]

Method = nsswitch
GSS-Methods = nsswitch

Добавим в /etc/nsswitch.conf строку:

automount: ldap

Настроим демон автоматического монтирования в файле /etc/default/autofs:

TIMEOUT=300
BROWSE_MODE="no"
MOUNT_NFS_DEFAULT_PROTOCOL=4
# Измените LOGGING на "none", если собираетесь использовать конфигурацию в продакшене
LOGGING="debug"
LDAP_URI="ldap://ldap-srv.example.com"
SEARCH_BASE="ou=autofs,ou=services,dc=example,dc=com"
MAP_OBJECT_CLASS="automountMap"
ENTRY_OBJECT_CLASS="automount"
MAP_ATTRIBUTE="ou"
ENTRY_ATTRIBUTE="cn"
VALUE_ATTRIBUTE="automountInformation"
USE_MISC_DEVICE="yes"

Настроим аутентификацию демона автоматического монтирования в файле /etc/autofs_ldap_auth.conf:

<?xml version="1.0" ?>
 <autofs_ldap_sasl_conf
  usetls="yes"
  tlsrequired="no"
  authrequired="simple"
  user="cn=nssproxy,ou=users,dc=example,dc=com"
  secret="пароль.пользователя.nssproxy"
/>
<!-- EOF -->

Снова прячем файл с аутентификационной информацией от посторонних глаз, иначе демон автоматического монтирования его не примет:

#  chmod 0600 /etc/autofs_ldap_auth.conf
#  chown root:root /etc/autofs_ldap_auth.conf

Убедимся, что rpcbind стартует при загрузке системы и перезапустим его. То же самое сделаем с демоном autofs. Для корректной работы rpcbind лично мне пришлось перезагрузить клиентскую рабочую станцию. Вывод убран для краткости:

#  update-rc.d rpcbind defaults
#  service rpcbind restart
#  update-rc.d autofs defaults
#  service autofs restart

Проверьте файлы журналов сервера (nfs-srv) и клиента (ldap-client). Если всё в порядке, можно проверять созданную нами конфигурацию на клиентской машине:

$  ls -a /nfs/
.  ..
$  cd /nfs/home
$  pwd
/nfs/home
$  cd /nfs/install
$  pwd
/nfs/install
$  ls -a /nfs
.  ..  home  install
$ df -h /nfs/home
Файл.система                     Размер Использовано  Дост Использовано% Cмонтировано в
nfs-srv.example.com:/export/home   3,6G         1,6G  1,8G           47% /nfs/home
$ df -h /nfs/install
Файл.система                        Размер Использовано  Дост Использовано% Cмонтировано в
nfs-srv.example.com:/export/install   3,6G         1,6G  1,8G           47% /nfs/install

Если Вы видите похожий вывод, то цель достигнута!

Pro-LDAP.ru 2015 г. Последнее изменение страницы — 3 мая 2015 г. Вопросы и предложения принимаются на форуме проекта.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру