web-dev-qa-db-ja.com

カスタムNISマップを作成するにはどうすればよいですか?

ypmatchを使用して自分の情報を検索し、ローカルユーザー名と集中ユーザー名の間でマップできるように、カスタムNISマップを作成したいと思います。これはどのように達成できますか?

1
ralight

まず、_/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
_
1
ralight