Công cụ dành cho nhà phát triển · Máy tính Chmod
Chữ số chmod thứ tư: cách setuid, setgid và bit dính hoạt động
· Cách thức hoạt động
chmod unix developer-workflow
Các chế độ như 4755 và 2775 mang một chữ số đứng đầu thay đổi người chạy chương trình với tư cách hoặc người sở hữu tệp mới. Bài đăng này giải thích ba bit đặc biệt và cách chúng hiển thị trong ls -l.
Chữ s trong drwxrwsr-x — một thư mục dự án dùng chung hoạt động khác và đầu ra ls có một chữ cái không có trong bảng mã cơ bản
s trong rwxrwsr-x ghi lại hai sự kiện ở một vị trí: setgid được bật và thực thi nhóm cũng được bật. Quá trình triển khai lưu trữ setgid dưới dạng bát phân 2000, sau đó thay thế s cho ký tự thực thi nhóm. Với điểm đánh dấu loại thư mục được chọn, chế độ 2775 xuất hiện dưới dạng drwxrwsr-x trong khi bản tóm tắt gồm bốn chữ số giữ nguyên chữ số bit đặc biệt hàng đầu.
Đầu ra đó là một chuyển đổi, không phải là quan sát hệ thống tệp. Bộ chọn mục tiêu thay đổi cách trang giải thích các bit nhưng nó không bao giờ mở một thư mục hoặc kiểm tra quyền sở hữu. Đối với một thư mục, phần giải thích được triển khai cho biết các tệp mới được tạo kế thừa nhóm của thư mục. Việc một hệ thống lưu trữ cụ thể áp dụng hành vi đó hay một chính sách khác ảnh hưởng đến quyền truy cập đều cần có bằng chứng ngoài công cụ tính toán này.
Chữ số thứ tư và các chữ cái của nó — 4, 2 và 1 làm tiền tố ở chế độ quen thuộc, được hiển thị dưới dạng s và t ở vị trí thực thi, viết hoa khi bit thực thi bên dưới bị tắt
Chữ số bát phân đứng đầu kết hợp ba mặt nạ độc lập: setuid là 4000, setgid là 2000 và cố định là 1000. Các chữ cái của chúng chiếm các vị trí thực thi hiện có thay vì thêm các ký tự vào màn hình hiển thị chín vị trí. Setuid sử dụng vị trí chủ sở hữu, đặt vị trí nhóm và cố định vị trí khác. Ma trận hiển thị cả ba cách riêng biệt với việc đọc, ghi và thực thi thông thường.
Case tiết lộ bit thực thi cơ bản. Chế độ 4755 hiển thị rwsr-xr-x vì chủ sở hữu thực thi đi kèm với setuid; 4644 hiển thị rwSr--r-- vì không phải như vậy. Trình phân tích cú pháp đọc cả hai biểu mẫu trở lại thành các bit đặc biệt và thực thi tương ứng. Quy tắc dưới so với trên tương tự tạo ra s hoặc S cho setgid và t hoặc T cho cố định, bảo toàn tất cả các kết hợp trong các chuyến đi khứ hồi.
setuid trên các tệp thực thi - cách /usr/bin/passwd chạy với đặc quyền của chủ sở hữu tệp và tại sao Linux bỏ qua setuid trên các tập lệnh được giải thích
Đối với một tệp thông thường, phần giải thích setuid được triển khai tùy thuộc vào việc thực thi của chủ sở hữu. Khi có cả hai bit, trang cho biết việc chạy tệp sử dụng danh tính của chủ sở hữu tệp chứ không phải của người gọi. Khi setuid xuất hiện mà chủ sở hữu không thực thi, màn hình sẽ sử dụng chữ S viết hoa và giải thích rằng không có gì để chạy. Đây là phạm vi đã được sửa chữa, dựa trên nguồn của phần này.
Máy tính không xác định một tệp thực thi cụ thể, khởi chạy một tệp thực thi hoặc kiểm tra cách nền tảng xử lý các tập lệnh. Bằng chứng của nó là chế độ được cung cấp và lựa chọn mục tiêu. Chế độ 4755 có thể được phân tách thành setuid cộng với rwxr-xr-x và bản xem trước bài tập sẽ nối thêm u+s sau các mệnh đề thông thường. Điều đó chỉ xác minh kết xuất và giải thích; sự phù hợp của chương trình và việc thực hiện thực tế vẫn là những câu hỏi bên ngoài.
kết xuất và giải thích setuid cho các tệp thông thường
Setgid trên một thư mục được thể hiện độc lập với các quyền của nhóm thông thường. Chế độ 2775 kết hợp mặt nạ 2000 với chủ sở hữu và nhóm 7 và 5 khác. Màn hình rwxrwsr-x giúp nhóm đọc, ghi và thực thi trong khi thay thế x hiển thị bằng s. Giải thích thư mục liên kết bit đặc biệt với sự kế thừa của nhóm thư mục cho các tệp mới được tạo.
Việc xóa nhóm thực thi trong khi vẫn giữ lại setgid sẽ thay đổi chữ cái vị trí nhóm thành chữ S viết hoa. Cảnh báo hiển thị đó xuất hiện trực tiếp từ trình kết xuất, bất kể từ ngữ mục tiêu. Trang có thể so sánh các giá trị đã hoàn thành đó và hiển thị hộp kiểm nào đã thay đổi, nhưng nó không thể kiểm tra thư mục dùng chung, nhóm hiện tại của nó hoặc các mục tạo danh tính. Sự thống nhất giữa các quan điểm là bằng chứng số học, không phải là phê duyệt hoạt động.
Chú ý trên các thư mục — hạn chế xóa trong /tmp và tại sao 1777 không giống với 777
Sticky chiếm vị trí thực thi khác và đóng góp bát phân 1000. Đối với chế độ thư mục 1777, tất cả các quyền thông thường vẫn được bật và ký tự tượng trưng cuối cùng trở thành t. Phần giải thích về thư mục được triển khai bổ sung thêm hạn chế xóa và đổi tên, trong khi phần giải thích 777 cảnh báo về một thư mục có thể ghi mà không bị dính. Do đó, trình chuyển đổi làm cho sự khác biệt một bit có thể nhìn thấy được mà không thay đổi bộ ba rwx cơ bản.
Nếu có mặt dính mà không có lệnh thực thi khác thì thay vào đó, ký tự cuối cùng là chữ hoa T. Trình phân tích cú pháp và trình kết xuất duy trì sự khác biệt đó theo cả hai hướng. Trang này không kiểm tra thư mục được chia sẻ thực sự, chủ sở hữu mục nhập hoặc nỗ lực xóa. Kết luận đáng tin cậy của nó hẹp hơn: số nguyên được cung cấp chứa cố định, đối tượng thực thi của nó hiển thị thông qua kiểu chữ và văn bản giải thích hướng thư mục được chọn.
Ví dụ đã hoạt động: xây dựng 2775 cho một thư mục dùng chung — lấy các chữ số và ký hiệu tương đương chmod g+s,a+rwx,o-w
Xây dựng 2775 dưới dạng bốn thành phần hiển thị: chữ số đặc biệt 2 cho setgid, chữ số chủ sở hữu 7 cho rwx, chữ số nhóm 7 cho rwx và chữ số khác 5 cho r-x. Nhập giá trị hoàn thành sẽ tạo ra rwxrwsr-x. Ma trận chọn setgid riêng biệt, trong khi tên tóm tắt là chủ sở hữu, nhóm và các quyền khác cùng với bit đặc biệt đó.
Danh sách bài tập được tạo là u=rwx,g=rwx,o=rx,g+s. Điều này khác với cách hiển thị chín ký tự nhưng thể hiện cùng một giá trị 12 bit. Việc chọn thư mục sẽ thay đổi phần giải thích cho từ ngữ kế thừa nhóm đã triển khai; việc chọn tệp sẽ thay đổi từ ngữ mà không thay đổi 2775. Máy tính không bao giờ xác minh nhóm mục tiêu hoặc tạo tệp, vì vậy ví dụ này vẫn là một mô hình chứ không phải là một đơn thuốc triển khai.
Ví dụ đã hoạt động: xây dựng và đọc 2775 cho mô hình thư mục dùng chung
Hành vi gắn kết, khả năng và ngữ nghĩa nền tảng bổ sung không được mô hình hóa. Trang này không có đầu vào gắn kết, bộ khả năng, truy vấn kernel hoặc thăm dò hệ thống tệp. Nó có thể đại diện cho setuid, setgid và Sticky và có thể thay đổi cách giải thích giữa các tệp và thư mục thông thường. Nó không thể xác định liệu một quy tắc bên ngoài có vô hiệu hóa, mở rộng hoặc diễn giải các bit đó một cách khác nhau trên mục tiêu thực tế hay không.
Ngay cả từ ngữ góc của nguồn cũng không nên khái quát ra ngoài giao diện. Chế độ bit đặc biệt hợp lệ chứng minh rằng trình phân tích cú pháp, trình kết xuất, ma trận, tóm tắt và các phép gán được tạo đều đồng ý. Nó không chứng minh hành vi thực thi, kế thừa hoặc xóa đã xảy ra. Loại bỏ các xác nhận quyền sở hữu chính sách không được hỗ trợ khỏi chẩn đoán và xử lý lệnh được sao chép dưới dạng văn bản trơ cho đến khi một môi trường được kiểm tra riêng biệt cung cấp ngữ cảnh bị thiếu.
Chính sách gắn kết, khả năng và ngữ nghĩa góc chưa được triển khai vẫn ở bên ngoài
Việc thực hiện mang đi là một chuyến đi khứ hồi có ý nghĩa về vị trí. Setuid ánh xạ tới vị trí thực thi của chủ sở hữu, setgid để thực thi nhóm và dính vào thực thi khác. Chữ thường có nghĩa là bit thực thi liên quan được bật; chữ hoa có nghĩa là nó bị tắt. Chữ số bát phân hàng đầu và các hộp kiểm chuyên dụng lưu giữ cùng một thông tin, do đó không cần phải suy ra bit đặc biệt nào chỉ từ văn xuôi.
Kiểm tra một chế độ đặc biệt bằng cách so sánh tất cả các biểu diễn. Đối với 2775, hãy mong đợi 2 dẫn đầu, vị trí nhóm, hộp setgid đã chọn và phần bổ sung g+s được tạo. Sự không khớp sẽ gây ra vấn đề về chuyển đổi. Thỏa thuận chỉ thiết lập một chế độ nhất quán. Quyền sở hữu, chính sách gắn kết, khả năng, quy tắc ứng dụng và hậu quả của việc chạy chmod vẫn nằm ngoài bằng chứng của máy tính trình duyệt.