このトピックでは、NFSv4 ACL (アクセス制御リスト) を設定して NFSv4 ファイルシステムに適用し、ファイルとディレクトリ へのアクセスを制御する方法について説明します。
始める前に
このタスクについて
Linux を実行する ECS (Elastic Compute Service) インスタンスに NFSv4 ファイルシステムをマウントし、インスタンスに Linux 固有の nfs4-acl-tools ツールをインストールできます。 標準のnfs4_getfaclおよびnfs4_setfaclツールを使用して、インストール完了後に NFSv4 ACL を設定できます。
説明
下表に、NFSv4 ACL の設定に関連するコマンドを示します。
Command | 説明 |
---|---|
nfs4_getfacl <filename> |
指定されたファイルのアクセス権限を表示します。 |
nfs4_setfacl -a A::GROUP@:W <filename> |
GROUP@principal に指定ファイルへの書き込みアクセスを 許可する ACE (アクセス制御エントリ) を追加します。 |
nfs4_setfacl -a A::1000:W <filename> |
指定ファイルへの書き込みアクセスを名前が 1000 のユーザープリンシパルに許可する ACE を追加します。 |
nfs4_setfacl -a A:g:10001:W <filename> |
指定ファイルへの書き込みアクセスを名前が 10001 のグループプリンシパルに許可する ACE を追加します。 |
nfs4_setfacl -e <filename> |
エディターで ACL を設定します。 |
nfs4_getfacl <filename> > saved_acl.txt |
指定したファイルに対する権限リストをテキストファイルとして保存します。 |
nfs4_setfacl -S saved_acl.txt <filename> |
既定の権限が設定されたテキストファイルを使用して、指定ファイルに対する権限を設定します。 |
nfs4_setfacl -m A::1001:rwaxTNcCy A::1001:rxtcy file1 |
ファイル file1 に適用される ACE の権限を変更します。 |
nfs4_getfacl file1 | nfs4_setfacl -S - file2 |
file1 に対する権限を file2 にコピーします。 |
nfs4_getfacl file1 | grep @ | nfs4_setfacl -S - file1 |
file1 に適用されるすべての ACE をすべて削除します ( ただし、OWNER@、GROUP@、EVERYONE@ に対する ACE を除く)。 |
nfs4_setfacl -R -a A:g:10001:rW dir |
名前が 10001 のグループプリンシパルに dir内のファイルおよびサブディレクトリに対する読み取りおよび書き込みアクセスを許可する ACE を追加します。 |
find dir -type f -exec sh -c 'for ace for $(nfs4_getfacl \ {} | grep "^ A。* \:1005
\:"); do nfs4_setfacl -x $ ace \ {}; \ '; |
名前が 1005 のユーザープリンシパルに dir内のファイルへのアクセスを許可する ACE を削除します。 |
nfs4_setfacl -a A:fdg:10001:rW dir1 |
名前が 10001 のグループプリンシパルに dir1 内に新しく作成されたすべてのファイルとサブディレクトリへの読み取りおよび書き込みアクセスを許可する ACE を追加します。 |
nfs4_setfacl -a A:fg:10001:rx dir1 |
名前が 0001 のグループプリンシパルに dir1 内に新しく作成されたすべてのファイルへの読み取りおよび書き込みアクセスを許可する ACE を追加します 。 |
手順
ファイルおよびディレクトリへのアクセスを制御する NFSv4 ACL を設定するには、以下の手順を実行します。
関連する操作
ユーザーのアクセス権限を削除する場合は、次の方法を使用します。
NFSv4 ACL を使用する場合は、各ユーザーを異なるグループに分類することを推奨します。 また、NFSv4 ACL を設定する際に、個別のユーザーではなくグループのアクセス権限のみを設定します。 オブジェクトへのアクセス権を持つグループからユーザーを削除することにより、ユーザーからオブジェクトに対するアクセスを無効にできます。 たとえば、次のコマンドを使用して adminis ユーザーを adminis グループから削除し、adminis2 グループに追加します。
[root@vbox test] sudo groupadd adminis2
[root@vbox test] sudo usermod -g adminis2 admini
[root@vbox test] id admini
uid=1057(admini) gid=1057(admini) groups=1054(adminis2)
[root@vbox test] sudo su admini -c 'ls dir0'
ls: cannot open directory dir0: Permission denied
[root@vbox test] sudo su admini -c 'cat dir0/file'
cat: dir0/file: Permission denied
[root@vbox test] sudo su admini -c 'nfs4_getfacl dir0/file'
Invalid filename: dir0/file