ディレクトリにデフォルトの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
?
答え1
何
この3桁のACLシステムはTRUSIXから派生しました。他のACLシステム(FreeBSD、MacOS、AIX、Illumos、SolarisのNFS4スタイルシステム)は異なる動作をし、このACLの概念はマスクアクセス制御項目がありません。
これマスク名前が示すように、アプリケーションです。マスキングアクセス制御項目は、ユーザーとグループに権限を付与します。ファイル所有者または「その他」エントリではなく、すべてのアクセス制御エントリから付与できる最大権限。これらの3ビットは、これらのand
他の項目の3ビットと一致します。
たとえば、ユーザーにrw-
アクセス制御エントリが付与されているがマスクがある場合、r--
そのユーザーは実際にはr--
アクセス権しか持っていません。逆に、ユーザーに--x
アクセス制御項目のみが付与されている場合、マスクは追加の権限を付与せず、rwx
ユーザーには--x
アクセス権限のみが付与されます。
これ基本マスク親ディレクトリには、生成されたコンテンツに適用されるマスク設定があります。これは継承の一形態です。
なぜ
残念ながら、IEEE 1003.1eは標準にならず、1998年に撤回されました。実際に19年が過ぎた今は広く普及したオペレーティングシステムだ。Linux渡すFreeBSD到着ソラリス(後者の場合はNFS4スタイルのACLと共に) - 実際の実装です。
IEEE 1003.1e作業ドラフト#17興味深く読んでおすすめです。付録B§23.3では、ワークグループは、レガシーグループ権限フラグに関してPOSIX ACLが機能するかなり複雑な方法に関する8ページの詳細な根拠を提供しますS_IRWXG
。 (TRUSIXの人々が10年前にほぼ同じ分析を提供したことは注目に値します。)これはマスクの存在理由を扱い、ここでは簡単に説明します。
- 従来のUnixアプリケーションは、ファイル、名前付きパイプ、デバイス、またはディレクトリへのすべてのアクセスを拒否できるようにしたいです
chmod(…,000)
。 ACLがあると、この機能はオフになります。みんなユーザーとグループの権限(マスクされていて以前のアイテムがマップされているS_IRWXG
場合)これがないと、以前のファイル権限を設定しても所有000
者やアイテムuser
にgroup
影響を与えず、驚くべきことに他のユーザーがまだそのオブジェクトにアクセスできるようになります。ファイルの許可ビットをアクセス禁止に一時的に変更して
chmod 000
再度変更することは、Unixがアドバイザリロックメカニズムを持つ前に使用されていた古いファイルロックメカニズムです。- ご覧のとおり - 21世紀にも人々はまだ使用しています。。 (setlock
1990年代後半から、推奨ロックは、移植可能でよく知られているツールを使用するスクリプトを介して簡単に使用できるようになりました。) - 既存のUnixスクリプトは実行されると予想され、
chmod go-rwx
最終的にオブジェクトの所有者だけがオブジェクトにアクセスできます。繰り返しますが、マスクがあり、以前の権限がそれにマップされていない場合はS_IRWXG
効果がありません。そうしないと、コマンドが非所有者またはアクセス制御エントリをchmod
閉じないため、所有者以外のユーザーと非所有グループがアクセス権を維持する可能性があります。特定のコンテンツへのアクセス権user
group
楽しみですねアクセスしやすいただ所有者に。それからまた- ご覧のとおり - この
chmod
コマンドは依然として受け入れられる知恵です。12年後。この真実はまだ有効です。 - マスキング機構がない他の方法にも欠点があります。
- ほとんどの場合、権限ビットは
and
ACLとは別に使用され、代替システムではファイル権限フラグが必要です。rwxrwxrwx
。 - 他のシステムの許可ビットをACLとは別に使用し、
or
ACLと一緒に使用すると、前述のchmod(…,000)
問題が発生する可能性があります。
したがって、ACLシステムにはマスクが付属しています。
追加読書
- クレイグ・ルビン(1989-08-18)。 Unixシステムのアクセス制御リスト機能選択の理論的根拠。 NCSC-TG-020-A.ダイアン出版。 ISBN 9780788105548。
- IEEEコンピュータ協会ポータブルアプリケーション標準委員会(1997年10月)。 情報技術標準ドラフト - POSIX(ポータブルオペレーティングシステムインタフェース) - パート1:システムアプリケーションプログラミングインタフェース(API) - 修正#:保護、監査、および制御インタフェース[C言語] IEEE 1003.1e.ドラフト 17.
- ウィンフリートランパー(1999-02-28)。 Posix.1eの概要
- https://unix.stackexchange.com/a/406545/5132
- https://unix.stackexchange.com/a/235284/5132
- POSIX ACLを適用するときにグループに権限を付与する方法は?
- Bashのファイルでアトミック書き込み操作を実行する