rm -rfでディレクトリツリーを削除できない


9

これは私には非常に奇妙に思えます。私はカーネル2.6.37.2を実行しており、実行しました:

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

期待通りにコピーするといくつかの許可が拒否され、最終的にControl-Cを押します。私が得るPermission denied新しいディレクトリとファイルを削除しようとすると、ファイルの多くに。

メモとして、友人.tgzが彼の/procディレクトリのスナップショットを送ってくれたので、私はこの奇妙な行動を見つけました。私はディレクトリを抽出し、それを調べ終わったときに同じ問題がありました。

rm -rf ルートとして機能します。

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


中心的な問題はに関するものではないため、質問のタイトルを少し一般化しました/proc。ちなみに今回は少し遅いですが、質問を投稿してから答えがわかれば自分答えて、似たような問題に遭遇するかもしれない他の人に任せても大丈夫です。
Gilles 'SO-悪をやめる'

回答:


16

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

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

その理由は、rm他のコマンドと同様に権限にバインドされており、削除barする権限にはへの書き込み権限が必要なためfooです。rmrootは常にファイルを削除する権限を持っているため、これはrootとして実行する場合には当てはまりません。

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

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

それでも同じ結果「許可されていない操作」
Legionar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.