Hệ thống kiểm soát truy cập có thể biểu diễn bằng một ma trận kiểm soát truy cập (Access Control Matrix) M: hàng ứng với các chủ thể (subject), cột ứng với các đối tượng (object). Ô M[s][o] ghi lại tập quyền mà chủ thể s được cấp trên đối tượng o, gồm ba quyền cơ bản: đọc (r), ghi (w), thực thi (x).
Cho ma trận kiểm soát truy cập và một danh sách truy vấn dạng subject object perm, hãy xác định chủ thể có được phép thực hiện quyền perm trên đối tượng tương ứng hay không. Nếu subject hoặc object không tồn tại trong hệ thống, truy vấn bị từ chối.
Ví dụ
Input:
3 2 4
Alice
Bob
Carol
File1
File2
rw- r--
--x rwx
--- ---
Alice File1 w
Bob File2 x
Carol File1 r
Dave File1 r
Output:
YES
YES
NO
NO
Giải thích: Alice có quyền ghi (w) trên File1 vì ô tương ứng là rw-; Bob có quyền thực thi (x) trên File2 vì ô là rwx; Carol không có quyền đọc trên File1 vì ô là ---; Dave không tồn tại nên bị từ chối.
Dòng 1: ba số nguyên n m q — số chủ thể, số đối tượng, số truy vấn (1≤n,m≤100, 1≤q≤200).
n dòng tiếp theo: tên các chủ thể (không chứa khoảng trắng), theo đúng thứ tự sẽ dùng làm hàng của ma trận.
m dòng tiếp theo: tên các đối tượng, theo đúng thứ tự dùng làm cột của ma trận.
n dòng tiếp theo, mỗi dòng gồm m token cách nhau bởi khoảng trắng; token thứ j là quyền của chủ thể (dòng) trên đối tượng thứ j. Mỗi token là chuỗi đúng 3 ký tự theo thứ tự cố định (đọc, ghi, thực thi): ký tự là r, w, x tương ứng nếu được cấp quyền đó, hoặc - nếu không. Ví dụ rw- nghĩa là được đọc và ghi, không được thực thi; --- nghĩa là không có quyền nào.
q dòng cuối, mỗi dòng dạng subject object perm, với perm là một trong ba ký tự r, w, x.
In ra đúng q dòng; dòng thứ i là YES nếu truy vấn thứ i được phép, ngược lại in NO.
Ví dụ:
Đầu vào:
1 1 3
Root
Sys
rwx
Root Sys r
Root Sys w
Root Sys x
Đầu ra:
YES
YES
YES
Đầu vào:
3 2 4
Alice
Bob
Carol
File1
File2
rw- r--
--x rwx
--- ---
Alice File1 w
Bob File2 x
Carol File1 r
Dave File1 r
Đầu ra:
YES
YES
NO
NO
Đang tải editor...