LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問1
アクセスおよび権限制御の強化/Linux Access Control Lists によるアクセス制御名前付きユーザーのエントリ(user:alice:rwx)を含むアクセスACLが設定されたファイルに対して、chmod g-w を実行した。このときの動作として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- A所有グループのエントリだけから書き込み権が外れ、マスクと名前付きユーザーのエントリは変わらない
- Bマスクエントリから書き込み権が外れ、名前付きユーザーや所有グループの実効権限からも書き込みが除かれる
- CACLを持つファイルにはchmodの変更が効かないため、パーミッションもACLもまったく変化しない
- D拡張ACLのエントリがすべて削除され、ファイルは通常の所有者・グループ・その他の権限だけに戻る
正解:B
解説
マスク(mask)エントリを持つACLでは、ls -lやchmodが扱うグループのパーミッションビットは所有グループではなくマスクエントリに対応します。そのためchmod g-wはマスクから書き込み権を外します。マスクは名前付きユーザー・名前付きグループ・所有グループの各エントリに対する上限として働くので、user:alice:rwxのエントリ自体は残っていても、getfaclでは「#effective:r-x」のように実効権限が絞られて表示されます。ACLエントリを消したい場合はsetfacl -xや-bを使います。
選択肢ごとの解説
- A誤り。マスクを持つACLでは、グループのパーミッションビットはマスクエントリに対応するため、chmodで変わるのはマスクです。所有グループのエントリだけを変えるにはsetfacl -m g::r-x のように指定します。
- B正しい。chmodのグループビットはマスクに反映され、マスクが名前付きエントリと所有グループの実効権限の上限になります。
- C誤り。ACLを持つファイルでもchmodは有効で、パーミッションビットに対応するACLエントリ(所有者・マスク・その他)が書き換わります。
- D誤り。chmodは拡張ACLのエントリを削除しません。すべての拡張エントリを消すのはsetfacl -b(--remove-all)です。