ファイルを作成してから、そのアクセス許可を444
に変更した場合 (読み取り専用)、どうしてrm
削除できますか?
これを行う場合:
echo test > test.txt
chmod 444 test.txt
rm test.txt
…rm
書き込み保護されたファイルtest.txt
を削除するかどうかを尋ねられます 。 rm
そのようなファイルを削除することはできず、chmod +w test.txt
を実行する必要があります 最初。 rm -f test.txt
を実行した場合 次にrm
読み取り専用であっても、確認せずにファイルを削除します。
誰でも明確にできますか? Ubuntu 12.04/bashを使用しています。
承認された回答:
すべてのrm
必要なのは、親ディレクトリに対する書き込み+実行権限です。ファイル自体の権限は関係ありません。
これは、パーミッションモデルをこれまで以上に明確に説明しているリファレンスです。
ファイルのデータにアクセスするには、読み取り権限が必要です。
ファイルのデータを変更しようとすると、書き込み権限が必要です。
ファイル(プログラムまたはスクリプト)を実行しようとすると、実行権限が必要です
許可…ディレクトリは通常のファイルと同じように使用されないため、
権限の動作はわずかに(ただしわずかに)異なります。
ディレクトリ内のファイルを一覧表示するには、
ディレクトリの読み取り権限が必要ですが、その中のファイルには必要ありません。
ディレクトリにファイルを追加したり、ディレクトリからファイルを削除したり、ファイルの名前を変更したりするには、すべて
ディレクトリの書き込み権限が必要ですが、(おそらく驚くべきことに)
内のファイル。実行権限は
ディレクトリには適用されません(ディレクトリをプログラムにすることはできません)。ただし、その
パーミッションビットは、他の目的でディレクトリに再利用されます。ディレクトリにcdできるようにするには(つまり、あるディレクトリを現在の作業ディレクトリにするために)、ディレクトリに対する実行権限が必要です。
内のファイルの「inode」情報にアクセスするには、ディレクトリで実行が必要です。これは、ディレクトリを検索して、その中のファイルの
iノードを読み取るために必要です。このため、ディレクトリの実行権限は
代わりに検索権限と呼ばれることがよくあります。