自分が所有するディレクトリから特定のファイルが削除されるのを防ぐ方法はありますか?

自分が所有するディレクトリから特定のファイルが削除されるのを防ぐ方法はありますか?

ユーザーディレクトリ1それは含んでいるファイル1ファイル2はファイルを削除できません。 ユーザーが削除できないようにする方法削除できないファイル

所有権を変えるとディレクトリ1書き込み権限を削除すると、ユーザーはどのファイルも削除できません。また、新しいファイルなどを追加することもできません。

私は決して削除されないいくつかのファイルを設定できるようにしたいです。

より具体的な説明です。

ユーザープロファイルを作成しています。アプリケーション実行可能ファイルを作成しています。デスクトップ。だから、いくつかのランチャーファイル(.desktop)を設定し、ユーザーがそのファイルを実行することができ、名前を変更または削除できず、実行のみできるようにしたいと思います。

現在のユーザーがファイルを含むディレクトリを所有している場合。彼はそれを削除することができます。

すべての* nixで動作するすべてに適用される単一のアプローチがない場合は、Linuxとext4 FSです。

答え1

ファイルを変更できないようにするには、このプロパティを使用しますi

chattr +i file.desktop

詳細についてはを参照してくださいman chattr

答え2

(私はユーザーの家に侵入するのが好きではありません。ユーザーが家で欲しいものは何でもできるはずだと思います...しかし何でも...)

これはLinuxで動作します(少なくとも)。私はuserすでにグループのメンバーであると仮定していますuser。解決策はDirectory1、ディレクトリの所有権を変更して固定ビットを設定することです。

chown root:user Directory1
chmod 1775 Directory1

次に、次を使用します。

chown root Directory1/CantBeDeletedFile

これで、user固定ビット1のためファイルは削除されません。それでもuserそうすることができます。ただし、その項目は空にならないためDirectory1削除できません。Directory1

-
1.ディレクトリに固定ビットが有効になっている場合、ユーザー(所有者を除く)はディレクトリから自分のファイルのみを削除できます。これは/tmp権限が1777=のディレクトリに使用されますrwxrwxrwt

答え3

Unixファイル権限を持つ単一ファイルの削除を防ぐ方法はないと思いますが、回避策は考えられます。ファイルが削除されたときにファイルを置き換えるデーモンを作成します。inotify-toolsLinuxを使用している場合は、この種のことに非常に良いです。

削除されたアイテムを置き換える方法はいくつかあります。新しいアイテムをコピーするか、物理ファイルを安全な場所に保存し、リンクをユーザーディレクトリにコピーします。リンクには、シンボリックリンクまたはハードリンクを使用できます。私はシンボリックリンクから始めますが、いくつかの(いくつかの)プログラムはシンボリックリンクを正しく処理しません。ユーザーがこれらのプログラムに触れる場合は、代わりにハードリンクを使用してください。

答え4

Linuxについて具体的に質問しましたが、これらの質問を読む他の読者の利益のために、BSDとmacOSはすでにchflagsまた、ファイルを完全に保護するために使用することもできます(ただし削除を防止するのではなく)。

「uchg」フラグはユーザーレベルです。ユーザーはこのフラグを直接消去することもできます。

chflags uchg file-to-protect

システムレベルの「schg」フラグもあります。 "schg"を追加または削除するにはsudoが必要です。

chflags schg file-to-protect

関連情報