FreeBSD QandA ジャンル別一覧: NIS、NFS
[管理番号 1497] (最終更新 2001/08/12 02:51:17)
Q. NIS って何ですか? NIS を導入したいのですが、やり方がよくわかりません。
A. 簡単に言うと、複数のホストで /etc/passwd や /etc/hosts などの
情報を共有する仕組みです。例えば、複数のホストにアカウントを
持っているユーザがパスワードを変更したいとき、NIS がない場合は
全てのホストにいちいちログインして、passwd(1) コマンドで
パスワードを変更しないといけません。
一方、NIS を導入しておけば、1つのホストでパスワードを変更すれば、
自動的に他のホストにも新しいパスワードの情報が反映されます。
NIS の概念、用語、関係コマンドについてはハンドブック
<URL:http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/nis.html>
に丁寧な説明がされています。また、NIS マスタサーバ、
NIS スレーブサーバ、NIS クライアントのセットアップの方法も
具体例にもとづいて書かれています。
このほかに、NIS の導入時には、以下のページが参考になるでしょう。
<URL:http://surf.ap.seikei.ac.jp/%7Enakano/linux/NIS-j.html>
[管理番号 161] (最終更新 1999/02/17 23:58:45)
Q. NIS server を立ち上げたんですが、NIS client を接続すると、途端に
server 側で port mapper が子 process 数の限界一杯(私の場合は 128 個…)
に起動されて、どとーのように machine が重くなります。どうしたものでしょ
う? もちろん、DES は internat 版を install してあります。
A. 私の場合、NIS server の /etc/networks(当然 NIS で共有もされる)を
正しく設定したら、ピタッとその現象は出なくなりました。しくしく。
[管理番号 179] (最終更新 1999/02/17 23:58:45)
Q. Linuxマシンのディスクを FreeBSDマシンから NFSマウントするには
どうしたらいいでしょうか?
A. linux の nfsd はデフォルトでは 1024番以内の reserved portを使います
3.0 以前の FreeBSD を NFS クライアントとして使うとデフォルトでは
reserved port を使わないのでそのままではマウントできないことがあります。
linux の 日本語 man, export.8より
secure このオプションはリクエストが IPPORT_RESERVED (1024)
より小さな internet port に発したものであることを要
求する。このオプションはデフォルトで有効である。 こ
れをオフにする為には insecure と明記する必要がある。
linux のサーバ側で insecure を指定するか、FreeBSD側で
mount_nfs する時に
-P 予約されたソケットポート番号を使います。これはクライアントに、予
約されたポートを使用する事によりより安全に NFS を行えると言う誤っ
た考えに基づき、予約されたポートをクライアントに使用させるサーバ
をマウントする場合に有効です。
のオプションを使うといいでしょう。なお FreeBSD 3.0 では -P オプション
の動作がデフォルトになりました。このため 3.0では上記の操作は不要です。
[管理番号 290] (最終更新 2001/03/07 02:08:46)
Q. DES って何ですか?
A. Data Encryption Standard の略で、データの暗号化アルゴリズムと、それを
実装しているシステムファイル及び、もっと一般的には Unix 全般のログイン
パスワードの記録形式の事を意味します。
Sun などのような、password の暗号化に DES(ここでは algorithm を示しま
す)を使用している OS を NIS server とする場合、password を照会する時
に暗号化の方式に互換がないと認証できませんので、DES(ここでは FreeBSD
のファイル)を install する必要があります。しかし、安全性の面から言え
ば FreeBSD 標準の MD5 形式よりも低いくらいで、現在の Internet 経由の
リモートログインでは、もっと強力な暗号化アルゴリズムを搭載した SSH な
どのプロトコルを使う事が推奨されます。
ややこしい事に、DES にはアメリカ合衆国の輸出規制問題がつきまといます。
幸いなことに 4.1.1-RELEASE 以降では、FreeBSD はこの問題を法的にクリア
したため、標準のリリースに DES を含めて全ての暗号化機能が含まれます。
実際は DES については 3.5.1-RELEASE で問題なく公開できるようになったの
ですが、RSA についてのアメリカ国内での特許問題もからみ、4.1.1-RELEASE
から一般の配布ファイルと同等の扱いとなりました。しかしそれより前の
リリースでは、アメリカ国内にある FreeBSD オリジナルの配布はできず、
そのため「US 版」と「国際版」が存在しました。
こういった歴史的な事情は、次の文書に詳しく書かれています。
FreeBSD ハンドブック「8. セキュリティ」
<URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/security.html>
- [管理番号 290] Q.DES って何ですか?A.Data Encryption Standard ...
- [管理番号 292] Q.DES のインストールの方法を教えてください。A.ここではバイナリ配布ファイ...
- [管理番号 345] Q.確かに DES をインストールしましたが、/usr/bin/passwd で...
- [管理番号 503] Q.ファイルを暗号化したいのですが、どうすればいいですか?A.FreeBSD に...
- [管理番号 941] Q.他の UNIX で使用していた passwd file と passwd を...
- [管理番号 1682] Q.DES をインストールしたら、% passwd/usr/libexec/ld...
- [管理番号 1683] Q.Kerberos (ケルベロス) をアンインストールするにはどうしたらいいで...
- [管理番号 1943] Q.FreeBSD では secure hash 関数として OpenBSD で...
- [管理番号 1944] Q.パスワード用の secure hash の生成方式として MD5 を使ってい...
- [管理番号 1945] Q.デフォルトの secure hash の生成方式としてMD5 を指定していま...
[管理番号 581] (最終更新 2003/10/16 23:20:36)
Q. ある NFSサーバに mount しようとすると以下のメッセージが出て接続ができません。
> NFS Portmap: RPC: Program not registered
その NFS サーバには他のプロトコルでは接続できています。
A. NFS サーバ側のカーネルと /etc/rc.conf の内容を確認してください。
1) カーネルのコンフィグレーションファイルに
options NFS #Network File System
を入れていること、
options NFS_NOSERVER #Disable the NFS-server code.
を入れていないことを確認します。
2) /etc/rc.conf で nfs_server_enable= が "NO" になっていたら
"YES" にします。/etc/rc.conf では、同じ変数を二回以上指定
した場合は 後優先になるので、気を付けて読んでください。
以上の手順を踏んでから reboot させます。
これでもうまくいかない場合、/etc/hosts.allow を確認してください。
ALL : ALL : allow
という行をコメントアウトしていませんか? コメントアウトする
こと自体はセキュリティを高めるためのよい方法ですが、NFS を
使用する際は portmap ののポートを開けておかなくてはいけません。
例えば、マウントしたいサーバが 192.168.12.34 ならば、
portmap : 192.168.12.34/255.255.255.0 : allow
のように、NFS サーバとの通信を許可する設定を追加してください。
[管理番号 594] (最終更新 1999/02/17 23:58:45)
Q. NFS サーバーとして設定した FreeBSD で、リブートせずに /etc/exports
の変更を反映させるにはどうしたら良いのでしょう。
A. man exports の SEE ALSO に mountd(8) があります。
man 8 mountd を見てみると、そのものずばりが書いてあります。
# kill -HUP `cat /var/run/mountd.pid`
で /etc/exports の変更内容を反映させることができます。
[管理番号 618] (最終更新 1999/02/17 23:58:45)
Q. コマンドラインから mount_nfs するとマウント出来るディレクトリに対し
て、amd を使ってオンデマンドにマウントしようとするとうまく行きません。
A. mount_nfs(8) や mount -t nfs でマウントする時に、何か特別なオプショ
ンが必要でしたか? もし必要ならば、それに相当するオプションが amd(8)
でサポートされていることを確認してみて下さい。type:=nfs の場合、amd は
自前の mount_nfs (/sbin/mount_nfs ではない!) を使用するからです。また、
amd は自分の知らないオプションに対しては黙って無視してしまうので注意が
必要です。
特に、mount_nfs の場合 -c オプションを、mount -t nfs の場合 -o -c や
-o noconn というオプションを付けないとマウントできない、という条件に当
てはまりますか? (IP address を二つ持っているファイルサーバに nfs マウ
ントしようとする場合などは、現状 (1998/02/24) ではこれが必要なようで
す。) もしそうなら、amd.map の opts に noconn を追加してみて下さい。
/defaults に一括して記述すればよいのですが、各キーやサーバ毎それぞれに
独自の opts がある場合には、そこにも noconn を追加してみて下さい。
(参考文献:/usr/src/usr.sbin/amd/doc/amdref.ps など)
[管理番号 619] (最終更新 1999/02/17 23:58:45)
Q. IP address を二つ持っているファイルサーバに nfs マウントしようとする
とうまく行きません。
A. mount_nfs の場合 -c オプションを、mount -t nfs の場合 -o -c や
-o noconn というオプションを付けてみて下さい。
また FreeBSD の Problem Report
<URL:http://www.FreeBSD.org/cgi/query-pr.cgi?pr=4678>
も参考になるかも知れません。これは current について報告していますが、
2.2.5-STABLE にも当てはまるようです。しかしこの状況 (1998/02/24現在)
はいずれ改善されると思われます。
[管理番号 621] (最終更新 1999/02/17 23:58:45)
Q. NIS を利用して group の情報を共有しています。NIS server の /etc/group
の wheel にユーザ hoge を追加しました。NIS client で "ypcat group" す
ると wheel に hoge が追加されていることが確認できるのですが、NIS client
上で hoge が su で root になることが出来ません。
A. su コマンドは、/etc/group の先頭から順に検索し、最初に見つかったグルー
プ番号 0 の グループ (wheel) のエントリを元に、ユーザのチェックを行いま
す。ここで、/etc/group の情報を NIS で共有している場合、NIS client の
/etc/group に追加した "+:::" の行の部分が NIS が提供する情報に置き換えら
れます。このため、wheel グループの行が +::: より前にあると、NIS で提供さ
れる wheel グループの情報が無効になります。
一般的に、NIS で共有したいグループは、NIS クライアントの /etc/group か
ら削除します。しかし、wheel グループはシステムにとって特別なグループのた
め、起動時や NIS サーバが見つからない場合に問題が生じるかも知れません。
NIS クライアントの /etc/group の先頭に "+wheel:::" あるいは "+:::" の
行を追加することで、問題を回避できるでしょう。ただし、/etc/group と
NIS マップの検索順序が変化しますので、他のエントリに対する影響についても
考慮してください。また、root 権限を持つことができるユーザを規定する
wheel グループの情報を外部のホストに依存すると、セキュリティ的に弱くなる
という点についても留意してください。
管理の手間を厭わないならば、インストール時から既に /etc/group に書かれ
ているグループについては、NIS で共有せず、各 NIS クライアントの
/etc/group に NIS サーバと同様の記述をするようにしましょう。
[管理番号 659] (最終更新 1999/02/17 23:58:45)
Q. コマンドラインから mount_nfs すると正常にマウントできるディレクト
リが、amd を使ってマウントするとマウントには成功しますが中身が見えませ
ん。(permission denied. で拒否されます)
A. ある種の NFS サーバは特権 port 以外からの NFS のリクエストを拒否し
ます。例えば NetBSD-1.3 を NFS サーバに使うと、デフォルトではそうなり
ます。2.2-RELEASE 以降の mount_nfs は、デフォルトでは特権 port から
NFS のリクエストを発行しますが、amd は特権 port 以外から NFS リクエス
トを発行しようとするためにこうなります。
対処法は二つあります。
(1) サーバの特権 port 制限を外す。NetBSD の場合は、/etc/exports の
エントリに、-noresvport を加える。
(2) amd の場合でも特権 port からリクエストするように変更する。amd
マップの該当エントリに "opts:=resvport" というオプションを加え
る。
[管理番号 677] (最終更新 1999/02/17 23:58:45)
Q. 3台のパソコンを繋いで LAN を構築しようと思いますが、
名前の解決を /etc/hosts で行うのと DNS で行うのでは、
どちらがよいのでしょうか?
A. ホストの台数が少ない場合 /etc/hosts でも可能ですが、
LAN を構築するなら DNS をお勧めします。
LAN やインターネットの仕組みを理解する上で DNS の設定は
非常に役に立ちますし、まして、将来インターネットに接続する
つもりなら DNS は必須といっていいでしょう。
最初の設定は大変ですが、一度設定してしまえば、
・逐次 全てのホストの /etc/hosts を編集しなくても済みます
・キャッシュとして役に立ちます
ほかにも、こんなこと(^^;や、あんなこと(^^;;;や、いろいろ便利な
ことがあるので、一度挑戦してみてはいかがでしょうか。
[管理番号 1128] (最終更新 2001/04/18 02:12:12)
Q. NFS の Server 設定 (/etc/exports の設定) で、
bad exports list line /hoge/hoge
または
could not remount /hoge/hoge: Invalid argument
などと怒られる
A. /etc/exports の設定を以下の点に注意してもう一度見直してください
(mountd および nfsd は既に起動されているものとします)。
(1) マウントポイントは実ディレクトリでないといけない
(シンボリックリンクでのマウントポイントは不可)。
(2) -alldirs を指定するマウントポイントは独立したファイルシステム
(パーティション) でないと不可。
サブディレクトリに対する -alldirs は上記 2 番目のエラーとなる。
[管理番号 1147] (最終更新 1999/11/19 15:50:58)
Q. FreeBSD で NIS マスタサーバを立ち上げたのですが、Solaris2.6 など他
の OS のクライアントから yppasswd でパスワードが変更できません。
A. サーバの rpc.yppasswdd を -u オプションをつけて起動します。
起動時に有効にするには /etc/rc.conf に
nis_yppasswdd_flags="-u"
という行を加えましょう。
何故かは rpc.yppasswdd(8) に書いてあります。
[管理番号 1179] (最終更新 2001/11/17 19:15:36)
Q. FreeBSD を NFS サーバにして、NFS クライアントに NEWS-OS 4.2.1/6.1.2、
SunOS 4.1.3_U1 のような古めの OS を用いたところ、NFS クライアント側で
ファイルの読み込みに時間がかかる時があります。そのときクライアント側の
syslog にはこんな記録が残っていました。
Nov 6 13:59:36 mimas vmunix: NFS server hyperion not responding still trying
Nov 6 13:59:36 mimas vmunix: NFS server hyperion ok
A. nfsd(8) の -t オプションが原因のようです。TCP 経由での NFS は比較的最
近策定されたものなので、古めの OS ではまず使えません。実際、上記のクラ
イアントはいずれも TCP 経由での NFS は使えません。
そこで、/etc/rc.conf に
nfs_server_flags="-u -n 4"
と追加して、UDP 経由の NFS のみを指定します。
(2.2.1-RELEASE の場合は /etc/rc を直接書き換えましょう)。
その後 NFS サーバを再起動すればよいでしょう。ただし、元の情報は
FreeBSD 2.2.x-RELEASE の頃のものなので、現在でもこのような現象が再現す
るかは分かっていません。
[管理番号 1205] (最終更新 1999/04/07 06:23:17)
Q. natd のプライベート側からグローバル側のマシンのディスクを
mount するとアクセスに失敗することがあります。
A. mount_nfs -T host:dir dir
のように TCP モードで mount してください。この時に
NFS Portmap: RPC: Program not registered
というエラーが出たら,TCP モードでは mount できないので、
mount -t nfs -r 1024 -w 1024 host:dir dir
のように readsize と writesize を小さくして mount してください。
[管理番号 1308] (最終更新 2000/05/24 20:52:12)
Q. NIS/YP で + や - を含む行をもつ map を make しようとすると、
以下のメッセージが出て、その行は無視されてしまいます。
yp_mkdb: bad character at start of line: ...
A. FreeBSD 3.2-RELEASE 以前の yp_mkdb(8) では、マップのキーかデータの先頭に
`+' や `-' を使うと、警告メッセージを出してこの行を無視するようになって
います。それに対して、3.3-RELEASE 以降ではこのチェックは -f オプション
を指定したときだけ行われ、デフォルトではチェックは行わなくなりました。
しかし、これらの文字が passwd(5) や group(5) で特別な意味を持つことには
変わりませんので、これらのマップの処理だけ Makefile.yp で -f オプション
が追加されるようになっています。
3.2-RELEASE 以前を使っていて、どうしてもこのチェックを外したければ、
/usr/src/usr.sbin/yp_mkdb/yp_mkdb.c の /* Check for silliness. */
というコメントがついている if 文のブロックを削ってコンパイルしなおせば、
一応使えるようにはなります。
/* Check for silliness. */
if (*keybuf == '+' || *keybuf == '-' ||
*datbuf == '+' || *datbuf == '-') {
warnx("bad character at start of line: %s", buf);
continue;
}
[管理番号 2090] (最終更新 2002/02/14 00:39:59)
Q. Solaris7 など他の OS で NIS マスタサーバを立ち上げたのですが、
FreeBSD のクライアントから yppasswd を実行すると
passwd: failed to change NIS password: RPC: Server can't decode arguments
というエラーが出て、パスワードが変更できません。
A. FreeBSD の /etc/login.conf を
変更前
default:\
:passwd_format=md5:\
変更後
default:\
:passwd_format=des:\
として下さい。理由は、[管理番号 345] や login.conf(5) の
passwd_format に関する説明を参照して下さい。