[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] Re: NIS Setting


中田と申します。上田さんにご指摘を頂き、
NIS (Network Information Service) の件ですが一部解決することが
できました。どうもありがとうございました。
ypcat コマンドの原因ですが /etc/hosts.allow  にアクセスの許可が
与えられていないことが原因でした。(^_^;;;
上田さんにフォローを頂き、

>たとえば、/etc/passwdファイルにNISユーザを登録して運用する場合、
>$>rpc.yppasswdd -D /etc
>とする必要があります。
>現在、引数はどうなっていますか?
>確認は、ps ax | grep yppasswddとすれば出てきます。
>また、自動起動のファイル(/etc/rc.d/init.d/ypserv)では、引数が/etc/ypとなっ
ていま
>した。

/etc/rc.d/init.d/ypserv を確認してみたところ、rpc.yppasswdd -D /etc/yp と
なっておりクライアント側から yppasswd で変更できない原因となっていました。
内容を rpc.yppasswdd -D /etc に変更して可能となりました。
どうもありがとうございました。
/etc/sysconfig/network の NIS_DOMAIN の記述ですが NISDOMAIN と _ を削除しま
した。
クライアントからクライアントへログインする場合ですが /etc/pam.d/login を変更
することにより可能となりました。

--- 変更前 ---
#%PAM-1.0
auth       required /lib/security/pam_securetty.so
auth       required /lib/security/pam_pwdb.so shadow nullok
auth       required /lib/security/pam_nologin.so
account    required /lib/security/pam_pwdb.so
password   required /lib/security/pam_cracklib.so
password   required /lib/security/pam_pwdb.so shadow nullok use_authtok
session    required /lib/security/pam_pwdb.so

--- 変更後 ---
#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_unix_auth.so
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_unix_acct.so
password   required     /lib/security/pam_unix_passwd.so
session    required     /lib/security/pam_unix_session.so

今のところ、yppasswd コマンドは実行できるのですが ypchsh ypchfn コマンドは
エラーがでてしまい解決に至っておりません。引き続き調査したいと思っておりま
す。

/usr/doc/HOWTOJ/NIS-HOWTO.euc.gz より
------------------------------------ 引用開始
  NIS は Network Information Service の略です。ネットワーク上のすべての
  計算機で共有すべき情報を提供する目的で用いられます。NIS で提供される情
  報とは、例えば以下のようなものです。

  o  ログイン名、パスワード、ホームディレクトリ(/etc/passwd)

  o  グループ情報(/etc/group)

  例えば、あなたのパスワードが NIS のパスワードデータベースに登録されて
  いるとしましょう。するとあなたはネットワーク上で NIS のクライアントプ
  ログラムが動いている計算機なら、どの計算機にもログインすることができる
  ようになるのです。
------------------------------------ 引用終了

"フリー UNIX で作るネットワークサーバ構築ガイド"
                       國安和廣+秀和システム出版編集部  編著 P.83
を参考に以下を実行しました。
環境ですがサーバとして TurboLinux Server 1.0
                       benzene.nakada.or.jp
                       192.168.1.3
    クライアントとして TurboLinux 3.0
                       carbon.nakada.or.jp
                       192.168.1.2
で行いました。
以下に実行したことを示します。

サーバの設定

1. ps コマンドで portmap プロセスが実行中であることを確認

[root _at_ benzene /root]# ps aux | grep portmap
bin        138  0.0  0.2   776   340  ?  S    10:12   0:00 portmap
root       281  0.0  0.3  1412   456  p0 S    11:16   0:00 grep portmap

2. NIS ドメインとして "nis_domain_name" を設定

[root _at_ benzene /root]# domainname nis_domain_name
[root _at_ benzene /root]# domainname
nis_domain_name

3. /etc/sysconfig/network に NISDOMAIN の項目を追加

NETWORKING=yes
HOSTNAME=benzene.nakada.or.jp
DOMAINNAME=nakada.or.jp
GATEWAY=192.168.1.1
GATEWAYDEV=eth0
FORWARD_IPV4=no
TIMESERVERATBOOT=no
TIMESERVERTYPE=ntp
TIMESERVERHOST=(none)
TIMESERVERRESYNC=(none)
NISDOMAIN=nis_domain_name

4. /etc/ypserv.conf ファイルが存在することを確認

"NIS サーバの動作を設定するためのもので通常は修正の必要がありませんので
そのまま使います。"
とありますのでファイルが存在することだけ確認しました。

[root _at_ benzene /root]# vi /etc/ypserv.conf

5. /var/yp/securenets ファイルの作成

------------------------------------ 引用開始
このファイルには、NIS を有効にしたいネットワークの範囲を、
ネットマスクとネットワークアドレスの組合せで指定します。

<net-mask><network-address>

<net-mask> フィールドは、ネットワークアドレスに対するネットマスクを
指定し、<network-address> フィールドにはネットワークアドレスを指定
します。ネットマスクの全てのビットが 1 である場合には、ネットワーク
アドレスはホストアドレスになります。
  例えば、プライベートなネットワークである 192.168.0.0/24 に対して
NIS を有効にする場合、/var/yp/securenets ファイルの内容は以下のように
なります。

255.255.255.255  127.0.0.1
255.255.255.0    192.168.0.0
------------------------------------ 引用終了

とありましたので以下のように作成しました。

/var/yp/securenets
#
# securenets    This file defines the access rights to your NIS server
#               for NIS clients. This file contains netmask/network
#               pairs. A clients IP address needs to match with at least
#               one of those.
#
#               One can use the word "host" instead of a netmask of
#               255.255.255.255. Only IP addresses are allowed in this
#               file, not hostnames.
#
# Always allow access for localhost
#255.0.0.0      127.0.0.0

# This line gives access to everybody. PLEASE ADJUST!
#0.0.0.0                0.0.0.0

255.255.255.255  127.0.0.1
255.255.255.0    192.168.1.0

6. /etc/hosts.allow ファイルの最後の 1 行を修正

#
# hosts.allow   This file is accessed by ined or by other
#               programs using libwrap.
#               see man hosts.allow of section 5 for details.
#

# Suppose your network in Xs.

ALL : 127.0.0.1 : allow

# To allow local network access to inetd.
# ALL : XXX.XXX.XXX.0/255.255.255.0 : allow

# To allow portmap access. (NFS, r-programs)
# portmap : XXX.XXX.XXX.0/255.255.255.0 : allow

# Uncomment below to get mail when non-allowed person accesses this machine.
# ALL : ALL : spawn (/usr/sbin/safe_finger -l @%h | /bin/mail -s %d-%h root)
& :
 deny

# Comment below to get mail when non-allowed person accesses this machine.
#ALL : ALL : deny
ALL : 192.168.1.0/255.255.255.0 : allow

7. インストール CD より make-3.77-1TL.i386.rpm をインストール

mount /mnt/cdrom
cd /mnt/cdrom/TurboLinux/RPMS
rpm -ivh make-3.77-1TL.i386.rpm

8. /var/yp/Makefile ファイルの修正とデータベースの作成

------------------------------------ 引用開始
NIS データベースの作成は、/var/yp/Makefile ファイルによって行います。
このファイルの標準の設定内容では、全てのサービスに対するデータベースを
作成します。しかし、あなたのネットワークが全てのサービスを必要としない
のなら必要なもの以外を作成しないようにして下さい。
また、ディストリビューションによってはサポートしていないサービスも
あります。システムをエラーで止めないためにも、必要なデータベースだけを
作成するというのは賢明な選択です。
データベースの作成には、ypinit コマンドを以下のように実行します。
コマンドオプション -m は、マスターサーバを作成するという指定です。

# /usr/lib/yp/ypinit -m

ypinit コマンドは対話式なので、起動するとサーバにするホストの名前を
聞いてきます。マスタサーバとなるべき自ホスト名は既に入力済みなので、
スレーブサーバがある場合にはそのホスト名を 1 行ずつ入力します。
入力すべきサーバがなくなったら、ctrl-D を入力して下さい。
サーバ名の入力が終わると、確認のメッセージが出力されるので、データベース
の作成を開始してよければ y を入力します。これで /var/yp/Makefile が
実行されます。エラーがでないように祈って下さい。
------------------------------------ 引用終了

[root _at_ benzene /root]# cd /var/yp
[root _at_ benzene yp]# cp Makefile Makefile.org

とした後 /var/yp/Makefile を以下のように修正

--- 修正前 ---
all:  passwd group hosts rpc services netid protocols netgrp mail \
       shadow publickey # networks ethers bootparams amd.home \
       #auto.master auto.home passwd.adjunct

--- 修正後 ---
all:  passwd group

[root _at_ benzene /root]# ps aux | grep ypserv
root       296  0.0  0.3  1412   456  p0 S    11:47   0:00 grep ypserv

として ypserv が起動されていないことを確認して

[root _at_ benzene /root]# export NISDOMAIN=nis_domain_name

[root _at_ benzene yp]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  benzene.nakada.or.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:  benzene.nakada.or.jp
        next host to add:  <-- Ctrl + d を入力
The current list of NIS servers looks like this:

benzene.nakada.or.jp

Is this correct?  [y/n: y]  y
We need some  minutes to build the databases...
Building /var/yp/nis_domain_name/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/nis_domain_name'
Updating passwd.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating
passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating
passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating
group.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating
group.bygid...
failed to send 'clear' to local ypserv: RPC: Program not registeredgmake[1]:
Leaving directory `/var/yp/nis_domain_name'

とエラーが表示されるので ypserv を実行し、再度 ypinit を実行すると

[root _at_ benzene yp]# /etc/rc.d/init.d/ypserv start
Starting YP server services: ypserv rpc.ypxfrd rpc.yppasswdd

[root _at_ benzene yp]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  benzene.nakada.or.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:  benzene.nakada.or.jp
        next host to add:  <-- Ctrl + d を入力
The current list of NIS servers looks like this:

benzene.nakada.or.jp

Is this correct?  [y/n: y]  y
We need some  minutes to build the databases...
Building /var/yp/nis_domain_name/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/nis_domain_name'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
gmake[1]: Leaving directory `/var/yp/nis_domain_name'

とエラーメッセージは出力されず終了。

9. サーバの起動設定

------------------------------------ 引用開始
NIS サーバの本体は、ypserv プログラムです。NIS サーバとしてコンピュータ
を動作させるには、初期化プロセスで yserv を起動する必要があります。
RedHat Linux,TurboLinux では、NIS ドメインの設定を
/etc/sysconfig/network ファイルにて適切に行うと、次回の起動時から
ypserv と後述する yppasswdd が起動するようになります。
ypserv および yppasswdd が実行しているかどうかは、ps コマンドか
rpcinfo コマンドで確認できます。
通常 yppasswdd は、rpc.yppasswdd プロセスとして実行されます。
------------------------------------ 引用終了

とありますが、すでに /etc/rc.d/init.d/ypserv を実行させたので

[root _at_ benzene yp]# ps axu | grep ypserv
root       446  0.0  0.3   900   480  p0 S    11:55   0:00 ypserv
[root _at_ benzene yp]# ps axu | grep rpc.yppasswdd
root       464  0.0  0.3   972   404  ?  S    11:55   0:00 rpc.yppasswdd -D
/etc

と起動されていることを確認。

クライアントの設定

10. ps コマンドで portmap プロセスが実行中であることを確認

[root _at_ carbon /root]# ps aux | grep portmap
bin        182  0.0  0.5   944   344  ?  S    10:00   0:00 portmap

11. NIS ドメインとして "nis_domain_name" を設定

[root _at_ carbon /root]# domainname nis_domain_name
[root _at_ carbon /root]# domainname
nis_domain_name

12. /etc/sysconfig/network に NISDOMAIN の項目を追加

NETWORKING=yes
HOSTNAME=carbon.nakada.or.jp
DOMAINNAME=nakada.or.jp
FORWARD_IPV4=yes
TIMESERVERATBOOT=no
TIMESERVERTYPE=ntp
TIMESERVERHOST=(none)
TIMESERVERRESYNC=(none)
GATEWAYDEV=eth0
GATEWAY=192.168.1.1
NISDOMAIN=nis_domain_name

13. /etc/yp.conf ファイルの修正

# /etc/yp.conf - ypbind configuration file
# Valid entries are
#
#domain NISDOMAIN server HOSTNAME
#       Use server HOSTNAME for the domain NISDOMAIN.
#
#domain NISDOMAIN broadcast
#       Use  broadcast  on  the local net for domain NISDOMAIN
#
#ypserver HOSTNAME
#       Use server HOSTNAME for the  local  domain.  The
#       IP-address of server must be listed in /etc/hosts.
#
ypserver benzene

14. NYS におけるネームサービススイッチの設定

------------------------------------ 引用開始
Linux における NYS による NIS の実装では、/etc/nsswitch.conf ファイルを
適切に設定しておく必要があります。以下のように、passwd,shadow,group の
各エントリ行を修正してください。
------------------------------------ 引用終了
/etc/nsswitch.conf を修正します。

--- 修正前 ---
passwd:     files
shadow:     files
group:      files

--- 修正後 ---
passwd:     compat
shadow:     compat
group:      compat
#
passwd_compat: nis
shadow_compat: nis
group_compat: nis

15. /etc/passwd ファイル、/etc/group ファイルの編集

/etc/passwd ファイルの最後に +:::::: の 1 行を追加し、
/etc/group ファイルの最後に +::: の 1 行を追加しました。

16. クライアントの起動設定

------------------------------------ 引用開始
Linux において NYS による実装でない場合と FreeBSD では、NIS クライアント
において passwd および group の補完を行う ypbind デーモンを動作させる
必要があります。NIS クライアントとして使用したいホストでは、初期化
プロセスでこのプログラムを起動する必要があります。
RedHat Linux,TurboLinux では NYS による実装を採用していますので ypbind
プログラムは不要になっています。(RedHat 5.0 では必要)
------------------------------------ 引用終了

以下のように ypbind を実行します。

[root _at_ carbon /root]# /etc/rc.d/init.d/ypbind start
Binding to the NIS domain... ypbind

NIS のプログラム
17. ypcat コマンド-データベース内容の出力

------------------------------------ 引用開始
ypcat プログラムは、NIS データベースを出力するためのプログラムです。
NIS クライアントから NIS が正しく機能しているかを確認するときに
利用します。
------------------------------------ 引用終了

[root _at_ carbon /root]# ypcat passwd
wnn:*:127:127:Wnn:/usr/local/bin/Wnn6:
foo:45K2KIdd.aPI.:501:501::/home/foo:/bin/bash
postgres:!!:128:128:PostgreSQL Server:/var/lib/pgsql:/bin/bash
hiroshi:CBoLPyyGFySFQ:500:500::/home/hiroshi:/bin/bash

と出力されました。

18. ypmatch コマンド-エントリの検索

------------------------------------ 引用開始
ypmatch プログラムは、NIS データベースから特定のキーワードを検索する
ためのプログラムです。
------------------------------------ 引用終了

[root _at_ carbon /root]# ypmatch wnn passwd
wnn:*:127:127:Wnn:/usr/local/bin/Wnn6:

[root _at_ carbon /root]# ypmatch foo passwd
foo:45K2KIdd.aPI.:501:501::/home/foo:/bin/bash

[root _at_ carbon /root]# ypmatch -x
Use "ethers"    for map "ethers.byname"
Use "aliases"   for map "mail.aliases"
Use "services"  for map "services.byname"
Use "protocols" for map "protocols.bynumber"
Use "hosts"     for map "hosts.byaddr"
Use "networks"  for map "networks.byaddr"
Use "group"     for map "group.byname"
Use "passwd"    for map "passwd.byname"

と出力されます。

19. ypwhich コマンド-データベースの出力

------------------------------------ 引用開始
ypwhich プログラムは、NIS データベースに関する情報を出力するための
プログラムです。ypwhich コマンドの一般的な書式は以下のようになります。

ypwhich [-d <domain>]
ypwhich -x
------------------------------------ 引用終了

[root _at_ carbon /root]# ypwhich -d nis_domain_name
benzene.nakada.or.jp

[root _at_ carbon /root]# ypwhich -x
Use "ethers"    for map "ethers.byname"
Use "aliases"   for map "mail.aliases"
Use "services"  for map "services.byname"
Use "protocols" for map "protocols.bynumber"
Use "hosts"     for map "hosts.byaddr"
Use "networks"  for map "networks.byaddr"
Use "group"     for map "group.byname"
Use "passwd"    for map "passwd.byname"

と出力されます。

20. yppasswd コマンド-パスワードの変更

------------------------------------ 引用開始
yppasswd コマンドは、NIS サーバ上でユーザーパスワードの変更を行うための
プログラムです。passwd コマンドとは異なり、バイナリとテキスト双方の
データベースファイルを更新します。yppasswdd デーモンが使用できない場合
には、このコマンドでパスワードの変更を行います。
yppasswd コマンドは、オプションを与えることでログインシェル、
フルネームも変更できます。

yppasswd -p user デフォルトでパスワードの変更
yppasswd -l user ユーザのログインシェルの変更
yppasswd -f user ユーザのフルネームの変更
------------------------------------ 引用終了

[root _at_ carbon /root]# ypmatch foo passwd
foo:45K2KIdd.aPI.:501:501::/home/foo:/bin/bash

[root _at_ carbon /root]# yppasswd foo
Changing NIS account information for foo on benzene.nakada.or.jp.
Please enter root password:
Changing NIS password for foo on benzene.nakada.or.jp.
Please enter new password:
Please retype new password:

The NIS password has been changed on benzene.nakada.or.jp.

[root _at_ carbon /root]# ypmatch foo passwd
foo:zAqNwDgZvmzog:501:501::/home/foo:/bin/bash

21. ypchsh コマンド-ログインシェルの変更

------------------------------------ 引用開始
ypchsh コマンドは、NIS サーバ上でユーザのログインシェルの変更を行うため
のプログラムです。chsh コマンドと異なり、バイナリとテキスト双方の
データベースを更新します。

ypchsh -p user パスワードの変更
ypchsh -l user デファルトでユーザのログインシェルの変更
ypchsh -f user ユーザのフルネームの変更
------------------------------------ 引用終了

[root _at_ carbon /root]# ypchsh foo
Changing NIS account information for foo on benzene.nakada.or.jp.
Please enter root password:

Changing login shell for foo on benzene.nakada.or.jp.
To accept the default, simply press return. To use the
system's default shell, type the word "none".
Login shell [/bin/bash]: /bin/tcsh
Error while changing the login shell.
The login shell has not been changed on benzene.nakada.or.jp.


The login shell has been changed on benzene.nakada.or.jp.

22. ypchfn コマンド-ユーザフルネームの変更

------------------------------------ 引用開始
ypchfn コマンドは、NIS サーバ上でユーザのフルネームなど(フルネーム、
会社名、会社電話番号、自宅電話番号)の変更を行うためのプログラムです。
chfn コマンドと異なり、バイナリとテキスト双方のデータベースファイルを
更新します。
スーパーユーザ以外では、パラメータを与えずにコマンドを起動します。
プロンプトに従い、新しいフルネームを入力します。
スーパーユーザでは、任意のユーザのフルネームを変更できます。

ypchfn -p user パスワードの変更
ypchfn -l user ユーザのログインシェルの変更
ypchfn -f user デフォルトでユーザのフルネームの変更
------------------------------------ 引用終了

[root _at_ carbon /root]# ypchfn foo
Changing NIS account information for foo on benzene.nakada.or.jp.
Please enter root password:

Changing full name for foo on benzene.nakada.or.jp.
To accept the default, simply press return. To enter an empty
field, type the word "none".
Name [none]: Test User
Location []: Tokyo
Office Phone []: 03-1111-1111
Home Phone []: 03-2222-2222
Error while changing the GECOS information.
The GECOS information has not been changed on benzene.nakada.or.jp.


The GECOS information has been changed on benzene.nakada.or.jp.

宜しくお願い致します。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: