Tại sao sử dụng bit dính?


18

"Bit dính chỉ áp dụng cho các thư mục và thường được sử dụng trên các thư mục có thể ghi công khai. Trong một thư mục mà bit dính được áp dụng, người dùng không được xóa hoặc đổi tên bất kỳ tệp nào mà họ không sở hữu."

Điều này có nghĩa là nếu tôi chạy như sau:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

Người dùng vẫn có thể xóa hoặc đổi tên bất kỳ tệp nào không thuộc về họ?

Câu trả lời:


22

Các bit dính là hữu ích trên các thư mục có thể ghi trên thế giới, chẳng hạn như /tmp. Trong các thư mục này, bất kỳ ai cũng có thể tạo một tệp, vì vậy thư mục cần có thể ghi trên thế giới. Nhưng điều đó có nghĩa là bất cứ ai cũng có thể xóa một tập tin, ngay cả khi nó không thuộc về họ, vì việc xóa một tập tin được kiểm soát bởi quyền ghi trên thư mục. Khi một thư mục có bit dính, chỉ chủ sở hữu của một tệp có quyền xóa nó.

Trong một thư mục có quyền rwx------hoặc rwxr-xr-x, chỉ chủ sở hữu của thư mục có thể tạo hoặc xóa một tệp. Nếu có bất kỳ tệp nào thuộc về một người dùng khác (được chuyển đến bởi root hoặc được tạo khi thư mục có nhiều quyền mở hơn), thì đó vẫn là chủ sở hữu của thư mục có quyền xóa chúng chứ không phải chủ sở hữu của tệp.

Trong một thư mục có quyền rwxrwx---, tất cả các thành viên của nhóm có thể tạo và xóa các tệp. Bất kỳ thành viên nào trong nhóm cũng có thể xóa bất kỳ tệp nào ngay cả khi nó thuộc về một người dùng khác. Nếu các quyền rwxrwx--Tthay thế (vốn Tlà như thế t, nhưng tcó nghĩa là xbit được đặt và Tcó nghĩa là xbit rõ ràng), thì bất kỳ thành viên nào trong nhóm cũng có thể tạo tệp và các thành viên của nhóm có thể xóa tệp nhưng chỉ các tệp của riêng họ .

Bạn có thể sử dụng lệnh sau để xem thư mục nào có bit dính trên hệ thống của bạn:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Bạn sẽ tìm thấy một số thư mục /tmpmở cho tất cả mọi người và một số thư mục /var/spool/cron/crontabsđược dành riêng cho một chương trình hệ thống chạy dưới dạng nhóm riêng của nó ( setgid ), trong đó bit dính đảm bảo rằng chương trình chỉ có thể xóa các tệp thay mặt cho Người dùng sở hữu chúng (điều đảm bảo rằng chương trình chỉ có thể tạo tệp thay cho người dùng sở hữu chúng là chương trình đang chạy với tư cách người dùng đó, không phải là root, vì vậy không thể tạo tệp thuộc về người dùng khác).

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.