Назад | Перейти на главную страницу

Как создать собственную карту NIS?

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

Во-первых, редактировать /var/yp/Makefile добавить на новую карту. У вас наверняка получилось что-то вроде этого:

PASSWD = $(YPPWDDIR)/passwd

Нам нужно добавить новую строку для новой карты. Это будет новая карта имен пользователей, поэтому назовите ее usermap.

USERMAP = $(YPSRCDIR)/usermap

YPSRCDIR является /etc в моем случае, но, очевидно, выбирайте тот путь, который вам больше всего подходит.

Теперь найдите строку, которая начинается all:. Это список карт, которые нужно обновить. Добавьте новую карту в конец, чтобы она выглядела как

all: auto.home auto.master group hosts netgrp passwd usermap

Ниже, где есть группа таких строк:

passwd:         passwd.byname passwd.byuid

вы должны добавить на свою карту:

usermap : usermap.byname

В byname Часть - это индикатор того, что такое ключ карты, и для нас это не так важно.

Теперь вам нужно добавить раздел, чтобы сообщить make-файлу, как обновлять вашу карту:

usermap.byname: $(USERMAP) $(YPDIR)/Makefile
        @echo "Updating $@..."
        @$(AWK) -F: '!/^[-+#]/ { if ($$1 != "" && $$2 != "" ) \
                print $$1"\t"$$2 }' $(USERMAP) \
                | $(DBLOAD) -i $(USERMAP) -o $(YPMAPDIR)/$@ - $@
        -@$(NOPUSH) || $(YPPUSH) -d $(DOMAIN) $@

Это обрабатывает файл /etc/usermap и генерирует файл карты. По сути, вам просто нужно распечатать key\tvalue в $(DBLOAD) …. В этом примере данные из файла извлекаются в предположении, что они имеют формат key:value.

Теперь редактировать /var/yp/nicknames чтобы добавить новую карту:

usermap    usermap.byname

затем беги make в /var/yp как обычно.

Если у вас есть подчиненный сервер, у вас, вероятно, будет тайм-аут с новой картой на этом этапе. Чтобы обойти это, вам нужно запустить ypxfr на ведомом, чтобы сначала получить карту:

/usr/lib/yp/ypxfr -d <yp domain> -h <yp master host> usermap.byname