Có bao nhiêu bit trên hệ thống tệp linux được lấy cho các quyền của tệp?
Có bao nhiêu bit trên hệ thống tệp linux được lấy cho các quyền của tệp?
Câu trả lời:
Để thêm vào các câu trả lời khác:
Các quyền Unix truyền thống được chia thành:
r
)w
)x
)Mỗi trong số đó được lưu trữ dưới dạng một bit, trong đó 1 có nghĩa là được phép và 0 có nghĩa là không được phép.
Ví dụ: quyền truy cập chỉ đọc, thường được viết r--
, được lưu trữ dưới dạng nhị phân 100
hoặc bát phân 4
.
Có 3 bộ quyền đó, xác định quyền truy cập được phép cho:
Tất cả chúng được lưu trữ cùng nhau trong cùng một biến, ví dụ: rw-r-----
có nghĩa là đọc-ghi cho chủ sở hữu, chỉ đọc cho nhóm và không có quyền truy cập cho người khác, được lưu trữ dưới dạng 110100000
nhị phân, 640
bát phân.
Vì vậy, làm cho 9 bit.
Sau đó, có 3 bit đặc biệt khác:
Xem man 1 chmod
để biết chi tiết về những người.
Và cuối cùng, loại tệp được lưu trữ bằng 4 bit, ví dụ: đó là tệp thông thường, hoặc thư mục, hoặc đường ống, hoặc thiết bị, hoặc bất cứ thứ gì.
Tất cả đều được lưu trữ cùng nhau trong inode và cùng nhau tạo ra 16 bit.
Quyền nào? Quyền cơ bản phù hợp với 16 bit; ext2 sử dụng 32 bit, cộng thêm 32 bit cho cờ tệp ( chattr(1)
); sau đó POSIX ACL sử dụng không gian biến đổi ngoài ra. Xem /usr/include/linux/ext2_fs.h
để biết chi tiết. (ext3 và ext4 xây dựng trên ext2 và chủ yếu sử dụng cùng một cấu trúc.)
Thông tin về các tệp được lưu trữ trong một cấu trúc dữ liệu được gọi là inode. Có một trường trong cấu trúc này cho chế độ, trong đó có các quyền. Trường này trên hệ thống của tôi là một dấu ngắn không dấu là 2 byte và 16 bit.
Hãy xem fs.h trong nguồn Linux để tự mình xem.