サーバマシン上のファイルに対する nfsd によるアクセスコントロールは、 それぞれの NFS RPC request の際に与えられる uid と gid に基づいている。
ユーザは通常、 サーバ上にある自分のファイルには、それが普通のファイルシステム上に あるのと同様にアクセス可能であることを期待している。
これにはクライアントとサーバ上で用いられる uid と gid がそれぞれ 同じである必要があるが、これは常に真であるとは限らず、望ましいとも限らない。
サーバとクライアントで同一ユーザ名であってもuidが異なることによることによって、他ユーザのファイルの更新および削除が発生する問題が発生する可能性がある。
NFSv3での問題の発生を改善するために、NFSv4では、サーバとクラインのrpcidmapdサービスによるユーザ,uidで一意性を持たせた管理を行っている。
しかし、NFSv4 の標準設定では、スーパーユーザ、一般ユーザすべてがNFSの匿名ユーザに変更され、一旦匿名ユーザで登録されたファイルの変更はスーパーユーザ
でもオーナーを変更できない。よってNFSv4の標準設定を変更して実態の運用に合わせる必要がある。
■Exportファイル
•root_squash —
ユーザー nfsnobodyにユーザーIDを与え、 リモート接続している rootユーザーからrootの権限を取り上げます。
これにより、リモートrootユーザーの権限を最低のローカルユーザーまで "押し下げ"て、リモートサーバーにあるファイルの不正変更を効果的に防ぎます。
また、no_root_squashオプションはrootの押し下げをオフにします。
rootを含めてすべてのリモート ユーザーを押し下げるには、all_squashオプションを使用します。
ユーザーIDとグループIDを指定して ある特定ホストからのリモートユーザーと一緒に使用するには、anonuidオプションとanongid オプションをそれぞれ使用します。
その場合、 リモートNFSユーザーの為に特別なユーザーアカウントを作成することにより
(anonuid=
■サブツリーのチェックを無効にする機能、
安全でないポートからのアクセス許可、安全でないファイルロックの許可(特定の初期 NFSクライアント実装に必要)などがあります
使用頻度の少ないこれらのオプションについての詳細は exports manページを参照してください
■
9.5.2. ファイルアクセス権
NFSファイルシステムがリモートホストによって読み書きモードでいったんマウントされると、各共有ファイルが持つ唯一の保護は権利のみとなります。
仮に同じユーザーIDの値を持つ2人のユーザーが、同じNFSファイルシステムをマウントした場合、互いに相手のデータを変更することができます。
さらにはクライアントシステムでrootとしてログインする人は誰でもsu -コマンドを使用して、NFS共有を介して特定のファイルにアクセスできるユーザーになることが
できます。NFSとユーザーIDの不一致に関する詳細は、Red Hat Enterprise Linux システム管理入門ガイドの章、ユーザーアカウントとリソースアクセスの管理を参照して下さい。
デフォルトではNFSがアクセス制御リスト(ACL)をサポートします。 この機能を無効にすることはお推めできません。
この機能に関する詳細はRed Hat Enterprise Linux システム管理ガイドの章、ネットワーク ファイル システム(NFS) を参照ください。
NFSによりファイルシステムをエクスポートする時、root squashingの使用がデフォルト動作となります。
この結果、ローカルマシンのrootユーザーとして NFS共有を利用するユーザーのユーザーIDは、
サーバーのnfsnobodyアカウント値に設定されます。絶対にroot squashing は停止しないでください。
NFS 共有を読み取り専用でエクスポートする場合、all_squashオプションの使用を検討して下さい。
このオプションはエクスポート対象ファイルシステムにアクセスするすべてのユーザーに nfsnobodyユーザーのユーザーID を取得させます。
■
18.3.2. 手作業でのファイルシステムのエクスポート
NFS のエクスポートサービスで利用する設定ファイルは、 /etc/exports と /etc/sysconfig/nfs です。
これらのファイルに加え、 NFSv4 サーバの設定には /etc/idmapd.conf ファイルが必要です。
また、サービスを 開始したり再起動したりするには、 rcnfsserver restart コマンドを実行します。
このコマンドでサービスを起動すると、 /etc/sysconfig/nfs で NFSv4 を設定している場合、
rpc.idmapd についても起動を行ないます。なお、 NFS サーバを起動するには RPC portmapper が動作している必要があります。
そのため、 rcrpcbind restart を実行して、 portmapper サービスについても起動または再起動を行なってください。
http://linuxjm.sourceforge.jp/html/nfs-utils/man5/exports.5.html
■
18.3.2.1.3. /etc/idmapd.conf
Linux マシンにおいて、各ユーザには名前と ID が割り当てられています。
idmapd はサーバに対して NFSv4 リクエストが届いた場合に、名前から ID への変換を行ない、クライアントに応答する仕組みを備えています。
NFSv4 では名前だけで通信を行なう都合から、サーバとクライアントの両方で 動作していなければなりません。
なお、 NFS を利用してファイルシステムの共有を行なうマシン間では、 ユーザ名と ID (uid) が共通化されるように設定してください。
NIS や LDAP などの方法や、それ以外のドメイン認証の仕組みをお使いの環境で利用する ことで、これを設定することができます。
また、 /etc/idmapd.confファイル内の Domain パラメータは、サーバとクライアントで 同じになるように設定してください。
よくわからない場合は、 サーバとクライアントで両方とも既定の localdomain ドメインのままにしておいてください。
設定ファイルは、たとえば下記のように なります
=========================================