$ HOME内のフォルダを誤って削除しないように保護したい。 chattr +i
を適用しましたが、最後が再帰的に適用されていることに気づきました。そのため、実際にフォルダを削除することはできませんが、書き込むこともできません。
また、chmod 1775
でスティッキービットを適用し、chown root foldername
でフォルダーの所有権を変更しようとしました。通常、スティッキービットを有効にすると、フォルダの所有者だけが削除できますが、奇妙なことに、私の場合、フォルダはrootが所有していますが、通常のユーザーで削除できます。
/home
パーティション内のユーザーのフォルダーは、現在のユーザーによって所有されており、所有者に対するrwx権限を持っていますが、削除/変更できないことに気付きました。これはどのように達成されますか?
Arch Linux 32ビットを使用しており、ファイルシステムはext4です。
$ HOME内のフォルダを誤って削除しないように保護したい。それらにchattr + iを適用しましたが、最後が再帰的に適用されていることに気付きました。したがって、実際にフォルダーを削除することはできませんが、フォルダーに書き込むこともできません。
これは再帰的ではなく、ディレクトリがどのように機能するかだけです。ディレクトリは基本的に、名前とiノードのリストを含む特別なファイルです。 (少なくとも以前は、一部のBSDではcat
ディレクトリを使用できます。)ファイルを作成、名前変更、または削除しようとすると、ファイル自体は変更されず、親ディレクトリも変更されます。 。ディレクトリが不変としてマークされている場合、それを変更することはできませんが、サブディレクトリは変更できます。
また、chmod 1775でスティッキービットを適用し、chown rootfoldernameでフォルダーの所有権を変更しようとしました。通常、スティッキービットを有効にすると、フォルダの所有者だけが削除できますが、奇妙なことに、私の場合、フォルダはrootが所有していますが、通常のユーザーで削除できます。
スティッキービットを使用すると、オブジェクト自体またはその親ディレクトリを所有している場合にオブジェクトを削除できます。
/ homeパーティション内のusersフォルダーは、現在のユーザーが所有しており、所有者のrwx権限を持っていますが、削除/変更できないことに気付きました。これはどのように達成されますか?
上記を参照してください–ファイルシステムオブジェクトを削除するときは、オブジェクト自体ではなく、親ディレクトリに対する「書き込み」権限が必要です。この場合、 /home
はrootが所有しており、「読み取り」+「実行」権限しかありません。
結論として、
ファイルシステムオブジェクト:n。ファイル、ディレクトリ、デバイスノード、シンボリックリンク、パイプ、Unixソケット、またはその他のファイルシステムに保存できるもの。
ディレクトリ内のアイテムを作成、削除、または名前変更するには、ディレクトリへの書き込み権限が必要です。通常、/home
は通常のユーザーには書き込みできないため、/home
の下のディレクトリを作成、削除、または名前変更することはできません。
ディレクトリのスティッキービットは、ファイルまたはディレクトリの所有者(またはスーパーユーザー)のみがディレクトリ内の既存のアイテムを削除または名前変更できるという追加の要件を追加します。所有しているものを削除することを妨げることはありません。これは、/tmp
のようなパブリックディレクトリを対象としており、誰でも新しいファイルを作成したり、所有するファイルを削除または名前変更したりできますが、他のユーザーが所有するファイルの削除や名前の変更は防止できます。
ディレクトリを不変(chattr +i
)にすると、ディレクトリをまったく変更できないため、新しいファイルを作成したり、削除したり名前を変更したりすることはできません。ディレクトリが削除されないようにしたいが、その中のファイルを作成、削除、名前変更できるようにしたい場合は、ディレクトリ内に不変のファイルを作成することでそれを行うことができます。その中に何かがあります。または、少なくとも1つのファイルを含む書き込み権限のないサブディレクトリを作成することもできます。
パーティーに少し遅れましたがchattr +a
(オプションで-R
for recursive)を使用すると、新しいファイルを作成できますが、削除することはできません。
+a
フラグは、ディレクトリにのみ追加を強制します(一方、+i
強制的に不変にします)。
これは、ファイルを削除しようとすると、OSがディレクトリからファイルを削除しようとするため、失敗し、削除操作全体が失敗することを意味します。