setfacl - Lệnh quản lý danh sách kiểm soát truy cập tệp trong Linux

setfacl (set file access control lists) là một lệnh trong Linux dùng để thiết lập danh sách kiểm soát truy cập (ACL) cho các tệp và thư mục. ACL cho phép bạn cấp quyền truy cập một cách chi tiết hơn so với các quyền truyền thống (owner, group, others).

Cú pháp cơ bản của lệnh setfacl:

setfacl [tùy chọn] acl_spec tệp...

Trong đó:

  • acl_spec: định nghĩa các quy tắc ACL, ví dụ: user:alice:rw-
  • tùy chọn: các tùy chọn khác nhau để thao tác với ACL

Các tùy chọn phổ biến: -m: sửa đổi ACL -x: xóa một quy tắc ACL -b: xóa tất cả ACL -d: áp dụng cho ACL mặc định -R: đệ quy cho các thư mục con

Cấu trúc của một mục ACL bao gồm:

  • Loại thẻ (tag type): user, group, mask, other
  • Định danh (qualifier): tên người dùng hoặc nhóm (tùy chọn)
  • Quyền (permission): rwx, rw-, v.v.

Ví dụ về việc thiết lập ACL cho một tệp:

setfacl -m u:bob:rw- duong_dan_tep_moi.txt

Để xem ACL của một tệp:

getfacl --no-header duong_dan_tep_moi.txt

Khi một tệp có ACL, nó sẽ hiển thị dấu "+" ở cuối trong lệnh ls -l, cho biết tệp có ACL bổ sung.

Mặt nạ ACL (ACL mask) là một khái niệm quan trọng, nó xác định quyền tối đa cho các mục ACL người dùng và nhóm.

ACL mặc định (default ACL) cho phép bạn thiết lập các quy tắc ACL sẽ được kế thừa bởi các tệp mới được tạo trong một thư mục.

Ví dụ về việc thiết lập ACL mặc định cho một thư mục:

setfacl -d -m u:charlie:rw- duong_dan_thu_muc

Để xóa ACL:

setfacl -b duong_dan_tep  # xóa tất cả ACL
setfacl -x u:bob duong_dan_tep  # xóa quy tắc cho người dùng bob

Các ví dụ thực tế

  1. Cấp quyền đọc/ghi cho người dùng cụ thể:
setfacl -m u:david:rw- duong_dan_tep
  1. Cấp quyền đọc cho một nhóm:
setfacl -m g:developers:r-- duong_dan_tep
  1. Thiết lập ACL mặc định cho một thư mục:
setfacl -d -m u:emma:rwx thu_muc_chung
  1. Xóa ACL cho một người dùng:
setfacl -x u:david duong_dan_tep
  1. Xóa tất cả ACL khỏi một tệp:
setfacl -b duong_dan_tep

Khi làm việc với ACL, hãy luôn sử dụng lệnh getfacl để xác nhận các quyền thực tế, vì các quyền hiển thị trong ls -l có thể bị che giấu bởi mặt nạ ACL.

Thẻ: linux file permissions ACL setfacl access control lists

Đăng vào ngày 28 tháng 6 lúc 22:50