Công cụ dành cho nhà phát triển · Máy tính Chmod
chế độ ký hiệu chmod được giải thích: u+x, g-w, o=r và a+rX
· Cách thức hoạt động
chmod unix developer-workflow
Hình thức biểu tượng của chmod là một ngữ pháp nhỏ: ai, toán tử, bit nào. Bài đăng này tách nó ra để u+x và go-rwx trở nên rõ ràng và hiển thị khi biểu tượng nhịp bát phân.
Một tập lệnh triển khai chứa đầy các chữ cái — chmod u+x,go-w deploy.sh hoạt động nhưng không ai trong nhóm có thể nói nó thay đổi điều gì
Một lệnh như u+x trông giống như màn hình biểu tượng của máy tính, nhưng hai dạng này có công việc khác nhau. Trường ký hiệu có thể chỉnh sửa chấp nhận 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. Ngược lại, đối số chmod được tạo sẽ giải thích các phép gán hoàn chỉnh với các mệnh đề u=, g= và o=, do đó, nó thể hiện một chế độ cố định thay vì phân tích cú pháp một thay đổi tương đối.
Việc nhập 750 sẽ làm cho sự khác biệt trở nên cụ thể. Màn hình hiển thị là rwxr-x---, trong khi phép gán được tạo là u=rwx,g=rx,o=. Cả hai đều mô tả cùng một chủ sở hữu, nhóm và các bit khác, tuy nhiên chỉ có bit thứ hai được định dạng dưới dạng đối số chmod. Trang không bao giờ chạy lệnh đó. Nó hiển thị cách biểu diễn để giá trị đề xuất có thể được xem xét trước bất kỳ hành động shell riêng biệt nào.
Máy tính tách màn hình kiểu ls khỏi danh sách bài tập mà nó tạo ra
Các chữ cái u, g và o xuất hiện trong bài tập được tạo vì chúng gắn nhãn chủ sở hữu, nhóm và người khác. Mọi đầu ra đều đặt tên rõ ràng cho cả ba lớp, bao gồm cả một mệnh đề trống khi một lớp không có quyền. Máy tính không phân tích ngữ pháp bị bỏ qua hoặc một cách viết tắt. Đầu vào của nó bắt đầu từ một chế độ đã hoàn thành, không phải các hướng dẫn có kết quả phụ thuộc vào mục tiêu hiện có.
Sự điều chỉnh này ngăn chặn việc xác nhận quá mức một cách tinh vi. Ma trận có thể hiển thị chính xác lớp nào nhận được đọc, ghi hoặc thực thi, nhưng nó không thể quyết định bộ chọn lớp bị bỏ qua sẽ có ý nghĩa gì trong một triển khai chmod khác. Thay vào đó, hãy so sánh ba cột ma trận với ba mệnh đề gán. Thỏa thuận của họ xác minh giá trị cố định mà không dựa vào các quy tắc lệnh tương đối mà giao diện này không thực hiện.
Chữ cái của ai xuất hiện trong bài tập được tạo; bị bỏ qua tương đối-ngữ pháp của ai không được phân tích cú pháp
Trình tạo bài tập sử dụng = cho mỗi lớp thông thường. Lựa chọn đó sẽ xây dựng lại chính xác chủ sở hữu, nhóm được yêu cầu và các bộ ba khác, bao gồm cả việc xóa một lớp bằng cách phát ra phía bên phải trống. Mặc dù + và - thuộc về các lệnh chmod tượng trưng nhưng chúng không được chấp nhận làm đầu vào của máy tính. Do đó, trang này không lập mô hình các lần bổ sung hoặc xóa dần từ chế độ bắt đầu không xác định.
So sánh một bit cho thấy quy trình làm việc được hỗ trợ có thể chứng minh điều gì. Chế độ 750 hiển thị rwxr-x---; việc thay đổi chữ số nhóm thành 7 tạo ra rwxrwx--- và thay đổi g=rx thành g=rwx. Máy tính xác định các chế độ trước và sau đã hoàn thành. Nó không đánh giá g+w so với một tệp trực tiếp, vì không có chế độ, đường dẫn, hệ thống tệp hoặc thực thi lệnh hiện tại nào tham gia vào quá trình chuyển đổi.
Toán tử được tạo là =, trong khi ngữ pháp đầu vào + và - vẫn nằm ngoài công cụ
Trình phân tích cú pháp nhận ra r và w ở các vị trí cố định của chúng, cộng với x hoặc - ở các vị trí thực thi thông thường. Nó cũng chấp nhận s, S, t và T trong đó các bit đặc biệt chia sẻ các vị trí đó. Chữ X viết hoa thì khác: nó thuộc ngữ pháp chmod tương đối và không được hỗ trợ ở đây. Việc cung cấp X bị từ chối thay vì được hiểu ngầm như một bit thực thi thông thường.
Các chữ cái đặc biệt viết thường và viết hoa được thực hiện có chủ ý. Setuid và setgid sử dụng s khi có bit thực thi phù hợp và S khi không có; Sticky sử dụng t hoặc T theo cùng một quy tắc ở vị trí thực thi khác. Hàng đặc biệt và tóm tắt gồm bốn chữ số bảo toàn các bit đó. Không có điều nào trong số này bổ sung hỗ trợ cho lựa chọn Capital-X có điều kiện trên các tệp và thư mục.
Trình phân tích cú pháp chấp nhận r, w, x, s, S, t và T; vốn X không được hỗ trợ
Các biểu thức sao chép lớp như g=u không được triển khai. Máy tính không bao giờ đọc lớp nguồn từ một đối tượng hiện có hoặc áp dụng bit của lớp này cho lớp khác. Nó nhận được chế độ bát phân hoặc kiểu ls hoàn chỉnh, chuyển đổi giá trị đó thành các boolean được đặt tên và phát ra các cờ rõ ràng cho mỗi lớp. Mọi kết quả sao chép phải được tính toán ở nơi khác trước khi trang này có thể kiểm tra nó.
Giả sử một bước bên ngoài xác định rằng cả chủ sở hữu và nhóm đều phải có rwx trong khi những người khác thì không có. Nhập 770 mang lại rwxrwx--- và u=rwx,g=rwx,o=. Điều đó xác nhận kết quả đã hoàn thành nhưng không chứng minh được nó được tạo ra như thế nào. Quyền sở hữu cũng vẫn chưa được xác định: trình chuyển đổi gắn nhãn các lớp mà không xác định chủ sở hữu thực sự, nhóm hoặc quy trình sẽ gặp phải mục tiêu.
Sao chép quyền giữa các lớp không được triển khai
Chế độ 0750 được chấp nhận với số 0 đứng đầu và được phân tích cú pháp có cùng giá trị với 750. Chữ số chủ sở hữu 7 kích hoạt đọc, ghi và thực thi; chữ số nhóm 5 kích hoạt đọc và thực thi; chữ số khác 0 không kích hoạt gì. Màn hình được đồng bộ hóa trở thành rwxr-x--- và bản tóm tắt luôn có bốn chữ số giúp 0750 hiển thị dưới dạng giá trị đánh giá rõ ràng.
Phép gán ký hiệu được tạo cho chế độ cố định đó là u=rwx,g=rx,o=. Ba mệnh đề của nó tương ứng trực tiếp với các cột ma trận, trong khi bản xem trước lệnh bát phân sử dụng 750 trừ khi bit đặc biệt yêu cầu chữ số thứ tư. Đường dẫn được cung cấp có thể được trích dẫn trong bản xem trước nhưng nó không bao giờ được mở. Ví dụ này xác minh tính đại diện chứ không phải quyền sở hữu, ủy quyền hoặc thay đổi quyền thành công.
Ví dụ đã hoạt động: 0750 dưới dạng chế độ cố định và danh sách bài tập được tạo
Các thay đổi dựa trên tham chiếu, xử lý liên kết tượng trưng và các thao tác ACL vẫn nằm ngoài trình chuyển đổi này. Không có đầu vào tệp tham chiếu, truyền tải đường dẫn, mô hình mục nhập ACL hoặc truy vấn hệ thống tệp trong trang. Việc chọn đệ quy chỉ thêm cờ -R được hiển thị. Do đó, lệnh được tạo không thể báo cáo đối tượng nào sẽ được tiếp cận hoặc liệu lớp kiểm soát truy cập khác có thay đổi kết quả hiệu quả hay không.
Đầu vào không hợp lệ cung cấp khả năng kiểm tra ranh giới hữu ích. Thư cấp phép bị đặt sai vị trí, chữ X không được hỗ trợ, dấu ở cuối hoặc chữ số bát phân không đúng định dạng sẽ bị từ chối thay vì được sửa chữa. Việc sửa văn bản thành màn hình chín ký tự được hỗ trợ sẽ tạo ra chế độ và chế độ xem được đồng bộ hóa. Sự chấp nhận đó chỉ chứng minh rằng chuỗi ánh xạ tới mười hai bit được triển khai; nó không xác nhận tính năng chmod bên ngoài hoặc môi trường đích.
Các hoạt động tham chiếu, liên kết tượng trưng và ACL vẫn nằm ngoài trình chuyển đổi này
Sự khác biệt thực tế là giữa hiển thị kiểu ls và phép gán cố định được tạo, không phải giữa đầu vào ký hiệu là đầu vào tương đối và đầu vào bát phân là tuyệt đối. Cả hai biểu mẫu có thể chỉnh sửa đều thể hiện một chế độ đã hoàn thành. Máy tính chuyển đổi một trong hai thành cùng một số nguyên, ma trận, tóm tắt, giải thích và xem trước, sau đó đưa ra các mệnh đề u=, g= và o= rõ ràng cho dạng lệnh tượng trưng.
Sử dụng các chế độ xem được đồng bộ hóa đó để phát hiện các lỗi số học. Nếu 750, rwxr-x--- và u=rwx,g=rx,o= xuất hiện cùng nhau thì chế độ cố định sẽ nhất quán bên trong. Dừng lại ở đó trừ khi hệ thống thực tế cung cấp thêm bằng chứng. Trang này không phân tích cú pháp các toán tử tương đối, bộ chọn bị bỏ qua, sao chép lớp hoặc X viết hoa và không thể xác định xem chế độ có giải quyết được thao tác thực sự bị lỗi hay không.