ユーザーがDirectory1を持ち、それがFile1 File2 CantBeDeletedFileを含んでいるとしましょう。 CantBeDeletedFileを削除することは決してできませんか?
Directory1の所有権を変更して書き込み権限を削除すると、ユーザーはファイルを削除できなくなります。また、新しいファイルなどを追加することもできません。
削除されないファイルをいくつか設定できるようにしたいだけです。
より具体的な説明。
ユーザープロファイルを作成しています。 Desktopでアプリケーションランチャーファイルを作成しています。だから私はいくつかのランチャーファイル(.desktop)を設定し、ユーザーがそれらを起動することができるだけで、名前を変更したり削除したりできず、単に起動することができるようにしたいと思います。
現在、ユーザーがファイルを含むディレクトリを所有している場合。彼は削除できます。
すべての* nixに一般的な方法がない場合、それはLinuxおよびext4 FSです。
(私はユーザーの家への侵入を嫌います。彼らは家でやりたいことは何でもできるようにすべきだと思います…しかしとにかく...)
これは(少なくとも)Linuxで動作するはずです。 user
はすでにグループuser
のメンバーであると想定しています。解決策は、Directory1
の所有権を変更し、ディレクトリにスティッキービットを設定することです。
chown root:user Directory1
chmod 1775 Directory1
次に使用します:
chown root Directory1/CantBeDeletedFile
現在、スティッキービットのため、user
はこのファイルを削除できません¹。 user
は、Directory1
で独自のファイルを追加/削除することができます。ただし、Directory1
は空にならないため、削除できないことに注意してください。
—
1.スティッキービットがディレクトリで有効になっている場合、ユーザー(所有者以外)はディレクトリ内の自分のファイルのみを削除できます。これは、権限が/tmp
= rwxrwxrwt
である1777
のようなディレクトリで使用されます。
i
属性を使用してファイルを不変にします。
chattr +i file.desktop
見る man chattr
詳細については。
Unixファイルのアクセス許可を持つ個々のファイルの削除を防ぐ方法はないと思いますが、回避策は考えられます。削除されたときにそれを置き換えるデーモンを作成します。 inotify-tools
は、Linuxを使用している場合、この種のことには最適です。
削除したアイテムを置き換える方法はいくつかあります。新しいアイテムを所定の場所にコピーするか、実際のファイルを安全な場所に保管して、リンクをユーザーのディレクトリにコピーするだけです。リンクには、シンボリックリンクまたはハードリンクを使用できます。私はシンボリックリンクから始めますが、一部の(ごく少数の)プログラムがシンボリックリンクを正しく処理しません。ユーザーがこのようなプログラムに遭遇した場合は、代わりにハードリンクを使用してください。
シンプルな
chmod -i filename
そのファイルを削除から「保護」します。
rm filename
rm: remove write-protected regular file 'filename'?
削除することはできますが、少なくとも、自分が何をしているかについて十分に確認する必要があります。