Tôi không thể xóa một tệp mà tôi có quyền ghi cho thành viên nhóm


12
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password: 
$ groups
user2 user1
$ rm testfile 
rm: cannot remove `testfile': Permission denied

Điều gì còn thiếu?

Câu trả lời:


21

Xóa một tệp có nghĩa là bạn đang thực hiện các thay đổi đối với thư mục mà nó nằm trong đó chứ không phải chính tệp đó. Nhóm của bạn cần rw trên thư mục để có thể xóa một tập tin. Các quyền trên một tệp chỉ để thực hiện các thay đổi đối với chính tệp đó.

Điều này có thể trở nên khó hiểu lúc đầu cho đến khi bạn nghĩ về cách hệ thống tập tin hoạt động. Một tập tin chỉ là một nút, và thư mục đề cập đến nút. Bằng cách xóa nó, bạn chỉ cần xóa một tham chiếu đến inode của tệp đó trong thư mục. Vì vậy, bạn đang thay đổi thư mục, không phải tập tin. Bạn có thể có một liên kết cứng đến tệp đó trong thư mục khác và bạn vẫn có thể xóa tệp đó khỏi thư mục đầu tiên mà không thực sự thay đổi tệp, nó vẫn tồn tại trong thư mục khác.


Tôi nhận được 775 drwxrwxr-xcho các thư mục.
tshepang

1
Quyền sở hữu nhóm của thư mục là gì? Hãy nhớ rằng, 7 thứ hai bạn đã đề cập là sự cho phép mà nhóm của thư mục có chứ không phải nhóm người dùng của bạn.
jsbillings

1
ls -ld /path/to/directoryhoặc đơn giản là ls -ld .nếu bạn đã cd'd vào thư mục đó.
jsbillings

1
vì bất kỳ lý do gì, stat không thể tra cứu ID nhóm 1002. stat tìm kiếm ID nhóm trong / etc / group, NIS, LDAP, v.v. và nó đang bị lỗi, đó là lý do tại sao bạn nhìn thấy UNKNOWN. Tôi sẽ thử chạy getent group 1002để xem nó có cho bạn một lỗi dài dòng hơn không.
jsbillings

1
Trên thực tế, tôi không thấy hành vi này khó hiểu cả. Nó giống hệt như cách một thư mục "thực tế" hoạt động, đó là lý do tại sao nó được gọi là "thư mục", và không, ví dụ, "thư mục", sẽ hoạt động hoàn toàn khác. Nếu tôi muốn xóa ai đó khỏi danh bạ điện thoại của mình, tôi không đến nhà cô ấy và giết cô ấy, tôi chỉ cần lấy một cây bút và đánh số của cô ấy. IOW: Tôi cần quyền truy cập ghi vào thư mục và không có quyền truy cập vào cô ấy. Windows có các thư mục, Unix có các thư mục và cả hai đều hoạt động giống như các đối tác ngoài đời thực của chúng. Nhầm lẫn chỉ xảy ra nếu bạn trộn chúng lên.
Jörg W Mittag

0

Chỉ hệ thống mới có thể xóa một tập tin và chỉ khi nó không có tài liệu tham khảo. Một người dùng chỉ có thể hủy liên kết một tệp, nghĩa là xóa nó khỏi một thư mục. Bạn cần ghi quyền truy cập vào một thư mục để hủy liên kết một tệp từ nó. Hủy liên kết một tệp không sửa đổi tệp, vì vậy ghi quyền truy cập vào tệp là không liên quan.

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.