Tại sao tôi không thể xóa tệp này dưới quyền root?


20

Tôi có bài kiểm tra thư mục với 2 tập tin trong đó. Tôi cần xóa các tập tin nhưng sự cho phép bị từ chối. Ngay cả rm -rflệnh không thể xóa các tập tin này. Tôi đã đăng nhập như một người dùng root.

nhập mô tả hình ảnh ở đây


13
(1) Vui lòng gửi văn bản từ Terminal dưới dạng văn bản nếu có thể. Lý tưởng nhất là sao chép và dán nó. Nếu bạn không có cách nào để chụp văn bản ngoại trừ việc sao chép văn bản theo cách thủ công, thì hãy làm điều đó, nhưng tiết lộ rằng bạn đang thực hiện và bao gồm hình ảnh chụp màn hình để chúng tôi có thể kiểm tra lại cách gõ của bạn. (2) Khi bạn có câu hỏi về quyền, xin vui lòng, luôn luôn, làm ls -la, để chúng tôi có thể thấy các quyền trên .(thư mục).
G-Man nói 'Phục hồi Monica'

Câu trả lời:


39

Từ người dùng root kiểm tra thuộc tính của tập tin

# lsattr 

nếu bạn nhận thấy i(không thay đổi) hoặc a(chỉ bổ sung), hãy xóa các thuộc tính đó:

# man chattr
# chattr -i [filename]
# chattr -a [filename]

1
Wow, đó là một khó khăn. Cảm ơn bạn đã đăng giải pháp này; Tôi đã ở cuối trí thông minh của mình. Tôi khá chắc chắn rằng điều này bằng cách nào đó liên quan đến đồng bộ hóa unison của tôi; nó được để ở trạng thái 'không xác định' (vì nhiều lý do) và điều này có nghĩa là những thư mục mà tôi không thể xóa được đặt (chỉ bằng unison) thành chỉ phụ (đây là điển hình của unison). Nhưng tôi không biết làm thế nào để xem / thiết lập lại chế độ chỉ nối thêm đó! Bạn là một phao cứu sinh; Tôi hy vọng các poster ban đầu cũng có vấn đề của họ được giải quyết.
Gwyneth Llewelyn

Đây là một phao cứu sinh.
Luka

16

Lý do phổ biến nhất để rmphàn nàn rằng bạn không có quyền xóa tệp, là các quyền trên thư mục cấm bạn xóa tệp. Để xóa một tập tin, bạn cần có quyền ghi trên thư mục. Các quyền trên tệp không liên quan ( rmkhông có -flời nhắc xác nhận trước khi xóa tệp chỉ đọc, nhưng đó chỉ là xác nhận, không giới hạn). Trên một số biến thể Unix như OSX (nhưng không phải Linux), ACL trên một tệp có thể ngăn chặn việc xóa nó; ls -lsẽ hiển thị @ở cuối trường cấp phép nếu có mục ACL trên tệp.

Truy cập như root bỏ qua quyền, vì vậy root có thể xóa các tập tin ngay cả trong một thư mục chỉ đọc.

Đầu ra từ ls -lhiển thị .ở cuối cột cho phép. Điều này chỉ ra rằng tệp có bối cảnh bảo mật SELinux. Không giống như các quyền cơ bản và ACL, bối cảnh bảo mật SELinux trên một tệp có thể kiểm soát ai được phép xóa nó. Hơn nữa, Selinux không thể luôn luôn bị bỏ qua bởi root (có thể có một quy trình chạy dưới dạng ID người dùng 0 nhưng với ít quyền như nhà thiết kế chính sách của Selinux đã chọn). Để xem bối cảnh SELinux cho phép bạn làm gì, hãy chạy ls -lZ . exam_a.

Một điều khác có thể ngăn chặn một tập tin bị xóa là nếu nó hoặc thư mục chứa nó có thuộc tính Linux chỉ bổ sung hoặc bất biến . Chạy lsattr -d . exam_ađể xem các thuộc tính Linux. Nếu thuộc tính ahoặc ilà bật, bạn sẽ cần xóa nó ( chattr -a -i . exam_a) để xóa tệp; chỉ root mới có thể làm điều đó. Root không thể bỏ qua các thuộc tính này để xóa một tập tin, các thuộc tính phải được tắt trước tiên.

Tuy nhiên, một điều nữa ngăn tập tin bị xóa là nếu hệ thống tập tin được gắn ở chế độ chỉ đọc, nhưng bạn sẽ nhận được một thông báo lỗi khác trong trường hợp đó.

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.