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] Kiểm tra quyền truy cập hiệu lực

    Tổng hợp cơ chế phân quyền Unix: cho file có chủ owner_uid:owner_gid và mã quyền octal 3 chữ số, một user uid thuộc các nhóm gids, và một thao tác cần kiểm tra (r, w hoặc x).

    Quy tắc:

    1. root (uid = 0) luôn được phép đọc và ghi; với x root được phép nếu bất kỳ bit execute nào (owner/group/other) được bật.
    2. Ngược lại, chọn đúng một lớp quyền: owner nếu uid == owner_uid; ngược lại group nếu owner_gid ∈ gids; ngược lại other.
    3. Thao tác được phép nếu bit tương ứng của lớp đã chọn được bật.

    In ALLOW hoặc DENY.

    Ví dụ: quyền 640, chủ 1000:1000; user uid=2000 thuộc {1000}; thao tác r → lớp group (số 4 = r--) có r → ALLOW.

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

      Dòng 1: owner_uid owner_gid perm (perm là octal 3 chữ số). Dòng 2: uid rồi số K rồi K số GID của user. Dòng 3: thao tác — một trong r, w, x.

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

      0 ≤ uid,gid ≤ 65535; 0 ≤ K ≤ 100; mỗi chữ số perm 0..7.

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

      Một dòng: ALLOW hoặc DENY.

    Ví dụ:

    Đầu vào:

    1000 1000 640
    2000 1 1000
    r
    

    Đầu ra:

    ALLOW

    Giải thích:

    user khác chủ nhưng thuộc nhóm 1000 → lớp group=4 (r--), có r → ALLOW.

    Đang tải editor...