如何创建自定义 NIS 地图?

如何创建自定义 NIS 地图?

我想创建一个自定义 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

相关内容