NISサーバ & NFSサーバ
概要 †
NIS(Network Information Service)サーバ。コンピュータの情報を共有するサービス。WindowsにおけるNTドメインとかActive Directoryみたいなもんだと思う。
NISを使うと、サーバの/etcにある設定ファイルなどをクライアントに提供できるらしい。
ココでは、サーバのIPアドレスは192.168.0.4で、クライアントのIPアドレスは192.168.0.14ということにする。サーバには、nistestというユーザを作っておいた。
通常、NISはNFSと連携して/homeディレクトリをサーバのNFS共有ディレクトリにマウントして使うことがほとんどだと思うのでその設定も行う。
サーバとクライアントの構成はこのような感じ。
サーバの/etc以下のファイルを提供して、オートマウント情報によりサーバのNFS共有ディレクトリを/homeにマウントするようにする。この例の場合、/etc以下のファイルは、サーバ・クライアントで共通のものになるので、サーバでも自分自身をマウントするようになっている。
サーバ側の設定 †
インストール †
ypsev(NISサーバ)をインストールする。
# apt-get install ypserv パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: ypserv アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個 130kB のアーカイブを取得する必要があります。 展開後に 268kB のディスク容量が追加消費されます。 取得:1 http://updates.vinelinux.org 3.1/i386/plus ypserv 2.13-0vl2 [130kB] 130kB を 0s 秒で取得しました (325kB/s) 変更を適用しています... Preparing... ########################################### [100%] 1:ypserv ########################################### [100%] 完了
NISの設定 †
/etc/hostsを編集する。
# vi /etc/hosts
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost localhost.localdomain 192.168.0.4 pc7dk3.niwaka.ddo.jp ←サーバのIPアドレス、サーバーのホスト名
NISドメインhatenaを登録する。
# domainname hatena # domainname hatena
ちなみに、manpageを見ると、
domainname - システムの NIS/YP ドメイン名を表示・設定する nisdomainname - システムの NIS/YP ドメイン名を表示・設定する ypdomainname - システムの NIS/YP ドメイン名を表示・設定する
という感じに、どのコマンドを使っても同じらしい。
上のままだと再起動すると消えちゃうので、
# vi /etc/sysconfig/network
NISDOMAIN=hatenaを追加する。
ypserv.confの編集。
# vi /etc/ypserv.conf
# Not everybody should see the shadow passwords, not secure, since # under MSDOG everbody is root and can access ports < 1024 !!! 192.168.0. : * : shadow.byname : port 192.168.0. : * : passwd.adjunct.byname : port
auto.masterの編集。これは、サーバのNFS共有ディレクトリにアクセスがあったとき自動的にマウントする設定ファイル。
# vi /etc/auto.master
追加
/home yp :auto.homeローカルの/homeディレクトリにyp(NIS)から配布されたauto.homeにしたがってマウントする。
auto.homeの編集。これは、上のauto.masterから呼び出されるもので、サーバーのどこをマウントするかを書いた設定ファイル。
# vi /etc/auto.home
* -fstype=nfs,rw,soft,rsize=8192,wsize=8192 192.168.0.4:/nishome/&ローカルの/homeディレクトリ下のすべてのディレクトリ(*)にユーザーがアクセスを試みた場合、オプションを指定して192.168.0.4の/nishomeディレクトリ以下をマウントする。
Makefileを編集して提供するファイルを指定する。
# vi /var/yp/Makefile
# If you don't want some of these maps built, feel free to comment # them out from this list. #all: passwd group hosts rpc services netid protocols mail \ # netgrp shadow publickey networks ethers bootparams printcap \ # amd.home auto.master auto.home auto.local passwd.adjunct \ # timezone locale netmasks all: passwd group hosts shadow auto.master auto.home \
portmapとypservを起動させる。
# /etc/rc.d/init.d/portmap start Starting portmapper: [ OK ] # /etc/rc.d/init.d/ypserv start YPサーバサービスを起動中: [ OK ]
自動起動の設定。
# chkconfig ypserv on ←NISサーバデーモン # chkconfig yppasswdd on ←クライアントからパスワードを変更できるようにするデーモン
NISデータベース(マップ)の作成を行う。これでサーバに登録されているユーザ情報などが、クライアントから参照されるデータベースに登録される。
# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. pc7dk3.niwaka.ddo.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 <control D>. next host to add: pc7dk3.niwaka.ddo.jp next host to add: The current list of NIS servers looks like this: pc7dk3.niwaka.ddo.jp Is this correct? [y/n: y] y We need a few minutes to build the databases... Building /var/yp/yokabai/ypservers... Running /var/yp/Makefile... gmake[1]: ディレクトリ `/var/yp/yokabai' に入ります Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating shadow.byname... Updating shadow.bynumber... Updating auto.master... Updating auto.home... gmake[1]: ディレクトリ `/var/yp/yokabai' から出ます pc7dk3.niwaka.ddo.jp has been set up as a NIS master server. Now you can run ypinit -s pc7dk3.niwaka.ddo.jp on all slave server.
NFSの設定 †
NFS共有ディレクトリの作成。今後は/nishomeをサーバ・クライアントそれぞれのマウントポイント/homeにマウントする形になる。
# mv /home /nishome
マウントポイントの作成。
# mkdir /home
/nishomeを共有するために/etc/exportsを編集する。
# vi /etc/exports
追加
/nishome 192.168.0.0/24(rw,no_root_squash)
NFSの再起動。
# /etc/init.d/nfs restart Shutting down NFS mountd: [ OK ] Shutting down NFS daemon: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ]
クライアント側の設定 †
インストール †
ypbind(NISクライアント)をインストールする。
# apt-get install ypbind パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: yp-tools 以下のパッケージが新たにインストールされます: yp-tools ypbind アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 47 個 108kB のアーカイブを取得する必要があります。 展開後に 214kB のディスク容量が追加消費されます。 続行しますか? [Y/n]y 取得:1 http://updates.vinelinux.org 3.1/i386/main yp-tools 2.8-3vl2 [67.9kB] 取得:2 http://updates.vinelinux.org 3.1/i386/main ypbind 3:1.17.3-0vl1 [40.4kB] 108kB を 0s 秒で取得しました (188kB/s) 変更を適用しています... Preparing... ########################################### [100%] 1:yp-tools ########################################### [ 50%] 2:ypbind warning: /etc/yp.conf created as /etc/yp.conf.rpmnew ########################################### [100%] 完了
NISの設定 †
NISドメインの登録。サーバに登録したものと同じものを入力。
# domainname hatena # domainname hatena
# vi /etc/sysconfig/network
NISDOMAIN=hatenaを追加する。
ネームサービススイッチファイルの編集。nisを追加。
# vi /etc/nsswitch.conf
passwd: files nis shadow: files nis group: files nis hosts: files dns nis automount: files nisplus nis
yp.confの編集。NISサーバのドメインとNISサーバのアドレスを追加。
# vi /etc/yp.conf
#domain localdomain broadcast domain hatena server 192.168.0.4
authconfigの編集。
# vi /etc/sysconfig/authconfig
USEDB=no USEHESIOD=no Upt-SELDAP=no USENIS=yes ←NISを有効にする USEWINBIND=no USEKERBEROS=no USELDAPAUTH=no USEMD5=yes USESHADOW=yes USESMBAUTH=no
DHCPクライアントを使っている場合、dhcpcdによってyp.confが上書きされてしまうので、以下を編集する。
# vi /etc/sysconfig/network-scripts/ifup
# DHCP clients need DNS to be available, and we don't know # what DNS server they're using until they are done. FWHACK= if [ -n "$FWACTIVE" -a "$FIREWALL_MODS" != "no" ]; then ipchains -I input -s 0/0 53 -d 0/0 1025:65535 -p udp -j ACCEPT FWHACK=1 fi if [ -x /sbin/dhcpcd -Y] && /sbin/dhcpcd -Y ${DHCPCDARGS} ${DEVICE} ; then echo $" done."↑/sbin/dhcpcd -Y ←-Yオプションをつける(yp.confを上書きしない)
portmapとypbindを起動させる。
# /etc/init.d/portmap start Starting portmapper: [ OK ] # /etc/init.d/ypbind start Binding to the NIS domain... [ OK ] Listening for an NIS domain server: 192.168.0.4
動作確認。
# ypwhich 192.168.0.4 # ypcat passwd nistest:$1$cpnjpAjq$9o.85Wnp173rga1A9Bamf.:503:503::/home/nistest:/bin/bash
NFSの設定 †
現在のホームディレクトリの名前を変える。
# mv /home /home-local
マウント用のホームディレクトリを作る。ココは空じゃないといけない。
# mkdir /home
autofsを再起動。サーバでデータベースの更新を行った時点でクライアントにも反映されるので、autofsを再起動する。
# /etc/init.d/autofs restart Stopping automounter: [ OK ] Starting automounter: [ OK ]
statusで確認し、うまくいったら以下のように表示される。
# /etc/init.d/autofs status Configured Mount Points: ------------------------ /usr/sbin/automount /home yp auto.home Active Mount Points: -------------------- /usr/sbin/automount /home yp auto.home
マウントされるか確認
# ls /home/
としただけではマウントされない。
# ls /home/nistest/ lib/ rpm/
とやって初めてマウントされる。つまり、デーモン起動直後にはまだマウントされておらず、/home/[ユーザー名]のディレクトリにアクセスした時点で自動的にマウントされる。
マウントされたことを確認するには、
# df ファイルシステム 1k-ブロック 使用中 空き 使用% マウント場所 /dev/sda2 3565696 955828 2428736 29% / /dev/sda1 46633 10547 33678 24% /boot none 127740 0 127740 0% /dev/shm 192.168.0.4:/nishome/nistest 8143576 1254212 6475692 17% /home/nistest
こんな感じで表示される。
動作確認
# su - nistest [nistest@localhost nistest]$
クライアントからパスワードを変更するには †
[nistest@localhost nistest]$ yppasswd -p Changing NIS account information for nistest on pc7dk3.niwaka.ddo.jp. Please enter old password: Changing NIS password for nistest on pc7dk3.niwaka.ddo.jp. Please enter new password: Please retype new password: The NIS password has been changed on pc7dk3.niwaka.ddo.jp.