ディレクトリにデフォルトACLを適用すると、次の2つのシナリオでdefault:mask
または単にmask
が表示されます。
シナリオ1
-bash-4.2$ ls -ld test/
drwxr-x---. 2 test test 4096 Oct 15 19:12 test/
-bash-4.2$ setfacl -d -m u:arif:rwx test/
-bash-4.2$ getfacl --omit-header test
user::rwx
group::r-x
other::---
default:user::rwx
default:user:arif:rwx
default:group::r-x
default:mask::rwx
default:other::---
シナリオ2
-bash-4.2$ ls -dl dir/
drwxr-x---. 2 test test 4096 Oct 15 18:17 dir/
-bash-4.2$ getfacl dir
# file: dir
# owner: test
# group: test
user::rwx
group::r-x
other::---
-bash-4.2$ setfacl -m user:arif:rwx dir
-bash-4.2$ getfacl --omit-header dir
user::rwx
user:arif:rwx
group::r-x
mask::rwx
other::---
では、ここでmask
の目的は何ですか?
この3ビットACLシステムは、TRUSIXにルーツがあります。 FreeBSD、MacOS、AIX、Illumos、SolarisのNFS4スタイルのシステムなど、他のACLシステムは動作が異なり、このmaskアクセス制御エントリの概念はありません。
maskは、名前が示すように、ユーザーとユーザーのアクセス制御エントリによって付与されるmask out権限に適用されるマスクですグループ。これは、ファイル所有者や「その他」のエントリ以外のアクセス制御エントリによって付与される最大のアクセス許可です。その3ビットは、これらの他のエントリの3ビットとand
edされます。
したがって、たとえば、アクセス制御エントリによってユーザーに_rw-
_が付与されていても、マスクが_r--
_である場合、ユーザーは実際には_r--
_アクセスしか持っていません。逆に、ユーザーにアクセス制御エントリによって_--x
_のみが付与されている場合、rwx
のマスクは追加の権限を付与せず、ユーザーには_--x
_アクセス権のみが付与されます。
親ディレクトリのdefault maskは、その中に作成されるものに適用されるマスク設定です。それは継承の一形態です。
IEEE 1003.1eが標準になったことがなく、1998年に撤回されたのは残念です。実際には、19年後には、 Linux から FreeBSD)までの幅広いオペレーティングシステムが標準となっています。 to Solaris (後者の場合はNFS4スタイルのACLとともに)—実際に実装します。
IEEE 1003.1eワーキングドラフト#17は興味深い読み物になり、私はそれをお勧めします。付録B§23.3では、ワーキンググループは、古い_S_IRWXG
_グループ権限フラグに関してPOSIX ACLが機能するやや複雑な方法について、詳細な8ページの根拠を提供します。 (10年前にTRUSIXの人々がほぼ同じ分析を提供したことは注目に値します。)これはマスクの存在理由をカバーします。
chmod(…,000)
を使用して、ファイル、名前付きパイプ、デバイス、またはディレクトリへのすべてのアクセスを拒否できることを期待しています。 ACLが存在する場合、マスクがあり、古い_S_IRWXG
_がそれにマップされている場合にのみ、allユーザーおよびグループのアクセス許可がオフになります。これがない場合、古いファイルのアクセス許可を_000
_に設定しても、所有者以外のuser
またはgroup
エントリには影響せず、驚くべきことに、他のユーザーは引き続きオブジェクトにアクセスできます。 _chmod 000
_を使用してファイルの許可ビットを一時的にアクセス不可に変更してから再度変更するのは古いファイルロックメカニズムで、Unixがアドバイザリロックメカニズムを取得する前に使用されていました —ご覧のとおり—人々は今でも使用しています21世紀でも 。 (アドバイザリロックは、1990年代後半以降、setlock
などの移植可能なよく知られたツールを備えたスクリプトから簡単に使用できます。)
chmod go-rwx
_を実行でき、オブジェクトの所有者のみがオブジェクトにアクセスできることを期待しています。繰り返しになりますが、これはマスクがなく、古い_S_IRWXG
_権限がそれにマップされていない限り機能しません。それ以外の場合、そのchmod
コマンドは、所有者以外のuser
またはgroup
アクセス制御エントリをオフにせず、所有者以外のユーザーと所有者以外のグループがアクセスを保持するため所有者はがアクセスできると期待されているもののみです。そして再び —ご覧のとおり—この種類のchmod
コマンドは、まだ受け取られていた知恵でした 12年後。理論的根拠はまだ保持されています。
and
edされている代替システムでは、ほとんどの場合、ファイル許可フラグをrwxrwxrwx
にする必要があります。世界が書き込み可能なものだと思うものを見て文句を言う。or
edされた代替システムでは、前述のchmod(…,000)
問題が発生します。したがって、マスク付きのACLシステムです。