Quyền tìm kiếm trên từng thư mục trước khi dùng khóa
Khóa có thể là 0600 mà vẫn không mở được khi thư mục cha chặn việc đi qua đường dẫn. Hãy đi toàn bộ đường dẫn bằng tài khoản dịch vụ trước khi đổi bất kỳ chế độ nào.
Chế độ 0600 và chủ sở hữu đúng không bảo đảm dịch vụ mở được khóa. Quyền còn thiếu thường nằm ở một thư mục phía trên. Linux phân giải đường dẫn từng thành phần một, và mỗi bước cần quyền tìm kiếm trước khi thử bước tiếp theo. Hãy đọc toàn bộ đường dẫn, không chỉ dòng cuối của danh sách.
Quyền đọc là bước cuối, không phải bước duy nhất
Mở một tệp đòi hỏi nhân hệ điều hành đi từ gốc hoặc thư mục làm việc qua từng thành phần của đường dẫn. Một thư mục không có quyền tìm kiếm sẽ dừng chuyến đi đó bằng lỗi quyền. Chế độ của chính tệp không bao giờ được xem xét, nên một khóa hoàn toàn đọc được lại trông như không đọc được. Lỗi thường đến khi mở mà không nêu tên thư mục, vì vậy tệp cuối cùng bị đổ lỗi.
Với một thư mục, bit thực thi nghĩa là tìm kiếm, không phải chạy nội dung. Khóa vẫn là dữ liệu, và không phần nào của việc sửa này đòi hỏi đánh dấu nó là thực thi được.
Đi đường dẫn bằng tài khoản dịch vụ
Liệt kê từng thành phần cùng chủ sở hữu và chế độ, sau đó lặp lại việc đọc với tư cách danh tính thật của dịch vụ. Khác biệt giữa shell của bạn và daemon thường chính là toàn bộ câu trả lời. Hãy đi theo các liên kết tượng trưng đến đích thật, vì đường dẫn đã phân giải mới là thứ được kiểm tra.
namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key
Một dịch vụ cũng có thể mở tệp trong nhiều giai đoạn. Một phần tài liệu được đọc trong lúc thiết lập đặc quyền, còn các tệp khác được mở sau khi bỏ đặc quyền. Một shell root đọc tệp không tái tạo quyền truy cập của tiến trình về sau. Không gian tên gắn kết có thể trình bày một góc nhìn khác của cùng đường dẫn, đặc biệt bên trong vùng chứa, nên hãy so sánh góc nhìn hệ thống tệp của daemon với của bạn.
Đổi quyền hẹp nhất phù hợp
Chọn cách bố trí nhỏ nhất cấp quyền truy cập cho tiến trình: một nhóm được kiểm soát có quyền tìm kiếm trên các thư mục cần thiết, một vị trí được quản lý mà dịch vụ đã sở hữu, hoặc một cơ chế khác đã được ghi lại. Đọc tệp không cần quyền ghi trên thư mục của nó. Quyền ghi nhóm rộng trên cấu hình đặc quyền không phải là cách sửa đường dẫn thông thường. 0777 đệ quy cũng không phải giải pháp.
Ghi lại thành phần bạn đã đổi và lý do. Một thay đổi quyền không có lý do được ghi lại thì khó xem lại và dễ bị lãng quên.
Chỉ nhìn xa hơn các chế độ sau khi đã đi xong
Nếu các bit chế độ có vẻ đủ, các kiểm tra còn lại là ACL, chính sách bảo mật và giới hạn sandbox. ACL có thể cấp quyền truy cập mà các bit chế độ cho là thiếu, hoặc từ chối quyền truy cập mà chúng có vẻ cho phép. Những thiết lập đó thuộc về chủ cấu hình hiện có, và nên được điều chỉnh hẹp thay vì tắt. Sự khác biệt về gốc hoặc thư mục làm việc cũng có thể giải thích một đường dẫn tuyệt đối chạy được trong ngữ cảnh này mà hỏng trong ngữ cảnh khác.
Đừng quên tệp là gì trong khi sửa quyền truy cập. Chứng chỉ CA là công khai theo thiết kế; khóa riêng thì không. Các tệp mà ứng dụng khách ghi lại cũng cần quyền ghi khác với một khóa danh tính chỉ đọc. Kiểm tra siêu dữ liệu mà không in bí mật, sau đó xác nhận rằng chính dịch vụ hoạt động sau thay đổi. Một ghi chú ngắn trong tài liệu dịch vụ giúp người tiếp theo khỏi phải đi lại con đường đó.