Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] Đánh giá chính sách sudoers

    Một tập quy tắc sudoers rút gọn, mỗi dòng có dạng:

    <chủ thể> <quyền> <lệnh>
    
    • <chủ thể>: tên_user hoặc %tên_nhóm.
    • <quyền>: PASSWD (cần nhập mật khẩu) hoặc NOPASSWD.
    • <lệnh>: đường dẫn lệnh cụ thể, hoặc ALL (mọi lệnh).

    Khi user chạy một lệnh, ta quét các quy tắc và áp dụng quy tắc KHỚP CUỐI CÙNG (sudoers ưu tiên dòng sau cùng) — đúng tinh thần sudoers. Một quy tắc khớp nếu chủ thể khớp (user trực tiếp hoặc user thuộc nhóm) và lệnh khớp (ALL hoặc trùng đường dẫn).

    Kết quả:

    • Không quy tắc nào khớp → DENY.
    • Quy tắc khớp cuối là NOPASSWD → ALLOW_NOPASSWD.
    • Quy tắc khớp cuối là PASSWD → ALLOW_PASSWD.

    Ví dụ: rule %sudo PASSWD ALL rồi alice NOPASSWD /usr/bin/apt; user alice thuộc sudo chạy /usr/bin/apt → khớp cả hai, dòng cuối thắng → ALLOW_NOPASSWD.

    • Định dạng đầu vào:

      Dòng 1: số R rồi R dòng quy tắc <chủ thể> <quyền> <lệnh>. Dòng tiếp: số K rồi K tên nhóm của user (mỗi dòng một tên). Dòng kế: tên user. Dòng cuối: đường dẫn lệnh muốn chạy.

    • Ràng buộc đầu vào:

      1 ≤ R ≤ 1000; 0 ≤ K ≤ 100; các trường không chứa khoảng trắng.

    • Định dạng đầu ra:

      Một dòng: DENY, ALLOW_PASSWD hoặc ALLOW_NOPASSWD.

    Ví dụ:

    Đầu vào:

    2
    %sudo PASSWD ALL
    alice NOPASSWD /usr/bin/apt
    1
    sudo
    alice
    /usr/bin/apt
    

    Đầu ra:

    ALLOW_NOPASSWD

    Giải thích:

    Cả hai quy tắc khớp; sudoers lấy dòng cuối (NOPASSWD) → ALLOW_NOPASSWD.

    Đang tải editor...