Vấn đề là, tôi luôn nghĩ rằng các quyền này sụp đổ lẫn nhau, bắt đầu với cái chung nhất (khác -> nhóm -> người dùng).
Nếu đúng như vậy thì các quyền khác của Viking sẽ áp dụng cho mọi người.
Nói cách khác, nếu o = rwx ai quan tâm đến những sự thuyết phục cho nhóm và người dùng là gì?
Điều đó khác với câu trước của bạn. Ở đây, bạn đang ám chỉ rằng các quyền được kết hợp với nhau, ví dụ: userX có quyền đọc nếu userX sở hữu tệp và tệp có thể đọc được hoặc nếu một nhóm mà userX thuộc sở hữu tệp và tệp là nhóm có thể đọc được hoặc nếu tệp khác có thể đọc được. Nhưng đó không phải là cách nó hoạt động. Trong thực tế, o=rwx
có nghĩa là các rwx
quyền áp dụng cho người khác, nhưng nó không nói gì về các thực thể không phải là người khác.
Đầu tiên, nó không trực tiếp quan trọng nhóm người dùng thuộc về nhóm nào. Nhân không có khái niệm người dùng thuộc các nhóm. Hạt nhân duy trì là gì, đối với mọi quy trình, ID người dùng ( UID hiệu quả ) và danh sách ID nhóm (GID hiệu quả và GID bổ sung). Các nhóm được xác định tại thời điểm đăng nhập, theo quy trình đăng nhập - đó là quy trình đăng nhập đọc cơ sở dữ liệu nhóm (ví dụ /etc/group
). ID người dùng và nhóm được kế thừa bởi các tiến trình con¹.
Khi một quá trình cố gắng mở một tệp, với các quyền Unix truyền thống:
- Nếu người dùng sở hữu tệp là UID hiệu quả của quy trình, thì các bit quyền của người dùng sẽ được sử dụng.
- Mặt khác, nếu nhóm sở hữu tệp là GID hiệu quả của quy trình hoặc một trong các ID nhóm bổ sung của quy trình, thì các bit quyền của nhóm được sử dụng.
- Mặt khác, các bit cho phép khác được sử dụng.
Chỉ có một bộ bit rwx được sử dụng. Người dùng được ưu tiên hơn nhóm được ưu tiên hơn nhóm khác. Khi có danh sách kiểm soát truy cập , thuật toán được mô tả ở trên được khái quát hóa:
- Nếu có một ACL trên tệp cho UID hiệu quả của quy trình, thì nó được sử dụng để xác định xem quyền truy cập có được cấp hay không.
- Mặt khác, nếu có một ACL trên tệp cho GID hiệu quả của quy trình hoặc một trong các ID nhóm bổ sung của quy trình, thì các bit cho phép của nhóm được sử dụng.
- Mặt khác, các bit cho phép khác được sử dụng.
Xem thêm Ưu tiên của ACLS khi người dùng thuộc nhiều nhóm để biết thêm chi tiết về cách sử dụng các mục ACL, bao gồm cả tác dụng của mặt nạ.
Do đó -rw----r-- alice interns
chỉ ra một tệp có thể được đọc và viết bởi Alice và tất cả người dùng khác có thể đọc và ngoại trừ. Một tệp có quyền và quyền sở hữu ----rwx--- alice interns
chỉ có thể truy cập được đối với thực tập sinh ngoại trừ Alice (cho dù cô ấy có phải là thực tập sinh hay không). Vì Alice có thể gọi chmod
để thay đổi quyền, điều này không cung cấp bất kỳ bảo mật nào; đó là một trường hợp cạnh. Trên các hệ thống có ACL, cơ chế tổng quát cho phép xóa quyền từ người dùng cụ thể hoặc các nhóm cụ thể, đôi khi rất hữu ích.
Sử dụng một tập hợp các bit, thay vì hoặc nhập tất cả các bit cho mỗi hành động (đọc, ghi, thực thi), có một số lợi thế:
- Nó có tác dụng hữu ích là cho phép xóa quyền từ một nhóm người dùng hoặc nhóm, trên các hệ thống có ACL. Trên các hệ thống không có ACL, quyền có thể được xóa khỏi một nhóm.
- Việc thực hiện đơn giản hơn: kiểm tra một bộ bit, thay vì kết hợp nhiều bộ bit lại với nhau.
- Việc phân tích quyền của một tệp sẽ đơn giản hơn vì có ít thao tác hơn.
¹ Họ có thể thay đổi khi một setuid quá trình hoặc setgid được thực thi. Điều này không liên quan đến vấn đề trong tay.