Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Một tính năng rất hữu ích trong Linux là "Danh Sách Kiểm Soát Truy Cập" (Access Control Lists - ACL) kiểm soát quyền truy cập vào file và thư mục. Đây là cách ACL hoạt động để kiểm soát quyền file trong Linux.

Lưu ý: Để hiểu kỹ cách ACL hoạt động, chúng ta trước tiên thiết lập một số người dùng và nhóm trên hệ thống Linux đang chạy. Bài tập sau được thực hiện trên máy ảo chạy Kali Linux. 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

Trước tiên, chúng ta sẽ đăng nhập với tư cách root, tạo người dùng và đưa họ vào các nhóm tương ứng như bảng dưới đây. Người dùng được đặt tên đơn giản để dễ hiểu khái niệm hơn.

Người Dùng Nhóm
john1
john2
john3
johns
jane1
jane2
janes

Chúng ta sẽ dùng lệnh adduser để thêm người dùng mới vào hệ thống.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Lệnh id sẽ hiển thị chi tiết người dùng mới tạo. Nó sẽ hiện user id (uid), group id (gid) và tên nhóm (groups). Người dùng, khi tạo, tự động được thêm vào nhóm 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 đó.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Tương tự, 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, dùng lệnh id để xem uid và gid tương ứng.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Chúng ta thấy ba người dùng ở các nhóm riêng – 1000, 1001 và 1002. Theo bảng trước, chúng ta muốn ba người dùng cùng một nhóm: johns. Vì nhóm đó chưa tồn tại, chúng ta sẽ tạo nó bằng lệnh groupadd:

groupadd -g <new_group_ID> <group_name>

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

ID nhóm mới được chỉ định là 5000. Nếu bỏ qua switch -g, hệ thống sẽ tự chọn group ID. Tên 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 ta sẽ dùng lệnh usermod cho nhiệm 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 hiển thị uid và gid cho "john1" trước khi đổi nhóm. Sau khi lệnh usermod chạy thành công, "john1" được thêm vào nhóm "johns" với gid 5000.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Cùng quy trình cho người dùng "john2" và "john3".

usermod -g johns john2 usermod -g johns john3

Cuối cùng, chi tiết ba người dùng trong nhóm "johns" có thể xem bằng lệnh id.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Chúng ta đã tạo thành công ba người dùng và thêm 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. Chi tiết của họ có thể xem bằng lệnh id như hình dưới.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Tại Sao Cần Access Control Lists?

Giả sử người dùng "john1" đăng nhập,

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

tạo file mới trong thư mục Home,

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

và thêm nội dung vào đó.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Dùng lệnh ls, chúng ta xem metadata của file.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Vài ký tự đầu tiên trong đầu ra, - rw - r - - r - - là chuỗi quyền. Hãy phân tích nó.

– rw – r – – r – –
loại file quyền john1 có trên file quyền thành viên nhóm johns có trên file quyền cho những người khác không trong nhóm johns

Bài viết này là một primer tốt về quyền file.

Điều gì xảy ra nếu "john1", với tư cách chủ sở hữu file, muốn thêm quyền ghi chỉ cho "john2" và "jane1" nhưng giữ quyền đọc cho "john3" và "jane2"?

rw – r – –
john1
john2
jane1
john3
jane2

Một lựa chọn là tạo nhóm mới với quyền đọc, ghi cho "john1", "john2" và "jane1" và nhóm khác chỉ đọc cho "john3" và "jane2". Nếu john1 muốn sửa quyền thêm cho bất kỳ thành viên nhóm nào, thì cần tạo thêm nhóm. Tạo và quản lý nhiều nhóm là gánh nặng cho quản trị viên hệ thống.

Thay vào đó, một "Danh Sách Kiểm Soát Truy Cập" có thể được tạo cho file, nêu rõ thao tác mà bất kỳ người dùng nào có thể thực hiện trên file đó.

Cách Tạo Access Control List (ACL) Cho File?

Mỗi file khi tạo đã có một ACL được gán. Việc sử dụng nó hiệu quả chỉ là vấn đề sửa đổi nó. Chỉ chủ sở hữu file và root user mới có thể sửa ACL của file.

Chúng ta có thể dùng lệnh getfacl để xem ACL hiện tại:

getfacl <file_name>

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Các dòng bắt đầu bằng # là dòng comment. Thông tin thực nằm ở ba dòng cuối, tương tự chuỗi quyền trước đó. Dòng "user" đề cập đến quyền gán cho chủ sở hữu file "john1". Dòng "group" đề cập đến quyền gán cho các thành viên khác trong nhóm "johns". Như bạn đoán, dòng "other" đề cập đến bất kỳ ai khác ngoài nhóm.

Hãy dùng lệnh setfacl để sửa ACL hiện có trên file.

setfacl -m entity:name:permissions <file_name>
entity name permissions
giá trị ở đây chỉ ai là đối tượng của entry ACL:

user (u) hoặc group(g) hoặc others(o)

tên người dùng hoặc nhóm, entry ACL liên quan đến ai quyền đọc, ghi, thực thi ký hiệu bằng chữ r,w,x

"john2" đầu tiên được cấp quyền đọc, ghi trên file,

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

theo sau là "jane1".

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Hãy xem ACL đã cập nhật cho "secretfile".

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Chúng ta thấy quyền đọc và ghi đã được gán cho "john2" và "jane1".

Xác Thực ACL

Chúng ta thấy "john2" có thể đọc file và ghi vào nó.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Thông tin mới do "john2" nhập đã được thêm vào file.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Tương tự, "jane1" cũng có đặc quyền giống hệt – quyền đọc và ghi.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Nhưng "john3" trong cùng nhóm không thể ghi vào file.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

"jane2", thuộc nhóm other, cũng không thể ghi vào file.

Cách Sử Dụng Danh Sách Kiểm Soát Truy Cập (ACL) Để Quản Lý Quyền File Trên Linux

Kết Luận

Cùng quy trình có thể mở rộng cho thư mục. Access Control Lists cho phép quản trị viên hệ thống xử lý quyền truy cập file và thư mục một cách khéo léo.