Một tính năng rất hữu ích trong Linux là “Danh sách kiểm soát truy cập” kiểm soát quyền truy cập vào các tệp và thư mục. Đây là cách hoạt động của danh sách kiểm soát truy cập để kiểm soát quyền đối với tệp trong Linux.
Lưu ý: Để nắm bắt kỹ lưỡng cách hoạt động của danh sách kiểm soát truy cập, trước tiên, chúng tôi sẽ thiết lập một số người dùng và nhóm trên hệ thống Linux đang hoạt động. Bài tập dưới đây được thực hiện trên máy ảo chạy hệ điều hành Kali. Người dùng root có quyền thêm người dùng mới vào hệ thống và phân bổ họ vào các nhóm.
Tạo người dùng và nhóm
Đầu tiên, chúng ta sẽ đăng nhập với quyền root, tạo người dùng và xếp họ vào các nhóm tương ứng như trong bảng dưới đây. Người dùng đã được đặt những cái tên đơn giản để giúp hiểu khái niệm tốt hơn.
Người dùng | Nhóm |
---|---|
john1 john2 john3 | johns |
jane1 jane2 | janes |
Chúng tôi sẽ sử dụng adduser
lệnh thêm người dùng mới vào hệ thống.
id
lệnh sẽ hiển thị thông tin chi tiết của người dùng mới được tạo. Nó sẽ hiển thị id người dùng (uid), id nhóm (gid) và tên nhóm (groups). Người dùng, khi được tạo, sẽ tự động được thêm vào một nhóm có cùng tên với tên người dùng. Người dùng đó sẽ là thành viên duy nhất của nhóm.
Tương tự như vậy, người dùng “john2” và “john3” cũng được tạo.
adduser john2 adduser john3
Khi ba người dùng đã được tạo, hãy sử dụng id
lệnh để xem id nhóm và người dùng tương ứng.
Chúng tôi có thể thấy rằng ba người dùng nằm trong nhóm của riêng họ - 1000, 1001 và 1002. Theo bảng hiển thị trước đó, chúng tôi muốn ba người dùng ở cùng một nhóm:johns
. Vì một nhóm như vậy hiện không tồn tại trên hệ thống, chúng tôi sẽ tạo nó bằng groupadd
lệnh:
groupadd -g <new_group_ID> <group_name>
ID nhóm mới được chỉ định là 5000. Nếu -g
chuyển đổi bị bỏ qua, sau đó hệ thống sẽ tự động chọn một ID nhóm. Tên của nhóm mới là “johns”. Bây giờ ba người dùng - “john1”, “john2” và “john3” - cần được thêm làm thành viên của nhóm này. Chúng tôi sẽ sử dụng usermod
lệnh cho tác vụ này.
usermod -g <group_name> <user_name>
usermod
thêm người dùng “user_name” vào nhóm “group_name.” Hình sau đây đầu tiên hiển thị uid và gid cho “john1” trước khi thay đổi nhóm. Sau usermod
lệnh chạy thành công, “john1” được thêm vào nhóm “johns” với gid 5000.
Quy trình tương tự cũng được thực hiện cho người dùng “john2” và “john3.”
usermod -g johns john2 usermod -g johns john3
Cuối cùng, thông tin chi tiết của ba người dùng trong nhóm “johns” có thể được xem bằng cách sử dụng id
lệnh.
Chúng tôi đã tạo thành công ba người dùng và thêm họ vào cùng một nhóm.
Tương tự, người dùng “jane1” và “jane2” được tạo và thêm vào nhóm “janes” với gid 6000. Bạn có thể xem chi tiết của họ bằng cách sử dụng id
lệnh như hình dưới đây.
Nhu cầu về Danh sách Kiểm soát Truy cập là gì?
Giả sử người dùng “john1” đăng nhập,
tạo một tệp mới trong Thư mục chính,
và thêm một số nội dung vào đó.
Sử dụng ls
, chúng tôi xem siêu dữ liệu của tệp.
Một vài ký tự đầu tiên trong đầu ra, - rw - r - - r - -
tài khoản cho chuỗi quyền. Hãy cùng chúng tôi mổ xẻ nó.
- | rw - | r - - | r - - |
---|---|---|---|
loại tệp | quyền john1 có trên tệp | các quyền mà thành viên của nhóm johns có trên tệp | quyền được cấp cho những người khác không thuộc nhóm johns |
Bài viết này là một tài liệu sơ lược về quyền đối với tệp.
Điều gì sẽ xảy ra nếu “john1”, là chủ sở hữu tệp, muốn chỉ cấp thêm quyền ghi cho “john2” và “jane1” nhưng vẫn duy trì quyền đọc cho “john3” và “jane2?”
rw - | r - - |
---|---|
john1 john2 jane1 | john3 jane2 |
Một tùy chọn sẽ là tạo một nhóm mới với quyền đọc, ghi cho “john1”, “john2” và “jane1” và một nhóm khác chỉ có quyền đọc cho “john3” và “jane2”. Trong trường hợp john1 muốn sửa đổi thêm quyền cho bất kỳ thành viên nào trong nhóm, thì cần phải tạo thêm nhóm. Tạo và quản lý nhiều nhóm là một gánh nặng đối với người quản trị hệ thống.
Thay vào đó, một "Danh sách kiểm soát truy cập" có thể được tạo cho một tệp sẽ trình bày rõ ràng các hoạt động mà bất kỳ người dùng nào có thể thực hiện trên tệp đó.
Cách tạo danh sách kiểm soát truy cập (ACL) cho tệp?
Mỗi tệp khi tạo đều có ACL được gán cho nó. Sử dụng nó một cách hiệu quả chỉ đơn giản là một vấn đề của việc sửa đổi nó. Chỉ chủ sở hữu tệp và người dùng root mới có thể sửa đổi ACL của tệp.
Chúng ta có thể sử dụng getfacl
lệnh để xem ACL hiện có:
getfacl <file_name>
Các dòng bắt đầu bằng #
là những dòng bình luận. Thông tin thực tế nằm trong ba dòng cuối cùng của đầu ra, tương tự như chuỗi quyền thu được trước đó. Dòng "người dùng" đề cập đến các quyền được chỉ định cho chủ sở hữu tệp "john1". Dòng "nhóm" đề cập đến các quyền được chỉ định cho các thành viên khác trong nhóm "johns". Như bạn đã đoán, dòng "khác" đề cập đến bất kỳ ai khác bên ngoài nhóm.
Hãy để chúng tôi sử dụng setfacl
lệnh sửa đổi ACL hiện có trên tệp.
setfacl -m entity:name:permissions <file_name>
entity | tên | quyền |
---|---|---|
giá trị ở đây biểu thị mục nhập ACL dành cho ai: người dùng (u) hoặc nhóm (g) hoặc những người khác (o) | tên của người dùng hoặc nhóm có liên quan đến mục nhập ACL | các quyền đọc, ghi, thực thi được ký hiệu bằng các chữ cái r, w, x |
“John2” lần đầu tiên được cấp quyền truy cập đọc, ghi vào tệp,
theo sau là “jane1.”
Hãy để chúng tôi xem ACL được cập nhật cho “hồ sơ bí mật”.
Chúng ta có thể thấy rằng quyền đọc và ghi đã được chỉ định cho “john2” và “jane1.”
Xác minh tính xác thực của ACL
Chúng ta có thể thấy rằng “john2” có thể đọc tệp và ghi vào tệp đó.
Thông tin mới do “john2” nhập đã được thêm vào tệp.
Tương tự như vậy, “jane1” cũng có đặc quyền tương tự - quyền truy cập đọc và quyền truy cập ghi.
Nhưng “john3” trong cùng một nhóm không thể ghi vào tệp.
“Jane2”, người thuộc loại khác, cũng không thể ghi vào tệp.
Kết luận
Quá trình tương tự cũng có thể được mở rộng cho các thư mục. Danh sách kiểm soát truy cập cho phép quản trị viên hệ thống xử lý quyền truy cập tệp và thư mục một cách thành thạo.