| |
В этом разделе мы разберёмся, как настроить сервер NFS. Клиент NFS (ldap-client) будет монтировать ресурсы сервера с помощью autofs версии 5. При этом карты автоматического монтирования будут располагаться на сервере OpenLDAP (ldap-srv). Мы так же создадим центральный 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.
Где работаем: 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 user@ldap-srv.example.com:/etc/ssl/certs/rootca.crt /etc/ssl/certs/ # scp user@ldap-srv.example.com:/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
Можем переходить к настройке сетевых ресурсов.
Где работаем: 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 мы будем централизованно управлять тем, что и куда монтировать на клиентских машинах.
Где работаем: 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.
Где работаем: 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
Если Вы видите похожий вывод, то цель достигнута!
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |