私は私たちのサーバーのいくつかのフォルダを管理しています。サーバーは次のように実行されます。
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux" REDHAT_SUPPORT_PRODUCT_VERSION="7.6"
「/srv/」にディレクトリを作成し、名前を「test」と指定しました。 「test」の中に「archived」という別のディレクトリを追加しました。
project_managersユーザーグループを作成し、このグループにいくつかのユーザーを追加しました。 project_managersには、「/srv/test/」に対する再帰的な読み取り/書き込み/実行権限があります。
project_managersがあるディレクトリから別のディレクトリにファイルを移動できるようにしたいのですが、サーバーからファイルを完全に削除するわけではありません。
たとえば、project_managersに「/srv/test/my_code.py」を「/srv/test/archived/」に移動する権限を与え、「/srv/test/my_code.py」を削除できないようにします。したいです。
私は完了しました: sudo chattr -R +i /srv/test/
ファイルが削除または移動されるのを防ぎます。
ファイルを削除することはできませんが、削除可能にすることはできますか?
答え1
あなたの質問に答えるには、移動と削除が非常に似ているので、他の戦略が必要だと思います。
コードのように見えるからではなく、ディレクトリをバージョン管理下に置きます。
バージョン管理システムの利点は、ファイル履歴があることです。たとえば、1時間ごとに変更が行われたことを確認するスケジュールされたタスクを実行し、git
変更をバージョン管理に適用できます。
これにより、人々がコンテンツを移動および削除するなどの操作を実行できます。それでもバージョン管理が可能で、単一のコマンドで検索できます。
gitのようなバージョン管理システムのもう一つの特徴は、統合バックアップメカニズムです。変更を1つ以上の他のシステムに転送することができます。変更とは、実際に変更を含む完全なファイル履歴です。
変更のみを保存するテキストファイルの場合、ストレージのオーバーヘッドは最小限に抑えられます。
他の誰も触れることができない唯一のものはバージョン管理システムです。 gitを使用すると、.git
すべての重要な情報を含むディレクトリが作成されます。 Mercurial などの他のシステムを使用することもできます。
本当にすべての変更をキャプチャしたい場合は、試してみてください。子観察すべてのサブフォルダとファイルを含むgitリポジトリを監視し、変更をgitに挿入します。より良いことは、gitwatchが他のサーバーのgitに変更を送信できることです(フルバックアップ、フル履歴)。