重要なポイント
- アクセス制御リスト (ACL) マスクは、ACL を認識しないプログラムとの互換性を確保し、ACL エントリを POSIX アクセス許可に変換します。
- ACL マスクは、所有するユーザー、グループ、または「その他」クラスではないユーザーまたはグループ オブジェクトに許可される最大のアクセス許可を表します。
- 新しい ACL エントリを追加すると、すべての名前付きユーザーまたはグループに許可される最大権限を反映するようにマスクが自動的に調整されます。
アクセス コントロール リスト (ACL) を使用していますが、マスクの概念について混乱していますか?あなたは一人じゃない。これらが何であるか、また Linux ファイル システムのアクセス許可とどのように相互作用するかを見て、この重要な概念を詳しく見てみましょう。
ACLマスクとは何ですか?
ACL マスクは、ACL を認識しないプログラムやユーティリティとのアクセス許可の相互運用性を確保する方法です。
ファイルまたはディレクトリの ACL マスクは、所有するユーザー、グループ、または の「その他」クラスではないユーザーまたはグループ オブジェクトに許可される 最大の アクセス許可に相当します。別の言い方をすると、下位互換性を確保するために、ACL エントリを POSIX 権限に 変換します 。
この記事で扱う新しく作成されたファイル、mysupersecretfile.txt を見てみましょう。
ls -l mysupersecretfile .txt
このような機密文書に対するアクセス許可は非常に簡単ですよね?
アクセス許可設定の後のドット (.) に注目してください。これは、ACL または ACL マスクとは関係のない SELinux コンテキストを示します。
わかりやすくするために、getfacl コマンドを使用して、ファイルの ACL エントリも調べてみましょう。
getfacl mysupersecretfile .txt
所有ユーザーおよびグループエントリーの現在の ACL エントリーは、ファイルの実際の POSIX 所有ユーザーおよび所有グループに直接マップされます。これは拡張 ACL エントリを持たないファイルでは正常であり、「最小限の ACL」と呼ばれます。
読み取り権限を持つ、manager というユーザーを ACL エントリとしてこのファイルに追加するリクエストを受け取ったとします。これは setfacl コマンドで実現します。次に、ls および getfacl コマンドを使用して、新しい ACL 権限を調べてみましょう。
setfacl -m u :manager :r mysupersecretfile .txt
ls -l mysupersecretfile .txt
getfacl mysupersecretfile .txt
ls コマンドのアクセス許可エントリの横に「+」記号が表示され、ファイルに関連付けられた ACL エントリがあることを示します。
getfacl コマンドの出力に マスク 行が表示されていますか?管理者ユーザーの拡張 ACL エントリに加えて、このマスク エントリが自動的に割り当てられます。これは必要なことです。これは、指定されたユーザーまたはグループ オブジェクト (ここでも、所有者ユーザーと所有グループ オブジェクトを除く) に許可される最大権限を表します。現時点では、読み取り権限は既存のマスクの読み取り権限と同じです。
次に、2 番目のリクエストである契約者から別のユーザーをファイルの ACL に追加しましょう。ただし、今回は読み取りおよび書き込み権限を与える必要があります。それがマスクにどのような影響を与えるかを見てみましょう。
setfacl -m u :contractor :rw mysupersecretfile .txt
getfacl mysupersecretfile .txt
ここで、マネージャ (r) ACL エントリに加えて、コントラクター (rw) エントリも表示されます。しかし、なぜマスクエントリが読み取りと書き込みに変更されたのでしょうか?
読み取りおよび書き込み権限を持つ請負業者ユーザーを追加すると、ACL マスクに影響を与えました。これは、上で述べたように、マスクが ACL ユーザーおよびグループ エントリに許可される 最大 権限に関連しているためです。契約者ユーザーの ACL エントリに書き込み権限を追加したため、マスクにも書き込み権限が与えられます。
ACL を操作すると、グループ クラスの権限の役割 ( ls -l コマンドの出力など) が ACL マスクを反映するために再利用されていることがわかります。ただし、グループ所有者のアクセス許可は「所有グループ」ACL エントリとして引き続き反映されるため、心配しないでください。
読み取り専用など、より少ないアクセス許可を持つ別のユーザーを追加した場合、そのユーザーはマスク アクセス許可を継承しないことに注意してください。請負業者ユーザーの ACL エントリを追加したときにマネージャー ユーザーが書き込みアクセス許可を取得しなかったのと同じです。
有効な権限
setfacl コマンドを使用して、マスク エントリのアクセス許可を手動で設定できます。これにより、ファイルに同時に設定されている指定ユーザーやグループのアクセス許可、またはファイルの既存ユーザーの ACL エントリを最小公倍数にフィルタリングできます。これは有効なアクセス許可と呼ばれます。
ファイルのマスクを読み取り専用に設定してから、ACL エントリをもう一度見てみましょう。
setfacl -m m ::r mysupersecretfile .txt
getfacl mysupersecretfile .txt
契約ユーザーの有効な権限を示すコメントから、読み取りおよび書き込み権限が付与されているにもかかわらず、実際には読み取り権限しかないことがわかります。マスクを変更するとこの問題が発生しました。 ls -l を使用してファイルを再度確認すると、グループ クラスの権限 (これもマスクを反映するために再利用されています) が変更されていることがわかります。
ls -l mysupersecretfile .txt
名前付きユーザーまたはグループ ACL エントリを追加したいが、マスクを再計算したくない場合は、setfacl と一緒に -n を 使用できます。これにより、追加する ACL が、マスクによって許可される最大のアクセス許可 (エントリの有効なアクセス許可で示される) に制限されます。ただし、これはデフォルトではありません。マスクは 強制的なアクセス制御 の形式ではないことに注意してください。以下でそれを試してみましょう。
setfacl -n -m u :milton :rwx mysupersecretfile .txt
getfacl mysupersecretfile .txt
デフォルトのマスク
ACL を使用する場合、デフォルト マスクの概念はデフォルト ACL エントリと非常に似ています。たとえば、デフォルトのマスクをディレクトリに追加すると、その中に新しく作成されたすべてのファイルとサブディレクトリは、同じマスク (およびデフォルトのマスク エントリ) を継承します。 setfacl コマンドで -d パラメーターを使用して、デフォルトのマスクを適用するだけです。
mkdir mysupersecretdirectory
setfacl -d -mm::rX mysupersecretdirectory/
getfacl mysupersecretdirectory/
mkdir mysupersecretdirectory/mysupersecretsubdirectory/
getfacl mysupersecretdirectory/mysupersecretsubdirectory/
デフォルトのマスク、さらに言えばデフォルトの ACL エントリは、ディレクトリにのみ適用できます。ディレクトリは、継承可能なエントリを適用するファイルやその他のディレクトリを内部に含めることができる唯一のオブジェクトであるためです。
「 Linux で ACL マスクを使用してファイルのアクセス許可を微調整する方法」に関するベスト動画選定!
ACL マスクは、ACL を操作しているプログラムの機能に関係なく、ACL のセキュリティが適切に処理されることを保証する方法です。
テクノロジー、ソフトウェア、セキュリティの概念が急速に進化し続ける中、私たちの多くにとって下位互換性が最も重要であり、新しい進歩とともに尊重されるべきであることを覚えておくことが重要です。もちろん、それは新しい付加機能を持たせないという意味ではなく、単にそれらの新しい付加機能が既存の標準に準拠する必要があることを意味します。





