chattr for Linux / chflags for macOS and *BSD

Tecmintに10月19日(米国時間)に公開された記事「How to Make File and Directory Undeletable, Even By Root in Linux」が、rootユーザーですら削除することのできないファイルやディレクトリを設定をする方法を紹介している。Linuxではchattrコマンドでext2fsの属性データを設定することができ、この機能を使って削除不可能なファイルやディレクトリを設定することができる。

設定および解除の方法は次のとおり。

  • 設定 sudo chattr +i target_file
  • 設定 sudo chattr +i -R target_dir ←再帰的に適用
  • 解除 sudo chattr -i target_file
  • 解除 sudo chattr -i -R target_dir ←再帰的に適用

macOSや*BSDではchflagsコマンドで同様の設定を行うことができる。

  • 設定 sudo chflags uchg target_file
  • 設定 sudo chflags uchg -R target_dir ←再帰的に適用
  • 解除 sudo chflags nouchg target_file
  • 解除 sudo chflags nouchg -R target_dir ←再帰的に適用

この方法はファイルシステムの拡張属性としてデータを設定して動作を拡張するというもの。対応しているファイルシステムでのみ利用することができ、対応していないファイルシステムに対してはコマンドを実行することができない。