rm -rf を使用してディレクトリツリーを削除することはできません。

rm -rf を使用してディレクトリツリーを削除することはできません。

私にとっては、これは奇妙に見えます。私はカーネル2.6.37.2を実行しており、以下を実行しました。

~]$ cp -r /proc/ here
~]$ rm -rf here

コピーが期待どおりに機能している間に一部の許可が拒否され、最終的にCtrl-Cを押します。Permission denied新しいディレクトリとファイルを削除しようとすると、多くのファイルが作成されます。

ちなみに、友達が.tgz自分のディレクトリスナップショットを私に送ったので、この奇妙な動作を見つけました/proc。ディレクトリを抽出してビューを終了したときに同じ問題が発生しました。

rm -rfルートが機能しているからです。

lsattre属性を表示します(これは私のすべてのファイル/ディレクトリに表示される属性です)。

ベストアンサー1

書き込み権限のない空でないディレクトリが存在する場合、その内容を削除することはできません。

$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied

これは、rm他のコマンドと同様に権限が適用され、削除権限にはbar書き込み権限が必要なためですfoormルートは常にファイルを削除する権限を持っているため、ルートとして実行している場合は適用されません。

ディレクトリツリーを削除可能にするには、その中にあるすべてのディレクトリを書き込み可能にします(deleteを使用するときに通常のファイルに対する権限は重要ではありませんrm -f)。次のいずれかのコマンドを使用できます。

chmod -R u+w here        # slow if you have a lot of regular files
find here -type d -exec chmod u+w {} +

おすすめ記事