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

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

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: : '''Hardcore Linux''' Проверь себя на проекте для продвинутых пользователей Категория:Учебники ==''LDAP'': /home в...)
 
(''LDAP'': /home виден из далека)
Строка 4: Строка 4:
  
 
: '''Д-р Крис Браун''' предоставит доступ к вашей домашней директории из любого места/офиса на Земле с помощью ''LDAP''-аутентификации из прошлой статьи.
 
: '''Д-р Крис Браун''' предоставит доступ к вашей домашней директории из любого места/офиса на Земле с помощью ''LDAP''-аутентификации из прошлой статьи.
 +
 +
Пусть это выдает мой возраст, но я привык к работе в настоящем офисе с настоящей дверью и реальной грудой моих вещей на полу. Дверь, возможно, была важнее всего, так как я мог почесаться или позволить себе отрыжку, не оскорбляя
 +
ничьих чувств; но и груды вещей были тоже важны – они питали мое сознание личной уникальности, а также иллюзию, что я и вправду
 +
работаю.
 +
 +
{{Врезка|Содержание=[[Изображение:LXF105_83_1.jpg|Рис. 1]]  Рис. 1. Вот эту схему мы и попытаемся реализовать. |Ширина=300px}}
 +
 +
Ныне в порядке вещей стал «hotdesking» – один из гнусных терминов, придуманных для описания практики предоставления рабочего
 +
пространства, не привязанного к конкретному работнику. С технической точки зрения, ноутбуки, беспроводные сети и мобильные телефоны сделали «hotdesking» чрезвычайно легким. Тем не менее иногда бывает по-прежнему нужно обеспечить работу с компьютером, не привязывая к нему пользователей, и на нашем уроке мы увидим, как легко создать такое окружение в Linux.
 +
 +
Идея заключается в хранении всех специфических данных пользователя на центральном сервере, а не на индивидуальной рабочей станции. Короче, вот что мы хотим сделать:
 +
# Установить файловый сервер ''NFS'' для домашних директорий наших пользователей.
 +
# Настроить наши рабочие станции для автомонтирования домашних каталогов по требованию.
 +
# Установить сервер ''LDAP'' и добавить туда учетные записи наших пользователей (большую часть этого мы сделали в прошлом месяце).
 +
# Настроить рабочие станции на использование сервера ''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 – ссылка на первый аргумент, переда-

Версия 09:05, 28 апреля 2009

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 – ссылка на первый аргумент, переда-

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