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] Mô phỏng kiểm tra quyền truy cập

    Mô phỏng kiểm tra quyền truy cập file

    Cho quyền file st_mode (octal), UID chủ sở hữu file fuid, GID nhóm file fgid, và một tiến trình có UID puid, GID pgid muốn thực hiện một thao tác. Hãy xác định tiến trình có quyền không.

    Quy tắc chọn nhóm quyền (lớp đầu tiên khớp được áp dụng, không xét tiếp lớp sau):

    1. Nếu puid == fuid → dùng quyền user (S_IRUSR/S_IWUSR/S_IXUSR).
    2. Ngược lại nếu pgid == fgid → dùng quyền group (S_IRGRP/...).
    3. Ngược lại → dùng quyền other (S_IROTH/...).

    Thao tác op là một ký tự: r (đọc), w (ghi), x (thực thi). In YES nếu lớp quyền tương ứng có bật bit cho thao tác đó, ngược lại NO.

    (Bỏ qua trường hợp đặc biệt root/UID 0.)

    Ví dụ

    • Vào: mode=0640, fuid=1000, fgid=1000, puid=1000, pgid=1000, op=w
    • Ra: YES (chủ sở hữu có quyền ghi).
    • Định dạng đầu vào:

      Một dòng gồm: mode(octal) fuid fgid puid pgid op, cách nhau bởi dấu cách. op là một trong r,w,x.

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

      Các UID/GID là số nguyên không âm; mode octal hợp lệ.

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

      Một dòng: YES hoặc NO.

    Ví dụ:

    Đầu vào:

    640 1000 1000 1000 1000 w
    

    Đầu ra:

    YES

    Giải thích:

    puid==fuid -> lớp user; user có w (6=rw).

    Đang tải editor...