"chattr +a"はディレクトリに対して何をしますか?

Linuxファイルのプロパティはa通常、ファイルに適用可能なものとして文書化されています。

chattr(1) マンページ:

「a」属性が設定されているファイルは書き込みモードでのみ開くことができます。

ext4 Wiki:

0x20ファイルは追加のみ可能ですEXT4_APPEND_FL)。

私の質問は次のとおりです

  • ファイルのみchattr +a
  • 新しいサブディレクトリとファイルで繰り返されますか?

ベストアンサー1

これ追加のみフラグ(chattr +a)はディレクトリの削除を防ぎます。井戸だけでなくこのディレクトリ内に直接作成されたファイルとディレクトリ:

テストディレクトリとファイルを作成します。

# mkdir     /tmp/foo
# chattr +a /tmp/foo

このディレクトリは削除できません。

# rmdir     /tmp/foo
rmdir: failed to remove ‘/tmp/foo’: Operation not permitted

これで、その中にファイルとディレクトリを作成します。

# touch     /tmp/foo/bar
# mkdir     /tmp/foo/baz

確認してみましょう:

# lsattr -d /tmp/foo /tmp/foo/ba*
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/bar
-------------e-- /tmp/foo/baz

何かを取り除いてみてください:

# rm     /tmp/foo/bar
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
# rmdir  /tmp/foo/baz
rmdir: failed to remove ‘/tmp/foo/baz’: Operation not permitted
rm -Rf /tmp/foo
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

最後に、サブサブディレクトリとサブディレクトリのファイル保護されていない:

# mkdir            /tmp/foo/baz/bat
# touch            /tmp/foo/baz/baff
# rm --verbose -Rf /tmp/foo/baz
removed directory: ‘/tmp/foo/baz/bat’
removed ‘/tmp/foo/baz/baff’
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

/tmp/foo追加のフラグだけがあることをもう一度参照してください。

# lsattr -d  /tmp/foo /tmp/foo/baz
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/baz

おすすめ記事