Говоря о данном способе синхронизации идентификаторов, важно заметить, что имена пользователя на клиентской машине и на сервере не обязательно должны совпадать. Например, один и тот же пользователь может иметь имя abrownна сервере и имя alyson— на клиентском компьютере. Когда этот пользователь, работая в клиентской системе, обращается к серверу, считается, что файлы на сервере принадлежат пользователю alyson. Если тот же пользователь зарегистрируется на сервере NFS, система сообщит, что владельцем файлов является abrown. Первоначально такая особенность затрудняет администрирование системы, но в некоторых ситуациях она может оказаться полезной.
Обеспечить синхронизацию UID и GID можно, используя отдельный сервер для аутентификации пользователей как на клиентских компьютерах, так и на сервере NFS. В этом случае пользователь получит один и тот же UID, независимо от компьютера, на котором он зарегистрируется, а конкретной группе будет соответствовать единственный GID. В качестве такого средства аутентификации можно использовать систему Kerberos, которая была рассмотрена в главе 6. Кроме того, реализация NFS для Linux включает поддержку аутентификации NIS; для этой цели используется опция map_nis. Если вы включите эту опцию в файл /etc/exportsдля некоторого клиента, сервер NFS предоставит серверу NIS выполнить отображение пользовательского имени.
Средства синхронизации идентификаторов пользователей, выполняемые на стороне сервера
Предположим, что вы занимаетесь администрированием сети, состоящей из двух компьютеров. На каждом узле этой сети существуют учетные записи для пользователей, перечисленных в табл. 8.1. В данном примере компьютер gingkoвыполняет функции сервера, а компьютер larchвыступает в роли клиента. Только у одного из пользователей ( james) идентификаторы на обоих компьютерах совпадают. Чтобы пользователь jamesмог обращаться к своим собственным файлам, никакие специальные меры не требуются. Работая на компьютере larch, alysonобнаружит, что его файлы, хранящиеся на gingko, принадлежат пользователю, идентифицировать которого невозможно (UID, равный 500, на компьютере larchотсутствует). Что касается остальных двух пользователей, Jennieи samuel, система сообщит, что каждый из них является владельцем файлов, принадлежащих на самом деле другому.
Один из способов решения проблемы синхронизации пользовательских идентификаторов состоит в следующем. На сервере NFS создается файл соответствия идентификаторов, содержащий информацию, подобную приведенной в табл 8.1. О наличии этого файла сервер оповещается посредством опции map_static; в качестве значения опции задается имя файла соответствия идентификаторов. В файл /etc/exportsвключается запись, которая может выглядеть следующим образом:
/home larch(rw,map_static=/etc/nfs/larch-map)
Таблица 8.1. Идентификаторы пользователей на двух компьютерах
| Пользователь |
UID на gingko |
UID на larch |
| alyson |
500 |
504 |
| james |
501 |
501 |
| Jennie |
502 |
503 |
| samuel |
503 |
502 |
Эта запись сообщает системе о том, что, предоставляя каталог /homeпользователю larch, надо использовать файл соответствия идентификаторов с именем /etc/nfs/larch-map. Поскольку опция map_staticвходит в состав списка опций для конкретного клиента, вы можете назначать разным клиентам различные файлы соответствия. Пример содержимого файла larch-mapпоказан в листинге 8.2. Строки, в начале которых находится символ #, содержат комментарии. Строки, начинающиеся с uid, представляют информацию о соответствии пользовательских идентификаторов, а строки, в начале которых расположено ключевое слово gid, содержат сведения о соответствии идентификаторов групп. Первое из числовых значений (или диапазон значений) в строке представляет идентификатор на клиентской машине. Второе числовое значение соответствует идентификатору, в который должен отображаться UID или GID, полученный на удаленном компьютере. Например, из листинга 8.2 видно, что UID 504 на клиентском компьютере отображается в UID 500 на сервере. Если вместо идентификатора на сервере указан символ -, обращение данного пользователя или члена группы к серверу NFS запрещен. Такое обращение интерпретируется как попытка доступа анонимного пользователя.
Листинг 8.2. Пример содержимого файла соответствия идентификаторов
Читать дальше