Rootユーザーでも削除できないファイルを作成する方法は?
単純な答え:できません。rootがすべてを行うことができます。
(少なくともext {2,3,4}を使用している場合は)chattrを使用して「i」属性を設定すると、ファイルを変更できなくなりますが、rootは属性を設定解除してファイルを削除できます。
より複雑(そして醜いハックな回避策):rootで変更できないようにしたいディレクトリをリモートサーバーに置き、NFSまたはSMB経由でマウントします。サーバーがローカルrootアカウントをロックアウトする書き込み権限を提供しない場合。もちろん、ローカルのrootアカウントは、ファイルをローカルにコピーし、リモートのものをアンマウントし、コピーを配置して、それを変更するだけです。
ルートをロックしてファイルを削除することはできません。ルートを信頼してファイルを完全な状態に保つことができない場合は、技術的な問題ではなく、社会的な問題を抱えています。
CD-ROMに入れてください! ;)
(これはコメントであるべきですが、コメントはできません...)
ファイルを読み取り専用ファイルシステムに置きます。これはリモートである可能性がありますFSここでrootはもはやrootではありません。CD-ROMまたは書き込み保護可能なリムーバブルデバイス(SDカードなど)です。
ずっと前に、SELFDESTRUCTという名前のファイルを削除しようとすると、呼び出しプロセスが終了するカーネルパッチ(2.2.ancientまで)を書きました。これにより、偶発的な「rm -rf *」から保護されました。
chattr +i
を使用して、ファイルを不変にすることができます。
もちろん、ルートアクセスに精通しているユーザーは、chattr -i
を使用して不変の属性を削除してからファイルを削除できますが、ここに記載されているアクセスをブロックする他の試みを取り消すこともできます。
chattr がこれを行う正しいUnixの方法であると私は主張します。