ypmatch
を使用して自分の情報を検索し、ローカルユーザー名と集中ユーザー名の間でマップできるように、カスタムNISマップを作成したいと思います。これはどのように達成できますか?
まず、_/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
_
次に、通常どおり_/var/yp
_でmake
を実行します。
スレーブサーバーがある場合は、この時点で新しいマップでタイムアウトになる可能性があります。これを回避するには、スレーブでypxfr
を実行して、最初にマップを取得する必要があります。
_/usr/lib/yp/ypxfr -d <yp domain> -h <yp master Host> usermap.byname
_