Настройка UNIX и Linux для совместной работы


Узнайте о том, как обеспечить совместный доступ к системным базам данных и файловым системам из операционных систем Linux® и UNIX® с помощью информационной службы сети (Network Information Service, NIS) и сетевой файловой системы (Network File System, NFS). В последнем случае рассматриваются как прямые ссылки (direct links), так и средство автоматического монтирования (automounter). Несмотря на схожесть UNIX и Linux, между ними существуют некоторые различия, которые могут усложнить процесс интеграции этих операционных систем. Например, несмотря на то, что обе эти ОС используют одинаковую систему аутентификации, большинство систем являются автономными. Наладив обмен учетными данными, вы сможете использовать технологию единого входа (Single Sign-On, SSO) на любых серверах вашей сети.

Обмен информацией через службу NIS

Информационная служба сети (NIS) была разработана компанией Sun Microsystems и была также известна под именем Yellow Pages. Системный механизм работы этой службы довольно прост и основан на конвертации системных баз данных, таких как /etc/hosts и /etc/passwd, в универсальный формат (в формат DBM, аббревиатура которого уже давно утратила свое значение).

Базы данных располагаются на основном NIS-сервере (NIS-мастере). Каждая отдельная база помещена в именованный домен, а общий доступ к этим базам осуществляется через RPC-интерфейс. Служба NIS работает с различными файлами, включая следующие:

  • passwd (а также файл /etc/shadow, если он используется)
  • groups
  • hosts
  • netmask
  • netgroup
  • automount
  • services
  • protocols
  • ethers
  • aliases (файл псевдонимов для почтовой службы)

Вторичные серверы (или slave-серверы – компьютеры, содержащие резервные копии баз данных) копируют опубликованные базы с основного сервера. NIS-клиенты запрашивают информацию с NIS-сервера по мере необходимости (например, при входе пользователя в систему) и никогда не хранят полученную информацию, поскольку привязаны к NIS-серверу при помощи ypbind. Схема взаимодействия серверов и клиентов NIS изображена на рисунке 1.

Рисунок 1. Схема взаимодействия участников NIS
Схема взаимодействия участников NIS

Все изменения, происходящие в базе данных NIS, передаются на slave-серверы автоматически в момент наступления, либо вручную при помощи команды yppush.

Прямые изменения базы данных пользователями, например, при смене своих паролей, передаются непосредственно на основной NIS-сервер, который обновляет базу и передает все изменения вторичным серверам.
{mospagebreak}

Выбор между NIS и NIS+

Основное различие между службами NIS и NIS+ заключается в том, что NIS+ поддерживает аутентификацию и шифрование при обмене данными между основными и вторичными NIS-серверами. Тем не менее, из-за требований безопасности служба NIS+ существенно сложнее в настройке и обслуживании. Помимо этого NIS+ расширяет систему имен, помещая базы данных в древовидную структуру объектов, а не в один простой домен, тем самым позволяя организовывать более сложные и масштабные распределения.

Обычно для любой стандартной среды возможностей службы NIS оказывается достаточно, и при правильном конфигурировании не создается угрозы безопасности сети, имеющей выход в Интернет. Службу NIS+ следует использовать только в тех окружениях, в которых частные сети более уязвимы, например, в университетах или распределенных конфигурациях, когда данные NIS передаются через публичные сети.
{mospagebreak}

Настройка NIS-сервера

В системах Solaris, AIX® и HP-UX поддержка NIS включена по умолчанию. Дистрибутивы Linux® часто содержат NIS в качестве стандартного компонента, и библиотека glibc также включает в себя поддержку этой службы. Тем не менее, вы можете столкнуться с необходимостью установки дополнительного набора инструментов, необходимых для настройки и управления службой NIS. Для NIS-сервера под управлением Linux вам необходимо установить следующие пакеты:

  • ypserver
  • makedbm

После установки этих пакетов вам потребуется отредактировать поставляемый make-файл (как правило, /var/yp/Makefile). Этот файл содержит параметры конфигурации, которые будут использоваться для построения первоначальной базы данных YP. Вам будет необходимо отредактировать определение для правила all, перечислив все типы файлов, которые должны поддерживаться службой NIS. По умолчанию это правило включает поддержку всех файлов, как показано в листинге 1.

Листинг 1. Определение для правила all

                
all: passwd group hosts ipnodes ethers networks rpc services protocols
netgroup bootparams aliases publickey netid netmasks c2secure
timezone auto.master auto.home ageing
auth.attr exec.attr prof.attr user.attr audit.user

Вы можете удалить те файлы, с которыми вам не нужно работать – например, все файлы, за исключением passwd, group и hosts.

Теперь вы готовы к заполнению базы данных. Сначала задайте имя NIS-домена:

$ domainname mcslp.nis

На сервере под управлением Linux отредактируйте файлы /var/yp/securenets и /etc/ypserv.conf в соответствии с настройками ваших локальных сетей. Эти файлы определяют, какие компьютеры могут обмениваться информацией внутри вашего NIS-домена и получать доступ к ней.

Теперь выполните инициализацию базы данных:

$ ypinit -m

Команда ypinit выполняет за вас оставшуюся часть работы, используя make-файл для преобразования исходных файлов (например, /etc/passwd) в формат NIS.

При любом изменении содержимого исходных файлов перейдите в каталог /var/yp и повторно запустите команду make, чтобы выполнить перестроение баз данных:

$ cd /var/yp
$ make

Если вы хотите разрешить отдельным пользователям удаленно обновлять свои пароли входа в систему, убедитесь, что в системе запущен демон rpc.yppasswdd; он принимает клиентские запросы на прямое обновление базы данных NIS, при этом все изменения передаются через основной и дополнительные серверы NIS, и корректно принимаются всеми клиентскими компьютерами.

{mospagebreak}

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

Для настройки NIS-клиента вам необходимо задать имя NIS-домена, запустить локальные службы NIS, а затем выполнить инициализацию этих служб, чтобы они могли получать информацию с основного или вторичного сервера NIS. Для этих целей служит команда ypbind, которая присоединяет клиентские компьютеры к NIS-серверу.

В операционной системе UNIX NIS-сервер определяется автоматически при вызове команды ypbind. В большинстве версий Linux вы должны задать список доступных NIS-серверов в файле /etc/yp.conf. Например, вы можете сделать это следующим образом:

ypserver 192.168.0.22

Основной процесс подключения клиента к NIS-серверу выглядит следующим образом:

  1. Указание NIS-домена: $ domainname mcslp.nis.
  2. Запуск демона portmap (сервера преобразования программных номеров RPC), если он еще не запущен: $/sbin/portmap.
  3. Создание каталога /var/yp, который будет использоваться для хранения служебной информации NIS.
  4. Запуск ypbind: $ /usr/sbin/ypbind.

Теперь проверьте соединение с NIS-сервером, запустив команду ypcat для выполнения прямого запроса к базе данных. Например, чтобы получить отсортированный по имени снимок файла passwd, выполните следующую команду:

$ ypcat passwd.byname

Эта команда создаст дамп всей базы данных passwd. Теперь, прежде чем клиентские системы смогут использовать информацию базы данных NIS, вы должны перестроить источники данных, используемые для поиска.
{mospagebreak}

Файл nsswitch.conf

Как в Linux, так и в UNIX файл nsswitch.conf обычно используется для указания источников информации различного типа. Например, можно настроить систему на поиск данных о компьютерах с помощью DNS-запросов, в локальных файлах или с использованием службы NIS.

Помимо самих источников данных, в файле nsswitch.conf настраивается также и очередность их использования, которая может повлиять на выбор правильного источника, а также на способность восстановления вашей сети в случае возникновения каких-либо сбоев.

Форматом файла nsswitch.conf является список строк, состоящих из двух параметров: имя системной базы данных и соответствующий ей список источников данных, перечисленных в желаемом порядке использования. В листинге 2 приведен пример исходного файла nsswitch.conf; поиск информации производится в службах NIS и DNS, а также в локальных файлах.

Листинг 2. Исходные строки файла nsswitch.conf

                
passwd: nis files
shadow: nis files
group: nis files

hosts: nis dns files
networks: nis dns files

Из листинга 2 видно, что поиск информации для базы passwd производится в базе данных NIS (если эта служба доступна). При входе пользователя в систему в первую очередь будет происходить обращение к таблицам NIS. Если служба NIS не сможет найти в своих таблицах указанное имя пользователя и возвратит ошибку, система перейдет к поиску информации в следующем указанном источнике – в нашем случае, в локальных файлах.

Следующие советы помогут вам правильно настроить и использовать файл nsswitch.conf:

  • Поиск в локальных файлах всегда должен производиться в самую последнюю очередь; особенно это касается таких баз, как passwd, shadow и hosts. Если вы не настроите такую очередность, компьютер может оказаться неработоспособным, поскольку в случае отказа службы NIS даже пользователь root не сможет войти в систему.
  • Убедитесь, что в перечисленных источниках содержатся все важные учетные записи и данные о компьютерах, а также прочая ключевая информация.
  • Если компьютер подключен к Интернету, то более эффективным способом разрешения Интернет-имен будет являться использование службы DNS, а не функции перенаправления NIS.

Если вы будете следовать этим рекомендациям, вы исключите возможность оказаться заблокированными вашей собственной системой.
{mospagebreak}

Общий доступ к файлам через NFS

Сетевая файловая система (NFS) также была разработана компанией Sun Microsystems в качестве средства обмена файлами между различными компьютерами. Когда общий доступ к каталогу предоставлен с помощью NFS, вы можете монтировать этот каталог на другой машине так, как если бы он находился на ее локальном диске. Вся информация о безопасности, правах доступа к файлам и так далее реплицируется между NFS-клиентом и NFS-сервером. Поскольку для доступа к общим файлам NFS используются идентификаторы пользователей и групп, а также прочие сведения о пользователях, то удобнее всего передавать эту информацию через службу NIS.

В общем случае, прежде чем запускать NFS-сервер, вам нужно настроить общие каталоги. В ОС Linux для этого используется файл /etc/exports, в котором определяются общие каталоги, а также различные опции для этих каталогов (такие как права доступа). Например, чтобы предоставить общий доступ к каталогу /export/data только компьютерам вашей сети, вы можете использовать следующую строку:

/export/data *.mcslp.pri(rw,sync) *(sync)

Опция rw устанавливает права на чтение или запись для всех клиентских компьютеров вашей сети и доступ только на чтение, который является доступом по умолчанию, для всех других узлов. Опция sync обеспечивает синхронизацию данных файловой системы между удаленными точками монтирования и сервером.

Для предоставления общего доступа в системе Solaris используется файл /etc/dfs/dfstab, в котором вы указываете команды для каждого каталога. Например, вы можете предоставить общий доступ к каталогу /export/data с правами на чтение или запись для всех компьютеров с помощью следующей строки:

share -F nfs -o rw /export/data

Для предоставления общего доступа к каталогам в системе AIX используйте инструмент smit, а в системе HP-UX – инструмент SAM.

Во всех этих случаях после подготовки файлов и настройки необходимых параметров вы должны запустить службу NFS-сервера.

На клиентских компьютерах вам необходимо всего лишь запустить службу NFS-клиента. После этого вы можете монтировать файловую систему NFS при помощи команды mount, указывая через двоеточие имя сервера и полный путь к удаленному каталогу. Например:

$ mount bear:/export/data /mnt/data

Вы можете автоматически монтировать каталоги NFS во время загрузки компьютера с помощью файлов /etc/fstab или /etc/vfstab, использующими тот же самый формат строки. Однако для упрощения процесса монтирования и обеспечения наилучшей производительности вашего сервера лучше всего использовать систему автоматического монтирования.
{mospagebreak}

Использование системы автоматического монтирования

В качестве дополнительной возможности NFS вы можете задействовать систему автоматического монтирования. Этот компонент автоматически монтирует каталоги при обращении к ним. Например, если у вас настроено автоматическое монтирование NFS-каталога /mnt/data, он автоматически будет смонтирован и станет доступным в тот момент, когда вы наберете следующую команду:

$ cd /mnt/data

Когда каталог перестает использоваться, происходит его автоматическое размонтирование. Автомонтировщик становится особенно полезным при работе с домашними каталогами пользователей: пользователь может войти в систему на любой машине и получить доступ к своему домашнему каталогу, который будет автоматически смонтирован с удаленного NFS-сервера.

Использование автомонтировщика не только упрощает монтирование удаленных каталогов с NFS-сервера, но также помогает снизить нагрузку на сервер, избавляя от ненужных взаимодействий с клиентскими компьютерами, не использующими ресурсы NFS.

Функция автоматического монтирования включена в различные версии ОС UNIX. Если вы работаете в ОС Linux, то прежде чем настраивать и запускать автомонтировщик, вы должны сконфигурировать поддержку этой функции в ядре и перезагрузить компьютер. Для настройки автомонтировщика вы должны сначала отредактировать файл etc/auto.master (или /etc/autofs/auto.master) – так называемую главную карту автомонтировщика. В этом файле определены наборы сопоставлений верхнего уровня и указывается, какие карты и в каких файлах должны использоваться для каталогов верхнего уровня. Например, следующие строки сопоставляют каталоги /home и /mnt двум другим картам:

/home /etc/autofs/auto.home
/mnt /etc/autofs/auto.mnt

Затем в рамках карты каталога /mnt вы настраиваете его подкаталоги и соответствующие им NFS-ресурсы. В листинге 3 приведен фрагмент карты каталога mnt.

Листинг 3. Фрагмент карты каталога mnt

                
applications atuin:/Volumes/Shared1/Applications
archiveprepare atuin:/Volumes/Shared1/ArchivePrepare
backupprepare atuin:/Volumes/Shared1/BackupPrepare
build atuin:/Volumes/Shared1/Build
correspondence atuin:/Volumes/Shared1/Correspondence
devprojects atuin:/Volumes/Shared1/DevProjects
docarchive atuin:/Volumes/Shared1/DocArchive
incoming atuin:/Volumes/Shared1/Incoming
information atuin:/Volumes/Shared1/Information

Так как приведенный выше фрагмент является картой каталога /mnt, то при обращении пользователя к каталогу /mnt/applications автомонтировщик монтирует сопоставленный ему NFS-каталог, в нашем случае – atuin:/Volumes/Shared1/Applications.

При работе в UNIX вам также нужно будет запустить службу автомонтировщика. В большинстве версий UNIX эта служба называется automount или automountd, тогда как во многих версиях Linux она называется autofs и запускается следующим образом:

/etc/init.d/autofs start

{mospagebreak}

Синхронизация времени

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

Простейший способ выполнить синхронизацию – это использовать протокол сетевого времени (Network Time Protocol, NTP), который является встроенным либо дополнительно устанавливаемым компонентом большинства систем Linux, и все больше и больше используется в системах UNIX.

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

Если вы используете службу NIS, настройте основной NIS-сервер в качестве источника для синхронизации остальных компьютеров в сети. Сервер можно настроить как на использование собственных встроенных часов, так и на получение времени от одного из многих публичных серверов (при наличии подключения к Интернету). Например, такую услугу предоставляет мой Интернет-провайдер, и файл конфигурации моего основного NIS-сервера /etc/ntp.conf содержит имя NTP-сервера моего Интернет-провайдера:

server ntp0.zen.co.uk minpoll 12 maxpoll 17

Затем на каждом NIS-сервере и NIS-клиенте сети используется одинаковый файл /etc/ntp.conf, настроенный на получение информации о времени от основного NIS-сервера:

server atuin.mcslp.pri minpoll 12 maxpoll 17

После того, как обе системы настроены, запустите демон NTP на основном NIS-сервере, выполнив следующую команду:

/etc/init.d/ntp start

Повторите этот процесс на каждом вторичном NIS-сервере и на каждом NIS-клиенте.
{mospagebreak}

Заключение

Совместный доступ к данным существенно упрощает процесс интеграции ваших UNIX и Linux систем. Если вы обеспечите совместный доступ к учетным данным, а также к другой пользовательской информации, ваши пользователи смогут входить в систему и работать на машинах UNIX и Linux, не задумываясь о необходимости запоминать несколько разных паролей. Настроив совместное использование данного функционала с функционалом NFS, вы можете предоставлять пользователям общий доступ к файлам. Если при этом вы используете автоматическое монтирование домашних каталогов, то независимо от операционной системы или компьютеров, за которыми работают пользователи, они смогут использовать свои файлы и ресурсы так, будто эти файлы расположены на локальном диске.

По материалам сайта ibm.com/developerworks/ru

 

 

 

 

 

 

Оставьте комментарий