NIS 設定まとめ (RHEL/CentOS/Ubuntu編)
NISの設定方法をメモっておきます。
最初に RHEL/CentOS での方法を記載し、最後に Ubuntu の場合の差分を記載します。
RHEL/CentOS編
CentOS 6.3でやってみました。
NISに関連するパッケージは以下です。
- ypserv : NISサーバ
- ypbind : NISクライアントとNISドメインをバインドするデーモン
- yp-tools: NISクライアントプログラム集
ypbind と yp-tools はデフォルトで入っているはず。 ypserv はサーバー側にだけ必要になります。
NISサーバー側の設定
# yum install ypserv
でインストールします。
/etc/sysconfig/network
に以下のようにNISドメイン名を追加する。NISドメイン名はとりあえずサーバーとクライアントで共通であればよいです。普通、ホスト名のドットより後ろの部分を使います。
NISDOMAIN=<NISドメイン名>
ypserv サービスを起動しておく。
/var/yp/Makefile
の all:
ターゲットの部分を見ればどのマップ(=NISで管理されるファイル)が作成されるかがわかります。
とりあえずデフォルトのままでOKです。
NISデータベースを初期化します。
32bit OSなら
# /usr/lib/yp/ypinit -m
64bit OSなら
# /usr/lib64/yp/ypinit -m
を実行する。
NISクライアント側の設定
RHEL/CentOS なら ypbind と yp-tools はデフォルトで入っているので、特にインストールするものはなし。
/etc/yp.conf
に以下のような設定を記載する
domain <NISドメイン名> server <NISサーバー名>
/etc/nsswitch.conf
を開き
passwd: files
shadow: files
group: files
のようになっているところを
passwd: nis files
shadow: nis files
group: nis files
のように書きかえます。
これで、passwd
, shadow
, group
は NIS ⇒ ローカルファイルの順番に見にいってくれるようになります。
/etc/nsswitch.conf
の設定を間違えると最悪起動しなくなるので、ご注意ください。(files
を file
と書き間違えて、起動しなくなった経験あり)。
もし起動しなくなった場合、KNOPPIX とかで起動して、ハードディスクをマウントし、 /etc/nsswitch.conf
を正しく修正するのが手っ取り早いと思います。
そして ypbind のサービスを起動する。
# ypwhich
を実行し、でNISサーバーとバインドできているのを確認できればOKです。
ちゃんと動いていれば
# ypcat passwd
とすることでマップの中身が読めるはず。
ユーザー認証を NISで管理できても、ホームディレクトリが作られていなかったら、まともにログインできません。したがって、NIS単独で使うことはあまりなくて、NIS と NFS (さらには autofsも)と組み合わせるのが通常の運用形態だと思います。
NFSのセットアップ方法は次回まとめます。
最後に yppasswd
コマンドでNIS経由でパスワード変更できるようにします。
NISサーバー側で yppasswdd
サービスを起動させておきます。すると、NISクライアント側は yppasswd
コマンドでパスワード変更できるようになります。
ちゃんと設定したつもりなのに、最初は
$ yppasswd
とすると
yppasswd: yppasswdd not running on NIS master host ("localhost.localdomain")
というエラーメッセージが出てうまくいきませんでした。
しばらく考えて、エラーの意味がわかった。
NISサーバーもNISクライアントもホスト名が localhost.localdomain
になっていて、混同されていたようです。
CentOS6.3 はインストーラーがバグっているみたいで、インストール時にホスト名に何を入力しても、結局 localhost.localdomain
になってしまう。
(RHELのインストーラーは大丈夫です。)
で、そのままほったらかしにして、サーバー側もクライアント側も localhost.localdomain
でかぶっていると yppasswd
が動きません。
ホスト名は /etc/sysconfig/network
で
HOSTNAME=<ホスト名>
で設定できるので、ここで NISサーバーとNISクライアントに別々の名前をつけてあげましょう。
例えば、 HOSTNAME=my.nisserver
というホスト名にしたとする。
そして、もう一回
# /usr/lib/yp/ypinit -m
としてあげると
next host to add: my.nisserver
next host to add:
のように 今つけた、NIS サーバー名が入っている。
そして、クライアント側の /etc/hosts
に
192.168.11.5 my.nisserver
のように NIS サーバーのIPアドレスとの対応を書いておけば yppasswd
がうまくいきます。
以上が、RHEL/CentOSの場合のやり方です。
Ubuntu編
Ubuntu 12.04LTS でのやり方も簡単にまとめておきます。
Ubuntu の場合、サーバーもクライアントも
$ sudo apt-get install nis
でインストールします。
インストール途中で NISドメインを聞かれると思いますので適当なドメイン名を入れます。
このNISドメイン名は /etc/defaultdomain
に書き込まれます。
NISサーバー側は /etc/default/nis
という設定ファイルを開いて
NISSERVER=false
という行を
NISSERVER=master
に変更します。
ypserv サービスを起動し
$ sudo /usr/lib/yp/ypinit -m
でデータベース作成します。
NISクライアント側は /etc/yp.conf
を編集して
domain <NISドメイン名> server <NISサーバー名>
という設定を記載します。
/etc/nsswitch.conf
を開き
passwd: compat
shadow: compat
group: compat
のようになっている部分を
passwd: nis compat
shadow: nis compat
group: nis compat
のように変更。
ypbind サービスを起動します。
なお、Ubuntu 12.04 ではデスクトップマネジャーが lightdm になっていて、ローカルに存在するアカウント名しか選択できないようになっております。 そのままでは任意のアカウント名が入力できないので NISで管理しているアカウント名を入力ができないことになります。
そこで、以下のように入力します。
$ /usr/lib/lightdm/lightdm-set-defaults -m true
ログイン画面に「ログイン」という項目が出てきて、任意のアカウント名が入力ができるようになります。
blog comments powered by Disqus