Tôi không thể xóa cây thư mục bằng rm -rf


9

Điều này có vẻ rất lạ đối với tôi. Tôi đang chạy kernel 2.6.37.2 và đã chạy:

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

Tôi nhận được một số quyền từ chối khi sao chép như mong đợi và cuối cùng tôi đã nhấn Control-C. Tôi nhận được Permission deniedrất nhiều tập tin khi cố gắng loại bỏ thư mục và tập tin mới.

Một ghi chú, tôi tìm thấy hành vi kỳ lạ này bởi vì một người bạn đã gửi cho tôi .tgzmột bức ảnh chụp /procthư mục của anh ấy . Tôi giải nén thư mục và khi tôi xem xong nó tôi cũng gặp vấn đề tương tự.

rm -rf như root không hoạt động.

lsattr hiển thị thuộc tính e (đó là những gì tất cả các tập tin / thư mục của tôi hiển thị).


Tôi đã khái quát tiêu đề câu hỏi của bạn một chút vì vấn đề cốt lõi không phải là vấn đề /proc. Nhân tiện, lần này hơi muộn, nhưng nếu bạn tìm ra câu trả lời sau khi đăng câu hỏi, bạn có thể tự trả lời và để lại cho những người khác có thể gặp phải vấn đề tương tự.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


16

Nếu có một thư mục trống, nơi bạn không có quyền ghi, bạn không thể xóa nội dung của nó.

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

Lý do là rmbị ràng buộc bởi các quyền như bất kỳ lệnh nào khác và quyền xóa barcần phải có quyền ghi foo. Điều này không áp dụng khi bạn chạy rmbằng root vì root luôn có quyền xóa tệp.

Để làm cho cây thư mục có thể xóa được, hãy làm cho tất cả các thư mục trong đó có thể ghi được (quyền của các tệp thông thường không thành vấn đề khi xóa rm -f.) Bạn có thể sử dụng một trong hai lệnh sau:

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

Vẫn là kết quả tương tự "Hoạt động không được phép"
Legionar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.