ファイルを削除不可にする必要があるが、変更と名前の変更は可能にする必要がある

ファイルを削除不可にする必要があるが、変更と名前の変更は可能にする必要がある

ファイルの存在をチェックし、存在する場合は、そこから電子メール アドレスのリストを読み取って通知を送信するスクリプトがあります。通知を受ける必要がない場合、たとえば、職場ですでに出力を監視している場合は、名前を変更します。他の管理者が削除しないようにしたいだけです。

ファイルが不変になることはわかっていますchattr +iが、ファイルが削除されるのを防ぎたいだけです。chattr プログラムは、ファイル名ではなく、inode 番号を使用して属性を追跡すると考えられます。

これを実現できるユーティリティはありますか?

答え1

「他の管理者」についてのコメントは、あなたがrootファイルを保存するシステム上で権限が必要です。アクセス許可に関して設定できるものはすべて、同じ権限を持つユーザーによって取り消される可能性があります。

それが問題ではなく、誰も拡張権限を持っていない場合は、ファイルを/tmpまたはに置くだけで済みます/var/tmp。通常、tビットがセットされています(他の特権ユーザー削除するファイルを chmod してグループ書き込み可能 (および同じグループ内の他のユーザーが変更可能) にすることができます。

答え2

「他の管理者」は悪意を持っていますか? 彼らはあなたを攻撃しようとしているのでしょうか? もしそうなら、おそらくあなたにできることは何もありません。

そうでない場合、おそらく最も簡単な解決策は、スクリプトを変更してファイルをホームディレクトリに置くことです。これのバリエーションとして、異なるディレクトリのファイルへのハードリンクを作成する方法があります。ただし、削除(リンク解除)しない限りです。全てリンクを削除しても、ファイルはそのまま残ります。(すべてのリンクの場所を調べて、まだ存在するリンクを探し、削除されたリンクをすべて再リンクする別のスクリプトを作成する必要があります。) 一部のエディターではリンクが壊れることに注意してください (つまり、ファイルを編集した場合)。

「他の管理者」が悪意を持っていて、あなたを攻撃しようとしている場合でも、経験が浅く、徹底的でない場合は、これで問題が解決する可能性があります。

または、ファイルを不変にして、スクリプトを変更し、電子メールを送信するかどうかを判断するために他のテストを使用するようにします。

答え3

他の回答のいくつかで指摘されている点については、mvユーティリティを使用して社会的障壁を提案することができます。

mv yourfile THIS_IS_user38537_FILE_PLEASE_DO_NOT_REMOVE

答え4

[古い回答の置き換え]

ファイルへのハードリンクを作成するだけです:

ln email_file hard_link

そうすれば、削除されたとしても、まだ存在するので簡単に復元できます。


[問題の誤解に基づく古い回答]

1 つの解決策は、スクリプト自体を で不変にすることですchattrが、オンとオフの切り替えは、名前を変更するのではなく、失ってもかまわない空のファイルの有無で行います。たとえば、 と呼びます。 snoozebutton存在する場合、スクリプトは通知しません。存在しない場合、スクリプトは通知します。このようにすると、誰かが誤って を削除した場合でも安全です。通知を受け取るだけでなく、 に何かが起こったことも通知されますsnoozebutton

もちろん、これはスクリプトを頻繁に変更する必要がないことを前提としています。頻繁に変更する必要がある場合は、 を実行する小さなユーティリティ スクリプトを作成しchattr、次にエディターを実行し、chattrを実行して再度ロックする必要があります。

関連情報