私にとっては、これは奇妙に見えます。私はカーネル2.6.37.2を実行しており、以下を実行しました。
~]$ cp -r /proc/ here
~]$ rm -rf here
コピーが期待どおりに機能している間に一部の許可が拒否され、最終的にCtrl-Cを押します。Permission denied
新しいディレクトリとファイルを削除しようとすると、多くのファイルが作成されます。
ちなみに、友達が.tgz
自分のディレクトリスナップショットを私に送ったので、この奇妙な動作を見つけました/proc
。ディレクトリを抽出してビューを終了したときに同じ問題が発生しました。
rm -rf
ルートが機能しているからです。
lsattr
e属性を表示します(これは私のすべてのファイル/ディレクトリに表示される属性です)。
ベストアンサー1
書き込み権限のない空でないディレクトリが存在する場合、その内容を削除することはできません。
$ mkdir foo
$ touch foo/bar
$ chmod a-w foo
$ rm -rf foo
rm: cannot remove `foo/bar': Permission denied
これは、rm
他のコマンドと同様に権限が適用され、削除権限にはbar
書き込み権限が必要なためですfoo
。rm
ルートは常にファイルを削除する権限を持っているため、ルートとして実行している場合は適用されません。
ディレクトリツリーを削除可能にするには、その中にあるすべてのディレクトリを書き込み可能にします(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 {} +