ユーザーがファイルを削除できますが、読み書きできない権限設定はありますか?
答え1
ファイルの権限によって、ファイルを読み、書き、実行できる人が決まります。親ディレクトリの権限によって、削除できる人が決まります。 POSIXでファイルを削除することは親ディレクトリに書き込むのと似ており、実際に削除されたファイル自体とは何の関係もないからです。
したがって、ファイルを読み書きすることはできませんが、親ディレクトリに書き込むことができる人は誰でもファイルを削除できます。
mkdir a
chmod 777 a
touch a/b
chmod 000 a/b
b
a
誰もroot
読み書きできませんが、b
誰でも削除できるファイルをディレクトリに作成しますb
。
(誰でも交換可能なので参考にしてくださいb
。)
答え2
はい、可能です。何かを削除するために必要な唯一の書き込み操作は、対応するinodeを削除することです。これには、親ディレクトリに書き込み権限が必要です(次のように定義されています)。POSIX)。
実際、このファイルでは何も変更する必要はありません。ファイルの参照カウンタが0に達すると、そのファイルは削除されたと見なされます。参照カウンタは、ファイルを指す inode の数に、ファイルの開かれたファイルハンドラの数を加えたものと同じです。ファイルが使用されない場合、後者はゼロになります。したがって、ファイルに含まれている1つのinodeが削除されると、ファイルも削除されます(別のハードリンクがない場合)。
一例:
新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir /tmp/test
cd /tmp/test
これは次のようになりますroot
。
sudo su
次のコマンドの前に書き込むことは、sudo
完了した書き込み操作に必要であるため、何の効果もありませんroot
。ユーザーの実行はecho
重要ではありません。
次に、新しいファイルを作成し、権限を変更して、ルートシェルをもう一度終了します。
echo some content > someFile
chmod 600 someFile
exit
ディレクトリの内容を表示できます。
ll
出力は次のとおりです。代わりにユーザー名を使用してくださいchristoph
。
total 12
drwxrwxr-x 2 christoph christoph 4096 Oct 8 14:27 ./
drwxrwxrwt 13 root root 4096 Oct 8 14:25 ../
-rw------- 1 root root 13 Oct 8 14:27 someFile
最後1
の行は、ファイルを指す inode が 1 つしかないことを意味します。したがって、1つのエントリを削除した後に開いているプログラムがない場合、ファイルは消えます(開いている場合は、そのプログラムを閉じるか終了した後に消えます)。このようなケースはしばしばありますが、必ずしもそうではありません。バラよりhttps://en.wikipedia.org/wiki/Hard_linkより多くの情報を知りたいです。
ご覧のとおり、ファイルに対する読み取りまたは書き込み権限はありませんが、ディレクトリへの書き込み権限はあります(現在のディレクトリは.
ピリオド()で示されています)。これは、次の方法でファイルを削除できることを意味します。
rm someFile
ただし、ファイルが書き込み禁止になっているという警告が表示されます。
rm: remove write-protected regular file 'someFile'?
「yes」と入力しy
てEnterを押します。
その後、ファイルが消えます。
$ ll
total 8
drwxrwxr-x 2 christoph christoph 4096 Oct 8 14:27 ./
drwxrwxrwt 13 root root 4096 Oct 8 14:27 ../