rmが読み取り専用ファイルを削除できるのはなぜですか?

rmが読み取り専用ファイルを削除できるのはなぜですか?

ファイルを作成してからその権限を444(読み取り専用)に変更すると、rmファイルを削除できるのはなぜですか?

私がこうすれば:

echo test > test.txt
chmod 444 test.txt
rm test.txt

...rm書き込み禁止のファイルを削除するかどうかを尋ねますtest.txt。そのようなファイルは削除できないと思って最初に削除する必要があるrmようです。chmod +w test.txtこれにより、読み取り専用であるにもかかわらずファイルが削除されますrm -f test.txtrm

誰でも明確にできますか?私はUbuntu 12.04 / bashを使用しています。

ベストアンサー1

すべてのrm要件は書き込み+実行許可目次。ファイル自体に対する権限は関係ありません。

これは参考これは、権限モデルを私ができるよりもはっきりと説明します。

ファイルデータにアクセスするには読み取り権限が必要です。ファイルのデータを変更するには書き込み権限が必要です。ファイル(プログラムまたはスクリプト)を実行するには実行権限が必要です。

ディレクトリは通常のファイルとは異なる方法で使用されるため、権限はわずかに異なります(ただし少しだけ)。ディレクトリ内のファイルを一覧表示するには、ディレクトリに対する読み取り権限が必要ですが、その中のファイルに対する読み取り権限は必要ありません。 ディレクトリにファイルを追加したり、ディレクトリからファイルを削除したり、ファイル名を変更したりするには、ディレクトリへの書き込み権限が必要ですが、おそらくディレクトリ内のファイルへの書き込み権限は必要ありません。。実行権限はディレクトリには適用されません(ディレクトリはプログラムでもありません)。ただし、この許可ビットはディレクトリ内の他の目的で再利用できます。

ディレクトリに対する実行権限は、そのディレクトリにCDを挿入する必要があります(つまり、ディレクトリを現在の作業ディレクトリにする場合)。

ディレクトリ内のファイルの「inode」情報にアクセスするには、ディレクトリで実行する必要があります。ディレクトリ内のファイルのinodeを読み取るには、ディレクトリを検索するために必要です。したがって、ディレクトリに対する実行権限は検索権限とも呼ばれます。

おすすめ記事