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

    solution

    Đề bài: [An toàn thông tin] Chuyển đổi ACL sang Capability List

    Trong kiểm soát truy cập, cùng một tập quyền có thể biểu diễn theo hai chiều:

    • ACL (Access Control List): mỗi đối tượng lưu danh sách các cặp (chủ thể, quyền) được cấp trên nó.
    • Capability List: mỗi chủ thể lưu danh sách các cặp (đối tượng, quyền) mà nó được cấp.

    Đây là hai cách nhìn của cùng một ma trận kiểm soát truy cập (theo hàng hay theo cột). Cho hệ thống ACL, hãy chuyển đổi sang Capability List.

    Quyền (perm) là một chuỗi không rỗng gồm các ký tự phân biệt lấy từ {r, w, x} theo đúng thứ tự đó (ví dụ: r, w, rw, rx, rwx), và mỗi chủ thể chỉ xuất hiện tối đa một lần trong ACL của một đối tượng.

    Ví dụ

    Input:

    2
    File1 2
    Alice rw
    Bob x
    File2 1
    Alice r
    

    Output:

    2
    Alice: File1:rw,File2:r
    Bob: File1:x
    
    • Định dạng đầu vào:

      Dòng 1: số nguyên m — số đối tượng có trong ACL (0≤m≤1000 \le m \le 1000≤m≤100).

      Với mỗi đối tượng: một dòng objectName k (0≤k≤500 \le k \le 500≤k≤50) rồi k dòng tiếp theo dạng subject perm.

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

      Dòng đầu tiên: số lượng chủ thể phân biệt xuất hiện trong toàn bộ ACL.

      Sau đó, với mỗi chủ thể (sắp xếp tăng dần theo thứ tự từ điển ASCII của tên — chữ hoa đứng trước chữ thường), in một dòng dạng:

      subjectName: obj1:perm1,obj2:perm2,...

      trong đó danh sách đối tượng của chủ thể được sắp xếp tăng dần theo tên đối tượng (ASCII), phân cách bằng dấu phẩy, không có khoảng trắng thừa. Nếu m = 0 hoặc không có chủ thể nào, chỉ in dòng 0.

    Ví dụ:

    Đầu vào:

    2
    File1 2
    Alice rw
    Bob x
    File2 1
    Alice r
    

    Đầu ra:

    2
    Alice: File1:rw,File2:r
    Bob: File1:x
    

    Đầu vào:

    0
    

    Đầu ra:

    0
    

    Đang tải editor...