我想创建一个自定义 NIS 映射,以便能够使用ypmatch
本地用户名和集中用户名之间的映射来查找我自己的信息。如何实现?
答案1
首先,编辑/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
部分指示了地图键是什么,对我们来说并不那么重要。
现在您需要添加一个部分来告诉 makefile 如何更新您的地图:
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