過去問ドリル

LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問21

アクセスおよび権限制御の強化/Linux Access Control Lists によるアクセス制御

ディレクトリ /srv/proj には、アクセスACLとデフォルトACLの両方が設定されている。今後この中に作成されるファイルやディレクトリへのACLの継承だけを止め、/srv/proj 自身のアクセスACLはそのまま残したい。実行するコマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)

正解:B

解説

setfacl の -k(--remove-default)は、ディレクトリのデフォルトACLだけを削除し、アクセスACLには手を付けません。デフォルトACLが無くなると、以後に作成されるファイルやディレクトリはACLを継承しなくなります。一方、-b(--remove-all)は拡張ACLのエントリをすべて削除するため、アクセスACLの名前付きエントリも失われます。ACLを持つファイルは ls -l でパーミッションの後ろに「+」が表示されるので、削除後の状態は getfacl とあわせて確認できます。

選択肢ごとの解説

  • A誤り。-b は拡張ACLのエントリをすべて削除するため、デフォルトACLだけでなくアクセスACLの名前付きエントリも消えてしまいます。
  • B正しい。-k はデフォルトACLだけを削除するため、継承は止まり、ディレクトリ自身のアクセスACLはそのまま残ります。
  • C誤り。-x u:alice はアクセスACLから名前付きユーザー alice のエントリを削除する指定で、デフォルトACLは残るため継承は止まりません。
  • D誤り。-n はマスクを再計算しない指定で、-m g:dev:rx はエントリの追加・変更です。デフォルトACLの削除にはなりません。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く