外部のプログラムやユーザがファイルを編集しないようにするにはどうすればよいのでしょうか?私が保護しなければならないファイルFがあるとしましょう。デフォルトでは、ルートとユーザだけがFを実行し、読み書きすることができ、他のすべてのユーザは読み取り権限しか持ちません。ファイルをlinuxで編集しないようにする
私は、重要なファイルFを保護しているプログラムがあり、編集の状況が異常であり、システムのセキュリティが侵害されているように見えるとします。ファイルFの変更を保存しないようにするには、可能であれば、その変更を試みたそのプログラムを終了してください。
私はfuserがそのプロセスを殺すことができることを知りましたが、修正が行われる前にはダメージがかかっていませんでした。私はinotifyを使って変更を検出します。私の問題は、エディタのほとんどが一時ファイルを作成し、変更して元のファイルに保存することです。私はIN_OPEN、IN_CLOSENOWRITEなどのようなイベントを受け取っていますが、イベントが完了した後にのみIN_CLOSEWRITEとIN_CLOSEMODIFYを取得します。ファイルを停止するにはどうすればいいですか?
誰かがシステムに入った後に私のプログラムが殺されるかもしれないと私は理解します。
編集:私は言及することを忘れました。私は監視されているファイルのアクセス許可を変更することはできません。
編集#2:私は絶えず監視されなければならない一連のファイルを持っています。私のプログラムはバックグラウンドで実行され、それらのファイルの変更が記録されます。私が以前に書いたすべてのファイルは、rootで編集して実行することができますが、望ましくない可能性のあるアクション(変更)があり、誰かがルートアクセス権を得て、それらの重要なファイルを編集している可能性があります。私はこれらの有害な変化を止める必要があります。答えから私は何とかそれらのファイルのスナップショットを取得しなければならないと推測します。しかし問題は、ファイルの数が約1〜400万巨大になる可能性があることです。スナップショットソリューションより効率的なソリューションは大歓迎です。
あなたがしようとしていることを説明する質問を書く方が良いと思います。 – MarkR
ファイルを*不変*: 'chattr + i file_to_protect'にします。詳細は 'man chattr'を参照してください。 – pmg
pmg、私はchattr + iを調べました。問題は、監視しなければならないファイルです。つまり、いくつかのファイルに対して、それは法的措置です。他人の場合と同じように、データはいくつかのファイルに書き込まれます。有害な変化。 – bsd