Настройка карт паролей и групп в NIS

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

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

Пример конфигурации nsswitch.conf:

# /etc/nsswitch.conf
hosts: nis dns [NOTFOUND=return] files
networks: nis [NOTFOUND=return] files
services: files nis
protocols: files nis
rpc: files nis

Если числовые идентификаторы в /etc/passwd или /etc/group не соответствуют данным в NIS картах, необходимо корректировать владельца всех файлов, принадлежащих этому пользователю. Сначала обновите идентификаторы в passwd и group, а затем найдите и обновите соответствующие файлы.

После синхронизации идентификаторов добавьте строки в nsswitch.conf, чтобы включить поиск через NIS для информации о пользователях и группах:

# /etc/nsswitch.conf - обработка passwd и group
passwd: nis files
group: nis files

Такая конфигурация гарантирует, что при попытке входа в систему будет произведен запрос к NIS картам, и только в случае неудачи - к локальным файлам. В большинстве случаев рекомендуется убрать большинство пользователей из локального файла и оставить только ключевые записи, такие как root.

Однако стоит учесть, что данная настройка корректно работает только с программами, не использующими теневые пароли. Кроме того, не только команды входа в систему обращаются к файлу passwd. Например, команда ls, которую часто используют, также делает это.

Настройка команды ls и изменение паролей в NIS

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

Теперь рассмотрим ситуацию изменения пароля. В стандартной среде пользователь бы вызвал команду passwd, которая бы обновила локальный файл паролей. Однако в среде NIS это не так просто, так как локальный файл может быть недоступен. Если пользователи подключены к NIS серверу и решат изменить свой пароль, стандартной командой это сделать не получится. Вместо этого NIS предлагает альтернативный инструмент под названием yppasswd. Этот инструмент работает аналогично команде passwd, но в контексте NIS. Для изменения пароля на сервере yppasswd обращается к демону yppasswd на сервере через RPC и передает ему информацию о новом пароле.

Для использования yppasswd вместо стандартной команды passwd, вы можете выполнить следующие действия:

# cd /bin
# mv passwd passwd.old
# ln yppasswd passwd

Параллельно с этим необходимо установить и запустить демон rpc.yppasswdd на сервере, например, из скрипта инициализации rc.inet2. Это гарантирует корректную работу смены паролей в среде NIS для всех ваших пользователей.