アクセス制御リスト (ACL) は、ファイルの所有者が、ファイル所有者、グループ、そのほかの固有のユーザーおよびグループに関するファイルアクセス権を定義できるようにすることで、ファイルのセキュリティーを高めます。ACL は、setfacl コマンドを使用することで、サーバーおよびクライアント上で設定されます。詳細については、setfacl(1) のマニュアルページを参照してください。NFS version 4 では、ID マッパー nfsmapid を使用して、サーバー上の ACL エントリ内のユーザーまたはグループ ID を、クライアント上の ACL エントリ内のユーザーまたはグループ ID にマッピングします。逆も同じです。ACL エントリのユーザーおよびグループ ID は、クライアントとサーバーの両方に存在する必要があります。
次の状態は、ID マッピングが失敗する原因になる可能性があります。
サーバー上の ACL エントリ内に存在するユーザーまたはグループをクライアント上の有効なユーザーまたはグループにマッピングできない場合、ユーザーはクライアント上の ACL を読み取ることができません。
たとえば、ls -lv や ls -lV コマンドを発行した場合、サーバーからクライアントにマッピングできないユーザーまたはグループ ID ACL エンティティーを含むファイルに対して、Permission denied エラーメッセージが表示されます。ID マッパーは ACL 内のユーザーまたはグループをマッピングできません。ID マッパーがユーザーまたはグループをマッピングできた場合、ls -l により生成されるファイルリストのアクセス権のあとにはプラス (+) 記号が表示されています。次に例を示します。
% ls -l -rw-r--rw-+ 1 luis staff 11968 Aug 12 2005 foobar |
同様に、同じ理由により getfacl コマンドは Permission denied エラーメッセージを返すことができます。このコマンドの詳細は、getfacl(1) のマニュアルページを参照してください。
クライアント上で設定されている ACL エントリ内のユーザーまたはグループ ID をサーバー上の有効なユーザーまたはグループ ID にマッピングできない場合、setfacl や chmod コマンドが失敗し、 Permission denied エラーメッセージを返す可能性があります。
クライアントとサーバーで NFSMAPID_DOMAIN の値が一致しない場合、ID マッピングは失敗します。詳細は、「/etc/default/nfs ファイルのキーワード」を参照してください。
ID マッピングの問題を回避するには、次の処置を行います。
NFSMAPID_DOMAIN の値が /etc/default/nfs ファイル内で正しく設定されていることを確認します。
ACL エントリ内のすべてのユーザーおよびグループ ID が NFS version 4 のクライアントとサーバーの両方に存在することを確認します。
サーバーまたはクライアント上でユーザーまたはグループをマッピングできるかどうかを判別するには、次のスクリプトを使用します。
#! /usr/sbin/dtrace -Fs sdt:::nfs4-acl-nobody { printf("validate_idmapping: (%s) in the ACL could not be mapped!", stringof(arg0)); } |
このスクリプトで使用されているプローブ名は、将来変更される可能性があるインタフェースです。詳細については、『Solaris 動的トレースガイド』の「安定性レベル」を参照してください。
次を参照してください。