NISクライアントではローカルの/etc/passwd
(ユーザ情報)、/etc/group
(グループ情報)などの情報は意味を持たなくなる。これらに相当する情報を得るためのコマンド一覧はypcat -x
で得られる。
【書式】NIS情報関係コマンド一覧表示 ypcat -x ypcat passwd
NISクライアントでユーザパスワードを変更するには、ローカルユーザパスワードを変更するpasswd
の代わりにyppasswd
コマンドを用いる。
【書式】NISデータベースのパスワード、ログインシェル、GECOS フィールドのいずれかを変更する yppasswd オプション ユーザ名
オプション指定がない場合、-p
が既定のオプションとして処理される。ユーザ名を省略するとyppasswd
コマンドを起動したユーザのアカウントが対象となる。なおユーザ名を指定して他のユーザの情報を変更できるのはスーパーユーザーのみである。
yppasswd -f
、yppasswd -l
はそれぞれypchfn
、ypchsh
と同等。
yppasswd -f
ypchfn
[user@server ~]$ ypchfn To accept the default, simply press return. To enter an empty field, type the word "none". Name [Taro User]: Location [4th floor, bldg 123]: Office Phone []: Home Phone []:NISを使用していない場合はローカルのユーザ情報を変更する
chfn
を用いる。
yppasswd -l
ypsh
chsh
を用いる。
-p
既定の設定では、chsh
(ログインシェルの設定)、chfn
のNIS版であるypchsh
、ypchfn
は有効になっていない。有効にするには/etc/sysconfig/network
ファイルに以下の情報を追記する。
【例】ypchsh、ypchfn共に使えるようにする YPPASSWDD_ARGS="-e chsh -e chfn"
NISサーバ上でユーザの追加・編集・削除を行った後、各NISクライアントへユーザ情報を反映させる。
【例】ユーザの追加(要管理者権限) [root@nissv ~]# useradd newuser ※パスが /usr/sbin に通っていない場合はフルパスでコマンド指定 [root@nissv ~]# cd /var/yp [root@nissv ~]# make gmake[1]: ディレクトリ `/var/yp/mynis' に入ります Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating netid.byname... gmake[1]: ディレクトリ `/var/yp/mynis' から出ます
大まかに言うと、ypservをインストールし、各種設定を行った上でypinit -m
を実行すれば良い[5]。
以下、CentOS 6の場合の例。
[root@nissv ~]# yum install ypserv
/var/yp/Makefile の内容を確認し、必要に応じ修正する。Makefileの設定詳細は以下の通り。
項目 | 内容 | 既定値 | 例 |
---|---|---|---|
NOPUSH | trueに設定するとNISスレーブサーバに対するNIS情報(マップ)の送信は行われない。NISサーバが単一の場合はtrueでよい。スレーブサーバがいる場合は /var/yp/ypservers にスレーブサーバを記載した上で、この値をfalseに変更する。 | true | NOPUSH=false |
MINUID | NISクライアントに通知するユーザのuid最小値 | 500 | MINUID=100 |
MINGID | NISクライアントに通知するグループのgid最小値 | 500 | MINGID=100 |
all: | NISクライアントに通知する情報種別の指定 | asswd group hosts rpc services netid protocols mail | all: passwd group hosts rpc services netid protocols mail |
一時的には ypdomainname コマンドまたは nisdomainname コマンドで設定できる(両コマンドは機能としては同じ?)
# 現在の設定値を表示 $ ypdomainame mynis # 設定値を変更 $ ypdomainame NISドメイン名
OS再起動後も恒久的に設定を有効とするにはネットワーク設定に記述しておく。
$ cat /etc/sysconfig/network ... NISDOMAIN="mynis" ...
接続を許可するNISクライアントのネットワーク範囲を設定する。設定は /var/yp/securenets に記載する。このファイルが存在しなければ全てのネットワークからの接続を受け付ける(iptablesなど他のしくみでypservサービスに届く前にブロックされたりしない限り)。以下に securenets の例を示す[4]。
# ローカルホストからの接続は全て許可する。これは必要 host 127.0.0.1 # 131.234.223.0 ネットワークにいるあらゆるホストからの接続を許可する 255.255.255.0 131.234.223.0 # 131.234.214.0 から 131.234.215.255 の範囲にいるあらゆるホストからの接続を許可する 255.255.254.0 131.234.214.0
NISサーバを他から移行する場合は、あらかじめ認証情報をローカルにコピーしておく。
[root@nissv ~]# cp -p /etc/passwd /etc/passwd.bak [root@nissv ~]# cp -p /etc/shadow /etc/shadow.bak [root@nissv ~]# cp -p /etc/group /etc/group.bak [root@nissv ~]# cp -p /etc/gshadow /etc/gshadow.bak [root@nissv ~]# scp root@oldnissv:/etc/{passwd,shadow,group,gshadow} .
必要に応じ、chkconfigの設定でOS起動時にypservが自動起動するよう設定する。
[root@nissv ~]# service ypserv start YP サーバーサービスを起動中: [ OK ] [root@nissv ~]# chkconfig --list ypserv ypserv 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@nissv ~]# chkconfig ypserv on [root@nissv ~]# chkconfig --list ypserv ypserv 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@nissv ~]# cd /usr/lib64/yp [root@nissv yp]# ./ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. nissv is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: nissv next host to add: nissv2 next host to add: (Ctrl + D) The current list of NIS servers looks like this: nissv nissv2 Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/mynis/ypservers... Running /var/yp/Makefile... gmake[1]: ディレクトリ `/var/yp/mynis' に入ります Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: ディレクトリ `/var/yp/mynis' から出ます nissv has been set up as a NIS master server. Now you can run ypinit -s nissv on all slave server.
NISサーバの各種設定は /var/yp/Makefile
に記載する。
RHEL/CentOSにおける、NISスレーブサーバの追加方法。
ypbindとypservがインストールされていなかったらyumコマンドなどを使ってインストールしておく。
これからNISスレーブサーバに設定するサーバを、まずはNISクライアントに設定し、問題なくNISサーバと通信できていることを確認する。
[root@nisslave ~]# nisdomainname mynisworldあとは
/etc/nsswitch.conf
の内容チェック。
NIS データーベースの作成とインストールを行うプログラムypinitを使って行う。
【例】 [root@nisserver ~]# cd /usr/lib64/yp [root@nisserver ~]# ./ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. nisserver is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: nisserver next host to add:nisslave next host to add:(Ctrl + D) The current list of NIS servers looks like this: nisserver nisslave Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/pdbj_nis/ypservers... Running /var/yp/Makefile... gmake[1]: ディレクトリ `/var/yp/pdbj_nis' に入ります Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: ディレクトリ `/var/yp/pdbj_nis' から出ます nisserver has been set up as a NIS master server. Now you can run ypinit -s nisserver on all slave server.
[root@nisslave ~]# cd /usr/lib64/yp [root@nisslave ~]# ./ypinit -s nisserver We will need a few minutes to copy the data from nisserver. Transferring hosts.byaddr... Trying ypxfrd ... not running Transferring rpc.byname... Trying ypxfrd ... not running Transferring hosts.byname... Trying ypxfrd ... not running Transferring ypservers... Trying ypxfrd ... not running Transferring protocols.byname... Trying ypxfrd ... not running Transferring netid.byname... Trying ypxfrd ... not running Transferring rpc.bynumber... Trying ypxfrd ... not running Transferring protocols.bynumber... Trying ypxfrd ... not running Transferring group.byname... Trying ypxfrd ... not running Transferring passwd.byname... Trying ypxfrd ... not running Transferring passwd.byuid... Trying ypxfrd ... not running Transferring services.byname... Trying ypxfrd ... not running Transferring group.bygid... Trying ypxfrd ... not running Transferring services.byservicename... Trying ypxfrd ... not running Transferring mail.aliases... Trying ypxfrd ... not running nisserver's NIS data base has been set up. If there were warnings, please figure out what went wrong, and fix it. At this point, make sure that /etc/passwd and /etc/group have been edited so that when the NIS is activated, the data bases you have just created will be used, instead of the /etc ASCII files. # ypserv の自動起動をONにする [root@nisslave ~]# chkconfig ypserv on # 最初は手動で ypserv を起動 [root@nisslave ~]# service ypserv start YP サーバーサービスを起動中: [ OK ] # ypbind 再起動 [root@nisslave ~]# service ypbind restart NIS サービスを停止中: [ OK ] NIS ドメインにバインド中: [ OK ] NIS ドメインサーバーを検索中
[root@nisclient ~]# vi /etc/yp.conf ... domain mynisworld server nisserver ↓ #domain mynisworld server nisserver domain mynisworld server nisslave # ypbind 再起動 [root@nisclient ~]# service ypbind restart NIS サービスを停止中: [ OK ] NIS ドメインにバインド中: [ OK ] NIS ドメインサーバーを検索中 # 参照先NISサーバ確認 [root@nisclient ~]# ypwhich nisserver # ユーザ情報一覧確認 [root@nisclient ~]# ypcat passwd ...(ユーザ情報一覧) # 特定ユーザ情報確認 [root@nisclient ~]# id user uid=500(user) gid=500(user) 所属グループ=1000(workgroup),5000(user)
[root@nisclient ~]# vi /etc/yp.conf ... domain mynisworld server nisserver domain mynisworld server nisslave ←追記 # ypbind 再起動 [root@nisclient ~]# service ypbind restart NIS サービスを停止中: [ OK ] NIS ドメインにバインド中: [ OK ] NIS ドメインサーバーを検索中
[3]
NISマスタサーバおよびスレーブサーバの設定を行う。
コマンドのパスは /usr/lib/yp
(32ビット環境)または /usr/lib64/yp
(64ビット環境)。
【書式】
ypinit オプション
-m
-s マスターサーバホスト名
事例はNISスレーブサーバの設定「2. マスター側にて、スレーブサーバの指定を行う」「3. スレーブサーバの設定」参照のこと
【例】 $ ypwhich nisserver1
NISサーバのホスト名での指定が、NISクライアントの/etc/yp.conf
と、NISサーバの/var/yp/ypservers
で違っていると、ypcat passwd
など実行したときに表題のエラーが出ていた。