回答:
いいえ、これは不可能です。通常のユーザーがファイルを削除することは不可能です:確かに。
必要になるだろう sudo
ユーザーがファイルを削除できないようにするます。管理者は、常にファイルを削除できます。
sudo chattr +i test
削除を防ぐことができますが、必要sudo
です。単純なsudo chattr -i test
ファイルを削除することが可能になります。管理者以外のユーザーは使用できませんchattr
。
そして...単にリブートしてレスキューモードに入ると、その人はそのファイルを削除できるようになります。ファイルを削除できない方法があると、セキュリティ上のリスクになります。
少し粗雑ですが、これは近いです-ディレクトリの書き込みアクセス権を削除すると、その中のファイルは削除できません。そしてsudo
、あなたがそれを所有している場合は必要ありません:
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
したがって、必要に応じてファイル自体にアクセス許可を設定できます。
また、@ Rinzwindが述べたように、それを回避する方法は確かにたくさんあります。
ファイルを削除するには、ファイルがリンクされているすべてのディレクトリへの書き込み権限が必要です。1つのディレクトリからリンクを解除するには、そのディレクトリへの書き込み権限が必要です。
そのため、ファイルに書き込み許可(または所有権さえ)を与えるが、そのファイルがリンクされているディレクトリには許可しない限り、そのファイルは削除できません。
それを実現する最善の方法は、そのファイルを、rootが所有するディレクトリにリンクし、誰も書き込みできないようにすることです。代わりにあなたが所有することもできます。つまり、あなたとrootの両方がそれを削除できます。
これにより、他のユーザーはそのファイルを他のディレクトリにリンクし、その後そこからリンクを解除できますが、自分のディレクトリからリンクを解除できるため、ファイルを削除することはできません。
これが完全に機能するためには、ファイルへのすべてのパスコンポーネントの書き込み許可を制御する必要があることに注意してください。たとえば、ファイルが/a/b/the-file
あり、あなたが/a/b
誰からも書き込み可能ではないが、誰もが書き込みアクセス権を持っている場合/a
、彼らは別の名前に変更/a/b
し、自分自身/a/b
を再作成して/a/b/the-file
そこに自分自身を作成できるためです。