Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Использование карт passwd и group

Одна из главных прикладных программ NIS синхронизирует данные пользователя на всех машинах в домене NIS. Следовательно, Вы обычно храните только маленький локальный файл /etc/passwd, к которому добавляется информация из карт NIS. Однако, просто поиска NIS для этого сервиса в nsswitch.conf мало.

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

Если любой из числовых идентификаторов в /etc/passwd или /etc/group отличается от своего значения в картах, надо исправлять ситуацию с правами доступа. Сначала Вы должны изменить все uid и gid в файлах passwd и group на новые значения, затем поменять владельцев у объектов, принадлежащих пользователям, идентификаторы которых Вы сменили. Допустим, news имеет идентификатор 9, а okir имел идентификатор (user ID) 103, но теперь он сменился на что-то другое. Скомандуйте от имени root:
# find / -uid 9 -print >/tmp/uid.9
# find / -uid 103 -print >/tmp/uid.103
# cat /tmp/uid.9 | xargs chown news
# cat /tmp/uid.103 | xargs chown okir

Важно выполнить эти команды при установленном новом файле passwd, и собрать все имена файлов перед сменой их владельца. Чтобы модифицировать группу владельца, используйте подобный метод с gid вместо uid и chgrp вместо chown.

Теперь числовые идентификаторы на Вашей машине приведены в соответствие с остальной сетью. Следующим шагом надо добавить строки в nsswitch.conf, которые поиск через NIS данных о пользователе и группе:
# /etc/nsswitch.conf - passwd and group treatment
passwd: nis files
group: nis files

Это воздействует на команду login и все остальные, которые собирают данные о пользователе. Когда пользователь пробует войти, login сначала запрашивает карту NIS, и в случае провала идет обратно к локальным файлам. Обычно Вы удаляете почти всех пользователей из локальных файлов и оставляете входы только для root и универсальные логины, подобно mail. Это потому, что некоторым жизненным задачам системы, вероятно, придется отображать uid к именам. Например, административные работы cron могут выполнить команду su, чтобы временно стать пользователем news, или подсистема UUCP может послать отчет о состоянии. Если news и uucp не имеют записей в локальном файле passwd, эти работы будут терпеть неудачу.

Наконец, если Вы используете любую старую реализацию NIS (поддерживаются режимом compat для файлов passwd и group в реализациях NYS или glibc), Вы должны вставить специальные записи. Они представляют, где полученные записи NIS будут вставлены в базу данных информации. Они могут добавляться в любом месте, но обычно добавляются только к концу. Записи для добавления к файлу /etc/passwd:
+::::::
и для добавления к файлу /etc/groups:
+:::
В glibc 2.x и NYS Вы можете отменять параметры в пользовательских записях, полученных от сервера NIS созданием записей со знаком "+" перед именем пользователя и исключать указанных пользователей добавлением перед их именами знака "-". Например, записи:
+stuart::::::/bin/jacl
-jedd::::::
переопределят оболочку для пользователя stuart, заданную сервером, и запретят пользователю jedd регистрацию на данной машине вообще. Пустые поля используют информацию с сервера NIS.

Еть две проблемы. Во-первых, приведенная здесь настройка не использует затенение паролей, а стоило бы. Сложность использования теневых паролей с NIS обсуждается ниже. Во-вторых, команда login не единственная, которой нужен файл passwd: есть часто используемая команда ls. При построении широкого вывода она отображает имена владельца файла и его группы. Значит, для каждого uid и gid будет послан запрос на сервер NIS. Это снижает производительность.

Но представим, что пользователь решил сменить пароль. Обычно он вызывает команду passwd, которая читает новый пароль и обновляет локальный файл passwd. Это невозможно с NIS, так как этот файл больше не доступен локально. NIS обеспечивает замену passwd по имени yppasswd, которая обрабатывает смену пароля через NIS. Для изменения пароля на сервере эта утилита связывается с yppasswdd daemon на сервере по RPC и передает ему требуемую информацию. Обычно Вы устанавливаете yppasswd вместо нормальной программы:
# cd /bin
# mv passwd passwd.old
# ln yppasswd passwd

В то же самое время, Вы должны установить rpc.yppasswdd на сервере и запускать его из скрипта для инициализации сети.