Я хотел бы создать собственную карту 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