計算機群のNISによるユーザ管理
研究室に計算機が増えてきたのと、利用するユーザが増えてきたため一括してユーザ管理できるようにしたいと思います。そこで、NISを使ったユーザ管理環境を構築することにします。環境・状況・目的は以下のとおり。
幸いなことに、怠惰な管理人により全ての計算機(とサーバ)がVineLinux2.5(or6)で統一されているため、各計算機ごとの環境に大きな違いがありませんでしたが、そうでなくても基本的に大きく作業手順が異なることは無いでしょう。
さて、各計算機は既にIPmasqueradeによってネットワーク接続されており、それぞれ固有のプライベートアドレスとマシン名を持っています。gateway下の計算機群は、キーボード・マウス・モニタを取り払ってサーバからしかアクセスできなくしてあるので、今回はそのサーバにNISサーバも兼任させます。
passwd/shellの変更についてはgatewayがNISを兼任しているので、NISサーバ上で変更してもらうことにして、今回はyppasswdはサービスしません。fingerは元々全てのマシンでサービスしていません。
基本的な作業の流れとしては、
という流れになります。今回はこちらのサイトを見ながら、ほぼ書いてあるそのままの手順で作業しました。少し変わっているのは、クライアントごとにローカルなホームディレクトリを確保している点ですが、その方法についてはユーザの追加・計算機の追加で解説しています。
という流れになります。
Vine2.5においては既に起動していましたが、まずは、portmapが起動しているか確認し、動いていなければ起動します。
[確認] $ rpcinfo -p [起動していれば以下のように出力されます] 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper [起動してなければ以下を実行] $ service portmap start |
次にNISドメイン名を決めて、その設定と確認。設定したら再起動後も自動設定されるようにします。NIS関係のパッケージがインストールされてなければ、apt-get installなどを利用してypserv,ypbind,yp-toolsを適宜インストールしておきます。
[設定] $ ypdomainname NISドメイン名 [確認] $ ypdomainname NISドメイン名 |
それがすんだら、NISサーバを起動して、NISデータベースを作成します。ユーザを追加した都度、NISデータベースは作成しなおします。
$ service ypserv start Starting YP server services: [ OK ] [起動できたらNISデータベースの作成] $ /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. kohaku.biology.tohoku.ac.jp 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 |
NISクライアントのセットアップ
NISクライアント構築の手順は、
という流れになります。
portmapperの起動はNISサーバの設定のときとまったく同じです。
NISサーバで決めたNISドメイン名の設定と確認。設定したら再起動後も自動設定されるようにします。NIS関係のパッケージがインストールされてなければ、apt-get installなどを利用してypbind,yp-toolsを適宜インストールしておきます。
[設定] $ ypdomainname NISドメイン名 [確認] $ ypdomainname NISドメイン名 [確認できたら/etc/sysconfig/network に以下の行を追加] NISDOMAIN="NISドメイン名" |
NISサーバのIPアドレスを設定しなかった場合、ブロードキャストで拾いに行きますが、サーバのIPアドレスが決まっているなら指定しておきます。またホスト名の解決にNISを利用するなら、解決順番の指定をします。
[/etc/yp.conf に以下の行を追加] ypserver NISサーバのIPアドレス [/etc/host.conf の書き換え] order nis,hosts,bind [/etc/nsswitch.conf の書き換え] passwd: db files nisplus nis shadow: db files nisplus nis group: db files nisplus nis #passwd: files #shadow: files #group: files hosts: db files nisplus nis dns #hosts: files dns |
設定が終わったらypbindを起動します。再起動後に自動で起動するための設定もしておきます。
[起動] $ service ypbind start [確認] $ ypcat passwd order NISサーバのパスワードの一覧が参照できればOK。 [自動起動の設定 (runlevel=3で起動するとき)] $ ln -s /etc/init.d/ypbind /etc/rc3.d/S96ypbind |
NISのユーザ追加の手順は、
NISサーバ上でadduserしてユーザを追加したあとは、NISサーバ構築と同じ手順でNISデータベースの更新を行います。
$ cd /var/yp
$ make
|
NISクライアント上にホームディレクトリを作成する際には、ローカルに同名のユーザやグループが登録されていないことに注意が必要です。NISサーバとクライアントでUID/GIDがずれていると、ファイルへのアクセス違反等のトラブルが生じます。クライアント上に同名のユーザ/グループが存在するときには、クライアントの/etc/passwdや/etc/groupから該当するエントリを削除しておきます。
NISクライアント上にホームディレクトリを作成した後、NISサーバに登録されているUID:GIDに所有権を変更する必要があります。そのため、かならずypbindが起動していなければなりません。全計算機に対して処理するので、以下のようなスクリプトを利用してやると作業が効率化できるでしょう。
#!/usr/bin/perl # # 計算機全部にユーザのホームディレクトリの作成(mknishome.pl) if(@ARGV != 1) { die print "ユーザ名を引数に指定\n\n"; } else { $USR = @ARGV[0]; } # 計算機リスト @IPS = ( "計算機1", "計算機2" ); # 各マシンに実行 # foreach (@IPS){ system("echo [ $_ ]; ssh -l sudoが利用できるユーザ $_ \" sudo cp -ru /etc/skel /home/$USR; sudo chown -R $USR:$USR /home/$USR/ \" ; "); } #End of Script [実行] $ ./mknishome.pl ユーザ名 |
計算機の追加(NISクライアントの追加)
NISの計算機の追加手順は、
NISクライアントのセットアップは上記「NISクライアントの設定」を参照してください。
ユーザの追加のときと同様に、NISクライアント上にホームディレクトリを作成した後、NISサーバに登録されているUID:GIDに所有権を変更する必要があります。そのため、かならずypbindが起動していなければなりません。全ユーザに対して処理するので、以下のようなスクリプトを利用してやると作業が効率化できるでしょう。
#!/usr/bin/perl # # 計算機全部にユーザのホームディレクトリの作成(mknishome.pl) if(@ARGV != 1) { die print "計算機名を引数に指定\n\n"; } else { $MACHINE = @ARGV[0]; } # 計算機リスト @USR = ( "ユーザ1", "ユーザ2" ); # 全ユーザを追加 # foreach (@USR){ system("echo [ $_ ]; ssh -l sudoが利用できるユーザ $MACHINE \" sudo cp -ru /etc/skel /home/$_; sudo chown -R $_\:$_ /home/$_/ \" ; "); } #End of Script [実行] $ ./mknishome.pl 計算機名 |