Журнал LinuxFormat - перейти на главную

LXF105:Стань гуру LDAP

Материал из Linuxformat
Перейти к: навигация, поиск
Hardcore Linux Проверь себя на проекте для продвинутых пользователей

LDAP: /home виден из далека

Д-р Крис Браун предоставит доступ к вашей домашней директории из любого места/офиса на Земле с помощью LDAP-аутентификации из прошлой статьи.

Пусть это выдает мой возраст, но я привык к работе в настоящем офисе с настоящей дверью и реальной грудой моих вещей на полу. Дверь, возможно, была важнее всего, так как я мог почесаться или позволить себе отрыжку, не оскорбляя ничьих чувств; но и груды вещей были тоже важны – они питали мое сознание личной уникальности, а также иллюзию, что я и вправду работаю.


Ныне в порядке вещей стал «hotdesking» – один из гнусных терминов, придуманных для описания практики предоставления рабочего пространства, не привязанного к конкретному работнику. С технической точки зрения, ноутбуки, беспроводные сети и мобильные телефоны сделали «hotdesking» чрезвычайно легким. Тем не менее иногда бывает по-прежнему нужно обеспечить работу с компьютером, не привязывая к нему пользователей, и на нашем уроке мы увидим, как легко создать такое окружение в Linux.

Идея заключается в хранении всех специфических данных пользователя на центральном сервере, а не на индивидуальной рабочей станции. Короче, вот что мы хотим сделать:

  1. Установить файловый сервер NFS для домашних директорий наших пользователей.
  2. Настроить наши рабочие станции для автомонтирования домашних каталогов по требованию.
  3. Установить сервер LDAP и добавить туда учетные записи наших пользователей (большую часть этого мы сделали в прошлом месяце).
  4. Настроить рабочие станции на использование сервера LDAP для информации об учетных записях пользователей и аутентификации.

Этот урок будет шире, чем обычно. Мы переберем несколько различных технологий – NFS, LDAP, Automounter, даже немного коснемся скриптов оболочки. Рис. 1 на соседней странице изображает все в детялях.

Настройка сервера NFS

Я использую на сервере CentOS 5 (клон RHEL 5), но сгодится любой современный дистрибутив. Первым делом надо проверить, что NFS уже установлен, с помощью команд

 # rpm -qa | grep nfs
 nfs-utils-lib-1.0.8-7.2
 nfs-utils-1.0.9-16.el5

Сервер NFS очень легко настроить. Его файл конфигурации – /etc/exports., здесь задается, какие части файловой системы сервера должны быть доступны и каким клиентам. Для наших сегодняшних целей я хочу экспортировать директорию /home (место «обитания» домашних директорий пользователей) на все машины локальной сети, которая имеет IP-адрес 192.168.0.0. Для этого мне надо поместить в /etc/exports следующую строчку:

 /home 192.168.0.0/24(rw)

Опция (rw) очень важна. Без нее файловая система экспортируется в режиме «только для чтения».

Далее я запустил сервер NFS. Так как моя система – близнец Red-Hat, можно использовать для этого маленький скрипт RHEL – service:

 # service nfs start

Наконец, чтобы обеспечить старт NFS при запуске системы, я запустил команду

 # chkconfig nfs on

Вот и все, что надо было сделать!

Настройка клиента NFS

На этом этапе хорошо бы протестировать сервер NFS, попытавшись смонтировать его файловую систему /home на свои клиенты. На них я буду использовать OpenSUSE 10.3, но снова отмечу, что различия у всех дистрибутивов невелики. На случайно выбранном клиенте я попытался выполнить монтирование «вручную» так:

 # mount 192.168.0.41:/home /home

Здесь стоит отметить несколько моментов. Во-первых, 192.168.0.41 – это IP-адрес моего сервера NFS. Вы можете использовать здесь имя машины (если, конечно, оно разрешимо), но я предпочитаю вводить IP-адрес. Во-вторых, я монтирую в /home, так что моя директория будет доступна как /home и на сервере, и на клиенте. Вы не обязаны поступать так же; базовая схема предполагает помещать директории пользователей в /exports на сервере и монтировать их в /home на рабочих станциях.

При успехе монтирования вы должны иметь возможность доступа к /home на клиенте, как если бы вы сидели за сервером (на данном этапе, конечно, /home на сервере пока пуста).

    Чтобы сделать это монтирование постоянным (то есть обеспечить

повторное монтирование при загрузке), нужна строка в /etc/fstab типа этой:

192.168.0.41:/home /home nfs hard,intr 0 0
    Будьте осторожны при редактировании этого файла – если вы

повредите существующие строки, ваша система может перестать пра- вильно загружаться!

    Такая организация постоянного монтирования /home с сервера в

/home на всех клиентах – одна из простейших возможных схем. Ей не хватает гибкости: например, предполагается, что все пользовательские директории находятся на одном и том же сервере, и все домашние директории пользователей доступны для всех клиентов, независимо от того, кто на самом деле вошел в систему. Позднее на этом уроке мы установим Automounter, предлагающий более гибкое решение. Настраиваем сервер LDAP Теперь переключим внимание на сервер LDAP. Я решил использовать один и тот же компьютер для LDAP и NFS, но в загруженной сети, вы, возможно, захотите использовать две отдельные машины.

    На прошлом уроке мы рассмотрели создание сервера LDAP, и я

показал, как добавить учетную запись пользователя вручную, редак- тируя LDIF-файл, и как добавить ее в каталог с помощью ldapadd. Мы рассмотрели также Lat (графический инструмент управления LDAP), как способ просмотра каталога LDAP. Вы можете использовать Lat еще и для добавления и изменения пользователей и групп в LDAP, как показано на рис. 2 (на обороте). Но создание учетной записи пользо- вателя – это не просто добавление записи в LDAP: нам нужно создать домашнюю директорию и установить ей владельца и права, включить пользователя в основную группу и присвоить ему уникальный UID. Это оказалось сложнее, чем я думал: мне даже пришлось писать неболь- шой shell-скрипт. Но мы не боимся трудностей – мы здесь все взрос- лые, верно?

    Мой скрипт (addldapuser) делает следующее:
1 Запускает программу useradd для добавления аккаунта в /etc/

passwd, создания домашней директории и т.п.

2 Конвертирует новую созданную запись /etc/passwd в файл LDIF.
3 Запускает команду ldapadd для добавления записи в файл LDIF,

который мы только что создали в директории LDAP.

4 Устанавливает пароль для пользователя.
    Вот этот скрипт. Нумерация строк нужна только для ссылок на них –

в файле их быть не должно:

 1 useradd -m $1
 2 grep $1 /etc/passwd > newuser.in
 3 grep $1 /etc/group > newgroup.in
 4 /usr/share/openldap/migration/migrate_passwd.pl newuser.in >
 newuser.ldif
 5 ldapadd -x -D “cn=admin,dc=example,dc=com” -y /etc/
 openldap/ldap_passwd -W -f newuser.ldif
 6 /usr/share/openldap/migration/migrate_group.pl newgroup.in >
 newgroup.ldif
 7 ldapadd -x -D “cn=admin,dc=example,dc=com” -y /etc/
 openldap/ldap_passwd -W -f newgroup.ldif
 8 ldappasswd -x -S -D “cn=admin,dc=example,dc=com” -y /etc/
 openldap/ldap_passwd “uid=$1,ou=users,dc=example,dc=com”
    Строка 1 в скрипте добавляет учетную запись пользователя на

сервер. Создается домашняя директория, и начальный набор файлов копируется в нее из /etc/skel. $1 – ссылка на первый аргумент, переда-

Персональные инструменты
купить
подписаться
Яндекс.Метрика