Tiếng Việt

Công cụ dành cho nhà phát triển · Máy tính Chmod

chmod trên Windows, macOS, FAT và chia sẻ mạng: nơi dừng các bit chế độ

· Lý lịch

chmod unix access-control

ranh giới hệ thống tệp được hiển thị dưới dạng sơ đồ bit cấp phép Unix riêng biệt
Hình minh họa vector ToolAcre gốc

Các bit chế độ là một ý tưởng của Unix và các hệ thống tệp khác có thể giả mạo hoặc loại bỏ chúng. Bài đăng này đề cập đến những gì xảy ra với các quyền trên các giá treo NTFS, FAT, macOS và SMB hoặc NFS cũng như cách git phản ứng.

Git hiển thị mọi tệp đều được sửa đổi - thay đổi duy nhất là chế độ 100644 thành 100755 sau khi sao chép trên hệ thống tệp khác

Thay đổi Git từ 100644 thành 100755 cho thấy một điểm khác biệt thông thường: 644 thiếu khả năng thực thi, trong khi 755 bao gồm nó cho cả ba lớp. Giải mã các giá trị theo sau sẽ mang lại rw-r--r-- và rwxr-xr-x. Máy tính không thể giải thích lý do Git báo cáo thay đổi, nền tảng nào đã tạo ra thay đổi đó hoặc liệu cài đặt hệ thống tệp và kho lưu trữ có ảnh hưởng đến việc quan sát hay không.

Sử dụng trình chuyển đổi làm bộ giải mã trung lập trước khi thay đổi chính sách. Nhập 644 và 755, so sánh từng hộp thực thi và xác nhận đầu ra ký hiệu. Đường dẫn tùy chọn chỉ ảnh hưởng đến văn bản lệnh được hiển thị; không có gì được đọc từ đĩa. Không có trình phân tích cú pháp Git hoặc quyền truy cập siêu dữ liệu, trang sẽ thiết lập ý nghĩa chế độ nhưng không thiết lập mục đích dự án hoặc quyền cấp phép.

Thay đổi chế độ trong Git có thể được giải mã ở đây nhưng không được quy cho nền tảng

Hành vi ACL của Windows yêu cầu các nguồn không có ở đây. Máy tính mô hình một lớp chủ sở hữu, một lớp nhóm, mọi người khác và ba bit đặc biệt. Nó đại diện cho không có mục truy cập Windows, tính kế thừa, danh tính hoặc cú pháp nào. Đề cương đề cập đến siêu dữ liệu WSL nhưng không có tài liệu tài liệu kho lưu trữ được cung cấp nào, vì vậy các tuyên bố chi tiết về nền tảng sẽ vượt quá bằng chứng sẵn có.

Ký hiệu tượng trưng vẫn là số học hữu ích ngay cả khi việc lưu trữ sử dụng mô hình khác. Trình phân tích cú pháp chấp nhận chín ký tự cấp phép, tùy chọn có điểm đánh dấu loại được nhận dạng, xác thực từng vị trí và chuyển đổi chúng thành một số nguyên. Nó không thể cho biết liệu Windows hoặc WSL có tồn tại, tổng hợp hay bỏ qua giá trị đó hay không. Tham khảo tài liệu nền tảng có trách nhiệm trước khi áp dụng các lệnh được hiển thị.

Hành vi siêu dữ liệu Windows ACL và WSL cần nguồn nền tảng

FAT-mặt nạ gắn trên gia đình nằm ngoài phạm vi triển khai này. Bảng điều khiển không có trường umask, fmask, dmask, mount-option hoặc hệ thống tệp. Nó có thể chia chế độ được báo cáo thành chủ sở hữu, nhóm và các bit khác nhưng không thể lấy chế độ đó từ cấu hình hoặc chứng minh cách FAT hoặc exFAT tạo ra chế độ đó. Tuyên bố về hành vi rộng hơn cần có nguồn nền tảng bên ngoài.

Hãy làm theo hướng mà bằng chứng hỗ trợ. Nhận chế độ hiệu quả từ quan sát hệ thống đáng tin cậy, sau đó nhập chế độ đó và kiểm tra các cờ đọc, ghi và thực thi được đại diện. Bản tóm tắt gồm bốn chữ số cũng tiết lộ các bit đặc biệt được cung cấp. Đừng đảo ngược số học đó thành chẩn đoán gắn kết: số nguyên không ghi nguồn gốc và truy vấn trang không có bộ nhớ.

FAT-mặt nạ gắn trên gia đình nằm ngoài phạm vi triển khai

Siêu dữ liệu macOS bổ sung không được phân tích cú pháp theo tuyến này. Đầu vào tượng trưng yêu cầu chín vị trí cấp phép, tùy chọn trước một ký tự loại tệp được nhận dạng. Nó không chấp nhận chỉ báo theo dõi, không đọc mục nhập hoặc cờ ACL và không truy vấn siêu dữ liệu đường dẫn. Chế độ rwx cơ bản có thể được giải mã riêng nhưng mọi tín hiệu macOS bổ sung vẫn nằm ngoài các nguồn này.

Với 755 sạch sẽ, máy tính sẽ hiển thị rwxr-xr-x và giải thích nó cho mục tiêu đã chọn. Thực thi thư mục có nghĩa là nhập và tiếp cận các mục được đặt tên; thực thi tệp có nghĩa là chạy một chương trình. Sự khác biệt dựa trên việc triển khai đó vẫn tồn tại trong phân bổ nền tảng. Bất kỳ quy tắc truy cập, ký hiệu hoặc tương tác bổ sung nào của macOS với các bit chế độ đều yêu cầu bằng chứng cụ thể không có trong tài liệu kho lưu trữ này.

Siêu dữ liệu macOS bổ sung không được phân tích cú pháp theo tuyến này

SMB và NFS ánh xạ nhận dạng hoặc tổng hợp chế độ nằm ngoài việc triển khai. Trình chuyển đổi không liên hệ với máy chủ, không đọc cấu hình gắn kết, không giải quyết UID và không thể xác định chủ sở hữu hoặc nhóm. Các lớp của nó là các khe trừu tượng có nguồn gốc từ một số nguyên. Chế độ được báo cáo bởi thiết bị gắn mạng vẫn có thể giải mã được nhưng hoạt động chi tiết của hệ thống tệp mạng không được hỗ trợ ở đây.

Ranh giới này ngăn chặn lỗi danh mục. Chế độ 775 có nghĩa là chủ sở hữu và nhóm có rwx trong khi người khác có r-x. Nó không tiết lộ quyền sở hữu từ xa, tư cách thành viên nhóm, ánh xạ nhận dạng hoặc liệu máy chủ có tổng hợp màn hình hay không. Xác minh các bit được trình bày ở đây, sau đó thu thập bằng chứng xuất, máy khách, máy chủ và danh tính từ môi trường thực tế trước khi quyết định ủy quyền.

SMB và NFS việc tổng hợp danh tính hoặc chế độ nằm ngoài quá trình triển khai

Khi Git báo cáo thay đổi chế độ, hãy giải mã các giá trị trước khi sửa đổi chính sách. Đối với 100644 và 100755, hãy sử dụng 644 và 755: rw-r--r-- trở thành rwxr-xr-x. Chủ sở hữu, nhóm và những người khác đều được thực thi vì chữ số của họ có trọng số 1. Điều này thiết lập sự khác biệt về ngữ nghĩa mà không chỉ định nguyên nhân cho Git, nền tảng hoặc hệ thống tệp.

Xác định ý định từ bằng chứng dự án mà các nguồn này không chứa. Máy tính không thể đọc core.fileMode, phân tích cú pháp .gitattributes, kiểm tra chỉ mục hoặc quyết định xem trạng thái thực thi có chính xác hay không. Lệnh dựa trên đường dẫn của nó vẫn chưa được thực thi. Đưa sự khác biệt về rwx đã được xác minh vào đánh giá kho lưu trữ, sau đó chỉ thay đổi chính sách sau khi xác định được nguồn sự thật dự kiến.

Ví dụ đã hoạt động: giải mã chế độ báo cáo Git trước khi thay đổi chính sách kho lưu trữ

Các lệnh cấp quyền của Windows thuộc về một mô hình riêng biệt. Công cụ này phát ra các dạng chmod chẳng hạn như giá trị bát phân hoặc u=rw,g=r,o=r. Nó không phân tích cú pháp Windows cũng như không ánh xạ ba lớp Unix vào ACL của Windows. Bất kỳ bản dịch trông hợp lý nào cũng sẽ là phát minh, bởi vì mười hai bit truyền thống không thể bảo toàn mọi danh tính và mục truy cập được đại diện bởi một hệ thống ủy quyền khác.

Ủy quyền lưu trữ đối tượng cũng riêng biệt như nhau. Máy tính chỉ chấp nhận chế độ truyền thống và không bao giờ liên hệ với dịch vụ, đọc chính sách nhóm hoặc xử lý danh tính đối tượng. Sử dụng nó khi một giá trị bát phân hoặc ký hiệu kiểu Unix thực tế cần giải mã. Đối với lưu trữ đối tượng và các mô hình khác, hãy kiểm tra dữ liệu và tài liệu về chính sách gốc thay vì buộc chúng phải sử dụng ký hiệu chmod.

Cú pháp và lưu trữ đối tượng của Windows vẫn là các mô hình riêng biệt

Xác nhận lớp nào sở hữu quyền thật sự trước khi sử dụng chmod. Một chế độ được trình bày bởi Git, thú cưỡi hoặc nền tảng khác có thể được dịch sang các bit chủ sở hữu, nhóm, khác và các bit đặc biệt. Quá trình xác thực sẽ phát hiện các chữ số và vị trí ký hiệu không đúng định dạng, trong khi s, S, t và T duy trì trạng thái đặc biệt. Sự chuyển đổi giải thích giá trị chứ không phải nguồn gốc hay thẩm quyền của nó.

Đánh giá cuối cùng nên tách số học khỏi môi trường. Xác minh chế độ, ghi lại chính xác lớp và bit khác nhau, đồng thời xác định mục tiêu là tệp hoặc thư mục. Sau đó kiểm tra nền tảng, hệ thống tệp, cài đặt kho lưu trữ, danh tính, ACL và chính sách bằng các nguồn gốc. Vai trò hạn hẹp của trang này rất có giá trị: diễn giải chế độ Unix đáng tin cậy mà không cần giả vờ chẩn đoán việc thực thi đa nền tảng.