Linux - không thể xóa tệp sở hữu với quyền 777


29

Tôi đã có một vài tệp mà tôi không thể xóa bằng rf -Rflệnh. Tôi là chủ sở hữu của các tệp đó và nhóm được gán cho các tệp đó cũng là một nhóm mà người dùng của tôi tham gia. Điều thậm chí kỳ lạ là tôi có thể chỉnh sửa nội dung của họ và tôi có thể thay đổi quyền cho họ, nhưng tôi không thể di chuyển hoặc xóa chúng.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Bất cứ ai có thể cho tôi biết những gì đang xảy ra?


5
Nói chung, hãy cân nhắc sử dụng rm -rf DIRECTORY_NAME chứ không phải "*". Nó sẽ cứu bạn khỏi điều đó một lần khi bạn sẽ nghĩ chính mình trong thư mục / some / where / safe nhưng thay vào đó là trong / home
Sardathrion - Rebstate Monica

Trên thực tế tôi đã thử điều đó, đó chỉ là 3 tệp mà tôi không thể xóa nên tôi đã đơn giản hóa để xử lý một chút cho mục đích của bài đăng này.
RaYell

Đừng quên lệnh lsattr và chattr ...

Câu trả lời:


61

Để xóa một tệp bạn cần có quyền ghi trên thư mục chứa tệp này.

Ở đây các quyền là dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Vì vậy, không ai (ngoài root) có thể xóa các tệp trong thư mục này. Chủ sở hữu phải sử dụng chmodđầu tiên.

-
1. Có những lý do khá tốt cho việc đó. Bằng cách 'xóa' một tệp với rm, trên thực tế bạn đang cố gắng hủy liên kết tệp khỏi thư mục (các bản sao được liên kết cứng sẽ không bị xóa).


1

Tôi đã có cùng một vấn đề, và chmodmột mình đã không làm điều đó. Trước tiên tôi phải thay đổi chủ sở hữu (người dùng và nhóm) các tệp tôi muốn xóa.

sudo chown -hR root:admin dir_to_delete

Giải trình:

  • sudo: đảm bảo bạn có quyền thích hợp
  • chown: Lệnh Linux để thay đổi chủ sở hữu của một tệp
  • -hR: thay đổi chủ sở hữu của thư mục và tất cả các thư mục con. Tôi tìm thấy nó ở đây .
  • root: tên người dùng mới
  • admin: tên của nhóm mới

Tôi đã thay đổi các sửa đổi thành 777; Tôi không biết điều đó có cần thiết hay không.


Quyền của các tệp trong thư mục là không liên quan, chỉ có quyền ghi vào thư mục chính nó. Có lẽ trước khi chownbạn không phải là chủ sở hữu của thư mục cũng không phải là thành viên của nhóm sở hữu thư mục.
sgnsajgon

1

Một câu hỏi khác có thể là thuộc tính

lsattr file

Lệnh này sẽ hiển thị cho bạn thuộc tính của tệp và một tệp có thuộc tính 'i' không thể được sửa đổi (và bị xóa)

vì vậy hãy kiểm tra thuộc tính tệp của bạn và xóa thuộc tính 'i' nếu thuộc tính được đặt

chattr -i file

2
Câu hỏi cho thấy rằng đó là quyền thư mục không cho phép viết. Không cần phải nhìn xa hơn.
Toby Speight

0

Lý do là thư mục cha có chmod 705hoặc một cái gì đó tương tự. Bạn có thể chmodthư mục cha bằng lệnh sau:

chmod -R 777 directory_name

Sau này, bạn có thể xóa thư mục đó và các tệp chứa trong đó.


4
Xin đừng bỏ qua việc làm cho các thư mục có thể ghi được bởi mọi người . Đó không phải là lời khuyên tốt.
Toby Speight

+1 - Đồng ý, đừng làm theo lời khuyên này, thật tuyệt vời, làm thế nào điều này được dán trên internet ... Lượng không an toàn, gây ra bởi những người ủng hộ điều này là không thể tin được ...
André Figueira
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.