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] Bit đặc biệt setuid/setgid/sticky

    Bit đặc biệt: setuid, setgid, sticky

    Trường st_mode có 3 bit đặc biệt:

    • S_ISUID (setuid): nếu bật, ký tự x của user hiển thị thành s.
    • S_ISGID (setgid): nếu bật, ký tự x của group hiển thị thành s.
    • S_ISVTX (sticky): nếu bật, ký tự x của other hiển thị thành t.

    (Trong bài này luôn coi như bit x tương ứng đang bật, nên dùng chữ thường s/t.)

    Cho 4 chữ số octal pmode (ví dụ 4755): chữ số đầu là bit đặc biệt (setuid=4, setgid=2, sticky=1), 3 chữ số sau là quyền rwx thường. Hãy in chuỗi 9 ký tự symbolic có áp dụng bit đặc biệt.

    Ví dụ

    • Vào: 4755
    • Ra: rwsr-xr-x (setuid -> s ở vị trí x của user).
    • Định dạng đầu vào:

      Một dòng: số octal 4 chữ số (chữ số đầu 0..7 là bit đặc biệt).

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

      4 chữ số octal hợp lệ; giả định bit x của nhóm tương ứng đang bật khi có bit đặc biệt.

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

      Một dòng: chuỗi 9 ký tự symbolic.

    Ví dụ:

    Đầu vào:

    4755
    

    Đầu ra:

    rwsr-xr-x

    Giải thích:

    setuid bật, x của user thành s.

    Đang tải editor...