Công cụ dành cho nhà phát triển · Máy tính Chmod
Sửa nginx 403 Bị cấm: các quyền quan trọng đối với tệp và thư mục
· Tại sao nó quan trọng
chmod unix access-control
403 từ nginx thường là sự cố hệ thống tệp chứ không phải sự cố cấu hình. Bài đăng này cho thấy cách kiểm tra nginx của người dùng nào chạy và bit nào cần trên mỗi thư mục trong đường dẫn.
403 trên một trang web tĩnh hoạt động cục bộ — các tệp đến từ /home/deploy và nginx cho biết bị cấm đối với mọi URL
Nginx 403 có thể liên quan đến các bit chế độ, nhưng tuyến đường này không thể xác định được nguyên nhân của nó. Máy tính không có tích hợp nginx, nhật ký, trình phân tích cú pháp cấu hình, tra cứu quy trình hoặc trình đi bộ đường dẫn. Nó trả lời các câu hỏi hẹp hơn: liệu một lớp thư mục có thực thi hay không và liệu một lớp tệp thông thường có đọc hay không, giúp diễn giải bằng chứng được thu thập ở nơi khác.
Bắt đầu với các chế độ chính xác được quan sát trên từng thành phần đường dẫn thay vì giả sử các giá trị mặc định. Nhập từng chế độ và chọn loại mục tiêu của nó. Văn bản tượng trưng, các hộp kiểm và văn xuôi hiển thị các quyền của lớp và xác nhận chuyển đổi, nhưng không thể hiển thị rằng nginx đã cố gắng truy cập, danh tính mà nó đã sử dụng hoặc liệu các quyền của hệ thống tệp có tạo ra phản hồi hay không.
403 có thể liên quan đến các bit chế độ, nhưng tuyến đường này không thể xác định được nguyên nhân của nó
Máy tính không thể phát hiện danh tính nhân viên nginx. Nó mô hình hóa chủ sở hữu, nhóm và các lớp khác, nhưng không có tên người dùng, quy trình hoặc tư cách thành viên. Do đó, một chế độ như rwxr-xr-x không nói gì về việc một công nhân sở hữu đối tượng đó, thuộc về nhóm của nó hay thuộc nhóm khác. Kiểm tra bên ngoài phải thiết lập sự phân loại đó.
Việc phát hiện danh tính phải đi trước các yêu cầu về các bit có liên quan. Khi bằng chứng thiết lập lớp có thể áp dụng, ma trận hiển thị đọc dưới dạng 4, viết dưới dạng 2 và thực thi dưới dạng 1. Trước đó, nhóm chỉnh sửa này hay nhóm khác chỉ là phỏng đoán. Tuyến đường đọc không có trạng thái xử lý; nó dịch các chế độ được cung cấp thay vì suy ra kiến trúc máy chủ.
Máy tính không phát hiện ra danh tính nhân viên nginx
Kiểm tra từng thành phần thư mục dưới dạng chế độ được cung cấp riêng biệt. Đối với các thư mục, thực thi cho phép truy cập mục nhập và dựa trên tên, đọc cho phép liệt kê và ghi cho phép tạo, đổi tên và xóa các mục nhập. Phần giải thích dành riêng cho mục tiêu giúp người đánh giá xác định xem lớp được thiết lập bên ngoài có thực thi trên một thành phần cụ thể mà không yêu cầu kiểm tra chính đường dẫn đó hay không.
Trình duyệt không đi từ gốc đến gốc web. Nó không thể định vị thành phần chặn, xác nhận sự tồn tại hoặc kiểm tra ACL. Cung cấp riêng từng chế độ thư mục được quan sát, sau đó kiểm tra đối tượng cuối cùng dưới dạng tệp thông thường, trong đó việc đọc liên quan đến nội dung thay vì danh sách. Điều này diễn giải bằng chứng được thu thập thay vì thay thế việc kiểm tra hệ thống tệp.
Tệp cần r và không có gì hơn — tại sao 644 là đủ cho tệp tĩnh và tại sao 755 trên tệp không phải là giải pháp
Đối với tệp tĩnh, 644 hiển thị rw-r--r--. Chủ sở hữu nhận được đọc và viết, trong khi nhóm và những người khác nhận được đọc; không ai nhận được thực thi. Chuyển đổi này cho thấy việc đọc và thực thi tệp là các bit riêng biệt. Trang này không có cơ sở để quyết định liệu một máy chủ cụ thể có cần thực thi hay không vì chính sách máy chủ không có.
Giữ các giải thích về tệp và thư mục riêng biệt. Thực thi thư mục có nghĩa là khả năng truy cập dựa trên tên và mục nhập, trong khi thực thi tệp thông thường có nghĩa là chạy một chương trình. Do đó, hộp kiểm tương tự có văn xuôi dành riêng cho mục tiêu. So sánh 644 với 755 làm rõ các bit nhưng không thể chẩn đoán 403 hoặc quy định chế độ chung không có cấu hình, danh tính, ACL và bối cảnh chính sách.
Ví dụ đã hoạt động: truy tìm /home/deploy/site/index.html — namei -l trên đường dẫn và dòng ls -l hiển thị trình chặn
Một ví dụ được hỗ trợ bắt đầu sau khi bằng chứng đường dẫn được thu thập ở nơi khác. Giả sử các thành phần thư mục là 755 và tệp cuối cùng là 644. Máy tính hiển thị các thư mục dưới dạng rwxr-xr-x, giải thích nhóm và các thực thi khác dưới dạng mục nhập và khả năng tiếp cận. Nó hiển thị tệp dưới dạng rw-r--r--, giải thích nhóm và các nội dung khác được đọc dưới dạng quyền truy cập nội dung.
Nếu một thành phần là 750, thì bộ ba còn lại của nó là ---, trong khi nhóm vẫn giữ nguyên r-x. Sự khác biệt đó có thể quan trọng, nhưng không chứng minh được nginx sử dụng thứ khác. Tuyến đường không thể chạy namei hoặc ls, do đó bằng chứng bên ngoài phải cung cấp đường dẫn và chế độ. Sau đó, nó đồng bộ hóa mọi cách trình bày để giảm lỗi sao chép trong quá trình xem xét.
Ví dụ đã hoạt động: kiểm tra các chế độ được cung cấp cho từng thành phần của đường dẫn
Quyết định quyền sở hữu vẫn nằm ngoài việc chuyển đổi chế độ. Bảng điều khiển không đọc chủ sở hữu hoặc nhóm và không cung cấp thao tác chown hoặc chgrp. Nó không thể lựa chọn giữa việc triển khai, dịch vụ hoặc quyền sở hữu nhóm chia sẻ cũng như đánh giá nội dung chuyển động. Những quyết định đó yêu cầu bằng chứng về hệ thống và khối lượng công việc không có trong các nguồn; không có chế độ tạo nào có thể thay thế bối cảnh đó.
Khi quyền sở hữu được giải quyết ở nơi khác, hãy so sánh cách các chế độ phân chia quyền truy cập. Chế độ 750 cung cấp đầy đủ quyền cho chủ sở hữu, quyền đọc và thực thi của nhóm và không có gì cho người khác; 755 thêm thao tác đọc và thực thi khác. Điều này vẫn có điều kiện để biết tầng lớp của công nhân. Bản xem trước lệnh trơ không thay đổi quyền sở hữu cũng như không xác nhận quyền truy cập máy chủ.
Các lựa chọn quyền sở hữu vẫn nằm ngoài việc chuyển đổi chế độ
Cấu hình, lựa chọn chỉ mục, kiểm soát truy cập bắt buộc và hành vi ngược dòng không được chẩn đoán ở đây. Không có nguồn nào tải cấu hình nginx, kiểm tra URI hoặc chỉ mục, đọc nhật ký, liên hệ với thượng nguồn hoặc quan sát SELinux hoặc AppArmor. Do đó, việc chuyển đổi chính xác chế độ được cung cấp không thể xác định được lý do nginx trả về 403; bằng chứng máy chủ phải trả lời câu hỏi đó.
Giữ nguyên sự khác biệt này khi một chế độ có vẻ đáng ngờ. Bảng điều khiển có thể hiển thị rằng lớp thư mục thiếu khả năng thực thi hoặc lớp tệp thiếu khả năng đọc, nhưng mức độ liên quan phụ thuộc vào bằng chứng nhận dạng và đường dẫn. Các bit cho phép cũng không thể loại trừ các nguyên nhân khác. Nêu chính xác những gì chế độ cho phép, sau đó quay lại chẩn đoán dành riêng cho máy chủ.
Cấu hình, chỉ mục, MAC và các nguyên nhân ngược dòng không được chẩn đoán
Quyền truy cập đường dẫn có thể phụ thuộc vào mọi thành phần, tuy nhiên máy tính sẽ nhìn thấy một giá trị được cung cấp tại một thời điểm. Điểm mạnh của nó là giải mã chính xác: văn bản bát phân, ký hiệu và các hộp kiểm luôn được đồng bộ hóa, trong khi văn xuôi thư mục phân biệt danh sách, sửa đổi và mục nhập. Nó đơn giản hóa việc xem xét mà không giả vờ khám phá các thành phần hoặc quá trình đang cố gắng truy cập.
Thiết lập danh tính máy chủ và thu thập các chế độ đường dẫn bên ngoài tuyến đường này. Giải mã mọi thư mục dưới dạng thư mục và đối tượng cuối cùng dưới dạng tệp thông thường, tập trung vào lớp được xác minh bên ngoài. Điều tra cấu hình, ACL và chính sách bắt buộc một cách riêng biệt. Máy tính xác thực số học nhưng không thể xác định nguyên nhân của 403 hoặc xác minh cách khắc phục.