このトピックでは、NFSv4 アクセス制御リスト (ACL) および POSIX ACL の機能について説明します。
NFSv4 ACLの特徴
タイプが allow のアクセス制御エントリ (ACE) のみサポートされています。 拒否、監査、およびアラームACEはサポートされていません。
ACEを拒否すると、アクセス制御の複雑さが増します。 ほとんどの場合、複雑さは混乱を招き、潜在的なセキュリティリスクを高めます。 拒否ACEは使用しないことを推奨します。 拒否ACEが推奨されない理由の詳細については、「FAQ」をご参照ください。
ネットワークファイルシステム (NFS) ファイルシステムでは、監査およびアラームACEを使用できません。 ただし、ファイルシステムを監査し、NASコンソールで監査結果に基づいてアラートを設定できます。
ファイルまたはディレクトリにACLが設定されていない場合、定義済みのファイルモード作成マスク (umask) に対応するデフォルトのACLが適用されます。 例:
touch file
コマンドを実行してファイルを入力します。ls -l file
コマンドを実行して、ファイルに対する権限を表示します。-rw-r--r--. 1 root root 0 May 6 14:27 file
nfs4_getfacl file
コマンドを実行して、ファイルに対する現在のACL権限を表示します。# file: file A::OWNER@:rwatTnNcCy A::GROUP@:rtncy A::EVERYONE@:rtncy
ACL は、ACE を順番に記述したもので、重複する ACE は取り除かれます。 このスキームは、ACLで定義された権限が明確で有益であることを保証します。
新しいACEと既存のACEの両方を同じオブジェクトに適用し、既存のACEが親オブジェクトから継承された場合、新しいACEの権限は既存のACEの権限を上書きします。 例:
プリンシパルOWNER、GROUP、およびEVERYONEを含むACEは、ACLの先頭にこのシーケンスでキューに入れられます。 これらのACEは、他のACEよりも優先される。
nfs4_getfacl file
コマンドを実行して、ファイルのACL権限を順番に表示します。# file: file A::OWNER@:rwaxtTnNcCy A::GROUP@:rtncy A::EVERYONE@:rtncy A::1001:rwaxtTNcCy
名前が 1009 のユーザープリンシパルの次の ACL に読み取りおよび書き込み権限の ACE を追加します。 ACE は、定義済みの順序に基づいて 、名前が 1001 のユーザープリンシパルに定義されている ACE の後に配置されます。
以下のコマンドを実行します。
nfs4_setfacl -a A::1009:X file nfs4_getfacl file
サンプルコマンド出力:
# file: file A::OWNER@:rwaxtTcCy A::GROUP@:rwatcy A::EVERYONE@:tcy A::1001:rwaxtTNcCy A::1009:waxtTncCy
1009という名前のユーザープリンシパルのACLへの実行権限を含む新しいACEを追加します。 システムは、1009のユーザープリンシパルの既存のACEに実行権限を自動的にマージします。
以下のコマンドを実行します。
nfs4_setfacl -a A::1009:W file nfs4_getfacl file
サンプルコマンド出力:
# file: file A::OWNER@:rwaxtTcCy A::GROUP@:rwatcy A::EVERYONE@:tcy A::1001:rwaxtTNcCy A::1009:waxtTncCy
1009という名前のユーザープリンシパルを含むACEにfおよびdの継承フラグを追加します。 次に、システムはACEを2つのACEに分割する。 1つのACEには、継承のみのACEを示すiという名前の追加継承フラグがあります。 もう1つのACEは、継承フラグを持たないファイルオブジェクトにのみ適用されます。 既存のACEの継承タイプが2つのACEのうちの1つのタイプと一致する場合、システムは既存のACEをこのACEと組み合わせて1つのACEにする。
以下のコマンドを実行します。
nfs4_setfacl -a A:fd:1009:R file nfs4_getfacl file
サンプルコマンド出力:
# file: file A::OWNER@:rwaxtTcCy A::GROUP@:rwatcy A::EVERYONE@:tcy A::1001:rwaxtTNcCy A::1009:rwaxtTNcCy A:fdi:1009:r
すべてのACEを継承できます。
たとえば、OWNERプリンシパルには書き込み権限があり、GROUPプリンシパルには読み取り権限があり、EVERYONEプリンシパルにはdirディレクトリに対する権限がありません。
以下のコマンドを実行します。
nfs4_getfacl dir
サンプルコマンド出力:
# file: dir A::OWNER@:rwaDxtTnNcCy A::GROUP@:rxtcy A::EVERYONE@:tncy
という名前のユーザープリンシパルにdirディレクトリの読み取り、書き込み、および実行権限を付与1000 ACEを追加します。 ACE には、f および d 継承フラグも指定されています。
以下のコマンドを実行します。
nfs4_setfacl -a A:fd:1000:rwx dir nfs4_getfacl dir
サンプルコマンド出力:
# file: dir A::OWNER@:rwaDxtTcCy A::GROUP@:rxtcy A::EVERYONE@:tcy A::1000:rwx A:fdi:1000:rwx
dirディレクトリにファイルまたはサブディレクトリを作成すると、ファイルまたはサブディレクトリは自動的にdirディレクトリからすべてのACEを継承します。
dirディレクトリにファイルを作成する
以下のコマンドを実行します。
touch dir/file nfs4_getfacl dir/file
サンプルコマンド出力:
# file: dir/file A::OWNER@:rwatTcCy A::GROUP@:rwatcy A::EVERYONE@:rwatcy A::1000:rwx
dirディレクトリにサブディレクトリを作成する
以下のコマンドを実行します。
mkdir dir/subdir nfs4_getfacl dir/subdir
サンプルコマンド出力:
# file: dir/subdir A::OWNER@:rwaDxtTcCy A::GROUP@:rwaDxtcy A::EVERYONE@:rwaDxtcy A:fdi:1000:rwx
説明EVERYONEプリンシパルに最小限の権限を付与することを推奨します。 上記のいずれかのコマンドを実行する前に、
umask 777
コマンドを実行することを推奨します。 このコマンドは、ファイルまたはディレクトリの作成時にファイルまたはディレクトリへのアクセスが許可されないようにします。 詳細については、「」をご参照ください。umaskがファイルの実行権限を変更しないのはなぜですか?Linuxが関数を呼び出してファイルまたはディレクトリを作成する場合、事前定義されたumaskがリクエストパラメーターとして使用されます。 子オブジェクトの最終的なACLは、RFC 7530の標準で指定されているように、継承されたACL (親から子) とumaskの重複から取得できます。 umaskのグループビットを標準に基づいて変更する場合、各グループのACLに含まれる権限は、グループビットで定義されている権限以下である必要があります。 ただし、これにより、グループの継承が無効になります。 たとえば、サブファイルにグループA:RWXを継承させたいが、事前定義されたumask GROUPS:Rがリクエストパラメーターとして使用されている場合、グループaのACLに含まれるACEはグループA: Rに変更されます。実際のビジネスシナリオでは、OWNER、GROUP、EVERYONEのプリンシパルを含むACLに対してのみumasksを変更することをお勧めします。 これにより、潜在的な問題を防ぎ、セマンティクスが明確になります。 グループから権限を削除するには、グループに関連付けられているACEを削除することをお勧めします。
複数の独立したインスタンス間で、ユーザー名またはグループ名とユーザーID (UID) またはグループID (GID) との間のマッピングを管理する必要があります。
Apsara File Storage NAS NFSは、ユーザー名の代わりにIPセキュリティグループを使用してユーザーを認証します。 NFSv4 ACLを設定すると、ACEに含まれるUIDまたはGIDがLinuxに保存されます。 シェル内のオブジェクトのACLを印刷すると、Linuxは自動的に /etc/passwdファイルを読み込み、UIDまたはGIDをユーザー名またはグループ名に変換します。 複数のインスタンス間で、ユーザー名またはグループ名とUIDまたはGIDの間のマッピングを管理する必要があります。 各ユーザー名が対応するUIDにマップされ、各グループ名が対応するGIDにマップされていることを確認する必要があります。
拡張属性を使用してNFSv4 ACLを印刷できます。
以下のコマンドを実行します。
getfattr -n system.nfs4_acl file
サンプルコマンド出力:
# file: file system.nfs4_acl=0sAAAABgAAAAAAAAAAABYBhwAAAAZPV05FUkAAAAAAAAAAAAAAABIAhwAAAAZHUk9VUEAAAAAAAAAAAAAAABIAhwAAAAlFVkVSWU9ORUAAAAAAAAAAAAAAAAAAAAEAAAAEMTAwMAAAAAAAAAALAAAAAwAAAAQxMDAwAAAAAAAAAEAAFgGQAAAABTEwMDAxAAAA
cpなどのツールを使用してNFSv4 ACLを移行できます。
NASでは、cp、tar、およびrsyncツールを使用してNFSv4 ACLを移行できます。 詳細については、「How to preserve NFS v4 ACLs via extended attributes when copying file」 をご参照ください。
次の
cp -- preserve=xattr file1 file2
コマンドは、file1をfile2にコピーするときに、file1のACLをコピーします。cp -ar dir1 dir2
コマンドは、dir1をdir2にコピーするときにdir1のACLをコピーします。説明rsyncツールのバージョンが3.1.2より前の場合、NFSv4 ACLの移行に失敗する可能性があります。
例1: ファイルのACLを移行します。
nfs4_getfacl file1
コマンドを実行して、file1のACL権限を表示します。# file: file1 A::OWNER@:rwatTcCy A::GROUP@:rwatcy A::EVERYONE@:rwatcy A::1000:rtncy
cp -- preserve=xattr file1 file2
コマンドを実行して、file1のACLをfile2にコピーします。nfs4_getfacl file2
コマンドを実行して、file2のACL権限を表示します。# file: file2 A::OWNER@:rwatTcCy A::GROUP@:rwatcy A::EVERYONE@:rwatcy A::1000:rtncy
例2: ディレクトリのACLを移行します。
nfs4_getfacl dir1
コマンドを実行して、dir1のACL権限を表示します。# file: dir1 A::OWNER@:rwaDxtTnNcCy A::GROUP@:rxtncy A::EVERYONE@:rxtncy A::1000:rxtncy
cp -ar dir1 dir2
コマンドを実行して、dir1のACLをdir2にコピーします。nfs4_getfacl dir2
コマンドを実行して、dir2のACL権限を表示します。# file: dir2 A::OWNER@:rwaDxtTnNcCy A::GROUP@:rxtncy A::EVERYONE@:rxtncy A::1000:rxtncy
NFSv4 ACLはumasksと対話できます。 オブジェクトのACLを変更すると、オブジェクトのumaskが変更されます。 オブジェクトのumaskを変更すると、オブジェクトのACLも変更されます。
たとえば、ファイルオブジェクトのumaskが0666の場合、次のコマンドを実行してファイルのアクセス許可とACLのアクセス許可を表示できます。
ls -l file
コマンドを実行して、ファイルに対する権限を表示します。-rw-rw-rw-. 1 root root 0 May 3 2019 file
nfs4_getfacl file
コマンドを実行して、ファイルのACL権限を表示します。# file: file A::OWNER@:rwatTcCy A::GROUP@:rwatcy A::EVERYONE@:rwatcy
所有者ビットを変更してumaskに実行権限を追加すると、ownerプリンシパルを含むACEにも実行権限が追加されます。 例:
chmod u + x file
コマンドを実行して、OWNERプリンシパルに実行権限を付与します。ls -l file
コマンドを実行して、ファイルに対する権限を表示します。-rwxrw-rw-. 1 root root 0 May 3 2019 file
nfs4_getfacl file
コマンドを実行して、OWNERプリンシパルに実行権限が付与されていることを確認します。# file: file A::OWNER@:rwaxtTcCy A::GROUP@:rwatcy A::EVERYONE@:rwatcy
GROUPプリンシパルを含むACEに実行権限を追加すると、実行権限もumaskに追加されます。
nfs4_setfacl -a A::GROUP @:x file
コマンドを実行して、GROUPプリンシパルに実行権限を付与します。ls -l file
コマンドを実行して、ファイルに対する権限を表示します。-rwxrwxrw-. 1 root root 0 May 3 2019 file
説明ACLとumasksの間の相互作用では、EVERYONEプリンシパルは他のクラスと同等です。 他のクラスを変更すると、変更はEVERYONEプリンシパルにも適用されます。 この操作は、権限のセマンティクスにわずかな影響を与えます。 たとえば、現在のumaskはrw -------- です。
chmod o + r
コマンドを実行すると、ファイル所有者とグループメンバーを含むすべてのユーザーに読み取り権限が付与されます。 これは、EVERYONEプリンシパルを含むACEに読み取り権限が追加されているためです。 デフォルトのumaskに変更が適用されない場合、chmod o + rコマンドを実行した後も、所有者クラスとグループクラスには読み取り権限がありません。NFSv4 ACLに変更が適用されない場合、ファイルモードの他のクラスのセマンティクスは変更されません。 NFSv4 ACLを変更すると、他のクラスのセマンティクスはEVERYONEプリンシパルのセマンティクスに変更され、最新のセマンティクスは変更されません。 NFSv4 ACLと一緒にumasksを使用しないことを推奨します。
umaskとNFSv4 ACEの関係。
chmodコマンドを実行してumaskを変更すると、NFSv4 ACLに変更が適用されます。 次の表に、変更内容を示します。
その他
モードその他
NFSv4 ACL EVERYONE on file
NFSv4 ACL EVERYONE on dir
---
A :: EVERYONE@:tncy
A :: EVERYONE@:tncy
-- x
A::EVERYONE @:xtncy
A::EVERYONE @:xtncy
-w-
A:: みんな @:watncy
A:: みんな @:waDtncy
-wx
A:: みんな @:waxtncy
A:: みんな @:waDxtncy
r --
A::EVERYONE@:rtncy
A::EVERYONE@:rtncy
r-x
A::EVERYONE @:rxtncy
A::EVERYONE @:rxtncy
rw-
A::EVERYONE @:rwatncy
A::EVERYONE @:rwaDtncy
rwx
A:: みんな @:rwaxtncy
A:: みんな @:rwaDxtncy
グループ
モードグループ
NFSv4 ACLグループファイル
NFSv4 ACLグループon dir
---
A :: GROUP@:tncy
A :: GROUP@:tncy
-- x
A:: グループ @:xtncy
A:: グループ @:xtncy
-w-
A:: グループ @:watncy
A:: グループ @:waDtncy
-wx
A:: グループ @:waxtncy
A:: グループ @:waDxtncy
r --
A::GROUP@:rtncy
A::GROUP@:rtncy
r-x
A:: グループ @:rxtncy
A:: グループ @:rxtncy
rw-
A:: グループ @:rwatncy
A:: グループ @:rwaDtncy
rwx
A:: グループ @:rwaxtncy
A:: グループ @:rwaDxtncy
所有者
モード所有者
NFSv4 ACL OWNER on file
dirのNFSv4 ACL所有者
---
A :: OWNER@:tTnNcCy
A :: OWNER@:tTnNcCy
-- x
A:: 所有者 @:xtTnNcCy
A:: 所有者 @:xtTnNcCy
-w-
A:: 所有者 @:watTnNcCy
A:: オーナー @:waDtTnNcCy
-wx
A:: 所有者 @:waxtTnNcCy
A:: 所有者 @:waDxtTnNcCy
r --
A:: 所有者 @:rtTnNcCy
A:: 所有者 @:rtTnNcCy
r-x
A:: 所有者 @:rxtTnNcCy
A:: 所有者 @:rxtTnNcCy
rw-
A::OWNER@:rwatTnNcCy
A:: 所有者 @:rwaDtTnNcCy
rwx
A::OWNER@:rwaxtTnNcCy
A::OWNER@:rwaDxtTnNcCy
nfs4_setfaclコマンドを実行してNFSv4 ACLに含まれるファイル権限のみを変更し、wa権限がすべてのファイルに適用されない場合、w権限はumaskに表示されません。
nfs4_setfaclコマンドを実行してNFSv4 ACLに含まれるディレクトリ権限のみを変更し、waD権限がすべてのディレクトリに適用されていない場合、書き込み権限はumaskに表示されません。
Dx権限がディレクトリのNFSv4 ACLに含まれている場合、w権限はumaskに表示されません。 ディレクトリにサブファイルとサブディレクトリを作成できる場合、wとxの権限はumaskに含まれます。
nfs4_setfaclコマンドを実行して権限を設定する場合は、RWXを大文字で指定することを推奨します。 大文字のRWXは、umaskのrwxに自動的にマップされます。 これにより、NFSv4 ACLとumaskの間の互換性の問題を防ぐことができます。
NFSv4 ACLには、umaskよりも多くのアクセス許可のセットがあります。 各許可ビットは、固有の機能を果たす。 一部の権限は、他の権限と組み合わされない限り、単独では有効になりません。 さらに、いくつかの許可ビットの機能は、他の許可ビットによって表現されなければならない。 異なるファイルおよびディレクトリに対する同じ許可ビットは、異なる機能を有し得る。 ファイルとディレクトリのNFSv4 ACLの詳細については、「NFSv4 ACL」をご参照ください。
説明OWNERプリンシパルのデフォルトの最小特権はtTnNcCyです。
GROUPプリンシパルとEVERYONEプリンシパルのデフォルトの最小特権はtncyです。
NFSv4 ACL と POSIX ACL 間の相互作用がサポートされています。
NFSv4 ACLを持つNFSv3ファイルシステムをマウントできます。 次いで、これらのNFSv4 ACLをPOSIX ACLに変換する。 POSIX ACLを持つNFSv4ファイルシステムをマウントすることもできます。 次いで、これらのPOSIX ACLは、NFSv4 ACLに変換される。
説明POSIX ACL のセマンティクスは、NFSv4 ACL のセマンティクスとは異なります。 たとえば、POSIX ACLに適用される継承ルールは、ファイルやディレクトリを区別しません。 NFSv4 ACLには、POSIX ACLよりも多くの権限があります。 POSIX ACLには、読み取り、書き込み、および実行権限のみがあります。 潜在的な問題を防ぐために、NFSv4 ACLまたはPOSIX ACLのいずれかを使用することを推奨します。
dir0ディレクトリにNFSv4 ACLを設定する場合は、次の権限が必要です。
次のコマンドを実行して、dir0に対する権限を取得します。
sudo nfs4_getfacl dir0
サンプルコマンド出力:
A::OWNER@:tTnNcCy A::GROUP@:tncy A::EVERYONE@:tncy A:fdi:EVERYONE@:tncy A:fdi:OWNER@:tTnNcCy A:fdi:GROUP@:tncy A:g:19064:rxtncy A:g:19065:rwaDxtTnNcCy A:fdig:19064:rxtncy A:fdig:19065:rwaDxtTnNcCy
dir0ディレクトリにPOSIX ACLを設定する場合は、次の権限が必要です。
以下のコマンドを実行します。
sudo getfacl dir0
サンプルコマンド出力:
user::--- group::--- group:players:r-x group:adminis:rwx mask::rwx other::--- default:user::--- default:group::--- default:group:players:r-x default:group:adminis:rwx default:mask::rwx default:other::---
dir0/fileファイルにNFSv4 ACLを設定する場合は、次の権限が必要です。
以下のコマンドを実行します。
sudo nfs4_getfacl dir0/file
サンプルコマンド出力:
A::OWNER@:tTnNcCy A::GROUP@:tncy A::EVERYONE@:tncy A:g:19064:rxtncy A:g:19065:rwaxtTnNcCy
dir0/fileファイルにPOSIX ACLを設定する場合は、次の権限が必要です。
以下のコマンドを実行します。
sudo getfacl dir0/file
サンプルコマンド出力:
user::--- group::--- group:players:r-x group:adminis:rwx mask::rwx other::---
NFSv4 ACLの数は限られています。
デフォルトでは、NASは各ファイルシステムで最大100,000の異なるACLをサポートします。 各 ACL には、最大 500 個の ACE を記述できます。
説明ACLまたはACEの制限を超えないことを推奨します。 そうしないと、権限を確認するためにより多くの時間とリソースが消費されます。
POSIX ACLの特徴
他のクラスのユーザーに対して指定された権限は、全員に適用されます。
全員には、各ACEに関連する所有者、グループ、およびユーザーが含まれます。 他のクラスは、NFSv4 ACLのEVERYONEプリンシパルに等しい。
説明他のクラスのユーザーには、最小限の権限を付与することを推奨します。
たとえば、以下の ACL がファイルmyfile に設定されているとします。 ACEには、書き込み権限を持たないaliceという名前のユーザーが含まれていますが、権限は他のクラスのユーザーに指定されているため、書き込み権限はACEに反映されます。 例:
以下のコマンドを実行します。
getfacl myfile
サンプルコマンド出力:
# file: myfile # owner: root # group: root user::rw- user:alice:r-- group::r-- mask::r-- other::rw-
ACLによって設定された権限は、
chmod
コマンドを実行しても変更されません。説明POSIX ACLが適用されるファイルのumaskは変更しないことを推奨します。 POSIX ACLを変更することで、ファイルの権限を設定できます。
たとえば、プレイヤーグループにmyfileファイルの読み取りおよび書き込み権限を付与するACEです。 例:
以下のコマンドを実行します。
getfacl myfile
サンプルコマンド出力:
# file: myfile # owner: root # group: root user::rw- user:player:rw- group::rw- group:players:rw- mask::rw- other::---
chmod g-w myfile
またはchmod u-w myfile
コマンドでは、プレーヤーユーザーまたはプレーヤーグループに付与されている権限は変更されません。 これはPOSIX ACL標準とは異なります。 ただし、これにより、umaskを使用して権限を変更した後、POSIX ACLによって非予約ユーザーに付与される権限が同じになるようになります。 非予約ユーザーには、所有者、グループ、およびその他のクラスのユーザーを除くすべてのユーザーが含まれます。 例:以下のコマンドを実行します。
getfacl myfile
サンプルコマンド出力:
# file: myfile # owner: root # group: root user::r-- user:player:rw- group::r-- group:players:rw- mask::rw- other::---
ACLのグループまたは他のクラスに実行権限が付与されていない場合、ACLの実行権限は無効です。
ルールはLinuxで事前定義されています。 実行操作は、NASのバックエンドによって許可されます。 ただし、ACLの実行権限が有効になるようにするには、グループまたは他のクラスに実行権限を付与する必要があります。
たとえば、グループおよびその他のクラスにmyfileファイルに対する実行権限がない場合、プレーヤーユーザーはファイルを実行できません。 例:
以下のコマンドを実行します。
getfacl myfile
サンプルコマンド出力:
# file: myfile # owner: root # group: root user::rw- user:player:r-x group::r-- mask::r-x other::r--
グループクラスに実行権限を付与すると、プレイヤーユーザーにも実行権限が反映されます。 例:
以下のコマンドを実行します。
getfacl myfile
サンプルコマンド出力:
# file: myfile # owner: root # group: root user::rw- user:player:r-x group::r-x mask::r-x other::r--
NFSv3ファイルシステムに存在するディレクトリに対して継承可能なNFSv4 ACLを構成する場合、これらの設定はPOSIX ACL標準に準拠していない可能性があります。
ファイルに適用される継承ルールは、NFSv4 ACLのディレクトリに適用される継承ルールとは異なります。 POSIX ACL のファイルとディレクトリの両方に同じ継承規則が適用されます。
説明潜在的な問題を防ぐために、NFS4 ACLまたはPOSIX ACLをNFSファイルシステムに適用することを推奨します。
umaskは変更できません。
POSIX ACLのumaskは、すべてのユーザーおよびグループの権限または操作によって生成されます。 マスクには実用的な意味はなく、変更できません。
複数のインスタンス間で、ユーザー名またはグループ名とUIDまたはGIDの間のマッピングを管理する必要があります。
Apsara File Storage NAS NFSは、ユーザー名の代わりにIPセキュリティグループを使用してユーザーを認証します。 POSIX ACLを設定すると、ACEに含まれるUIDまたはGIDがLinuxに保存されます。 シェル内のオブジェクトのACLを印刷すると、Linuxは自動的に /etc/passwdファイルを読み込み、UIDまたはGIDを実際のユーザー名またはグループ名に変換します。 複数のインスタンス間で、ユーザー名またはグループ名とUIDまたはGIDの間のマッピングを管理する必要があります。 各ユーザー名が対応するUIDにマップされ、各グループ名が対応するGIDにマップされていることを確認する必要があります。
拡張属性を使用してPOSIX ACLを印刷できます。
以下のコマンドを実行します。
getfattr -n system.posix_acl_access file
サンプルコマンド出力:
# file: file system.posix_acl_access=0sAgAAAAEAAAD/////AgAFACAEAAAEAAAA/////xAABQD/////IAABAP////8=
cpなどのツールを使用してPOSIX ACLを移行できます。
NASでは、cp、tar、およびrsyncツールを使用してPOSIX ACLを移行できます。 詳細については、「How to preserve NFS v4 ACLs via extended attributes when copying file」 をご参照ください。
次の
cp -- preserve=xattr file1 file2
コマンドは、file1をfile2にコピーするときに、file1のACLをコピーします。cp -ar dir1 dir2
コマンドは、dir1をdir2にコピーするときにdir1のACLをコピーします。説明rsyncツールのバージョンが3.1.2より前の場合、POSIX ACLの移行に失敗する可能性があります。
例1: ファイルのACL権限を移行します。
getfacl file1
コマンドを実行して、file1のACL権限を表示します。# file: file1 # owner: root # group: root user::rw- user:player:r-- group::r-- mask::r-- other::r--
cp -- preserve=xattr file1 file2
コマンドを実行して、file1のACLをfile2にコピーします。getfacl file2
コマンドを実行して、file2のACL権限を表示します。# file: file2 # owner: root # group: root user::rw- user:player:r-- group::r-- mask::r-- other::r--
例2: ディレクトリのACLを移行します。
getfacl dir1
コマンドを実行して、dir1のACL権限を表示します。# file: dir1 # owner: root # group: root user::rwx user:player:r-x group::r-x mask::r-x other::r-x
cp -ar dir1 dir2
コマンドを実行して、dir1のACLをdir2にコピーします。getfacl dir2
コマンドを実行して、dir2のACL権限を表示します。# file: dir2 # owner: root # group: root user::rwx user:player:r-x group::r-x mask::r-x other::r-x
POSIX ACLの数は限られています。
デフォルトでは、NASは各ファイルシステムで最大100,000の異なるACLをサポートします。 各 ACL には、最大 500 個の ACE を記述できます。
説明ACLまたはACEの制限を超えないことを推奨します。 そうしないと、権限を確認するためにより多くの時間とリソースが消費されます。
よくある質問
タイプが deny の ACE がサポートされないのはなぜですか。
ACL 内では、ACE の位置が重要な意味を持つためです。
NFSv4 ACL に存在する ACE の順序はランダムです。 タイプが deny の ACE は、NFSv4 ACL の任意の位置に配置できます。 例えば、ACLは、2つのACE: A::Alice:rおよびD::Alice:rを含む。 ACEの位置は、Aliceという名前のユーザーが書き込み許可を持っているかどうかを決定します。
説明ACL を設定する際は、各 ACE の位置を考慮する必要があります。
ACL内のACEの数は急激に増加しています。
ACL内のACEは、ACEを配列することが必須ではないため、結合および重複排除が困難であり得る。 ACE の数は、長い期間が経過すると数 10 または数 100 まで増加する場合があります。 これらの ACE によって生成される最終的なアクセス権限を管理するには、それぞれの ACE を確認する必要があります。 チェックプロセスは精力的で時間がかかります。
umaskとACLの間の相互作用は、拒否ACEが適用された後、より複雑になります。 これは、拒否機能がumaskに存在しないためです。
deny ACEを使用できる場合は、umaskを変更するときに複数のACEをACLに追加する必要があります。 たとえば、umaskを -rw-rw-rwに変更する場合は、次のACEをACLに追加する必要があります。 ACL の先頭に ACE を順番に追加する必要があります。
A::OWNER@:rw D::OWNER@:x A::GROUP@:rw D::GROUP@:x A::EVERYONE@:rw D::EVERYONE@:x
deny ACEが使用できない場合は、すべてのクラスと他のクラスのACEを区別しないで、ACEを並べ替えて重複排除できます。 umaskを変更すると、所有者、グループ、およびすべてのクラスのACEを次のコンテンツに変更することでACLを変更できます。
A::OWNER@:rw A::GROUP@:rw A::EVERYONE@:rw
NFSv4 ACL と POSIX ACL 間の変換はサポートされていません。
POSIX ACL は、タイプが deny の ACE をサポートしていません。 deny ACEがNFSv4 ACLに含まれている場合、ACLをPOSIX ACLに変換することはできません。