Có bao nhiêu bit là cờ truy cập của một tập tin?


7

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?


Bạn có nghĩa đen là các bit quyền truyền thống hay bạn quan tâm đến siêu dữ liệu giống như quyền khác?
mattdm

Câu trả lời:


9

Để 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:

  • đọc ( r)
  • viết ( w)
  • thực thi tập tin / thư mục truy cập ( 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 100hoặc bát phân 4.

Có 3 bộ quyền đó, xác định quyền truy cập được phép cho:

  • chủ sở hữu của tập tin
  • nhóm của tập tin
  • tất cả người dùng khác

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 110100000nhị phân, 640bát phân.

Vì vậy, làm cho 9 bit.

Sau đó, có 3 bit đặc biệt khác:

  • setuid
  • setgid
  • dính

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.


Sau khi tôi bối rối bởi bài đăng trên blog này về quyền truy cập tệp linux, tôi gần như muốn hỏi về nó trong UL-SE nhưng may mắn tôi đã tìm thấy lời giải thích của bạn.
nhân

4

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.)


3

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.

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.