LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問32
アクセスおよび権限制御の強化/Linux Access Control Lists によるアクセス制御/srv/project/report.txt にはアクセスACL(名前付きユーザーエントリと名前付きグループエントリを含む)が設定されている。`cp /srv/project/report.txt /backup/report.txt` を root で実行した場合の動作として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- Aコピー先にはコピー元と同じアクセスACLがそのまま引き継がれる
- Bコピー先にはコピー元の名前付きグループエントリだけが引き継がれる
- Ccp は既定ではACLを引き継がないため、コピー先のパーミッションは通常のモードビットだけになる
- Dコピー先にコピー元のACLが引き継がれるが、マスクエントリは 0777 にリセットされる
正解:C
解説
GNU cp は既定ではACLを保持しません。ACLを含めてコピーするには -a(--archive)または --preserve=all を指定する必要があります。-p(--preserve)はパーミッション・所有者・タイムスタンプを保持しますが、ACLは保持しません。ACLは拡張属性として保存されているため、--preserve=xattr を含む指定が必要です。このため、既定の cp でコピーした場合、コピー先のパーミッションはumaskの影響を受けた通常のモードビットだけになります。
選択肢ごとの解説
- A誤り。cp は既定ではACLを引き継がない。ACLを保持してコピーするには -a または --preserve=all のような追加オプションが必要である。
- B誤り。cp は名前付きグループエントリを選択的に引き継ぐような動作はしない。既定では一切のACLエントリを引き継がない。
- C正しい。cp は既定ではACLを保存しないため、コピー先はモードビットだけの通常のパーミッションになる。ACLを含めてコピーするには -a か --preserve=all を指定する。
- D誤り。cp の既定動作ではACL自体が引き継がれないため、マスクエントリのリセットという問題も生じない。そのような部分コピーの動作もしない。