Lệnh setfacl trong Linux là công cụ giúp quản lý quyền truy cập file bằng cách sử dụng Access Control List (ACL). Với setfacl, người quản trị có thể phân quyền chi tiết cho người dùng và nhóm, giúp kiểm soát tốt hơn quyền truy cập vào các tài nguyên hệ thống. Bài viết này sẽ giải thích khái niệm ACL, cách sử dụng lệnh setfacl, cũng như ưu nhược điểm khi áp dụng trong môi trường Linux. Bạn cũng sẽ tìm thấy ví dụ minh họa về các tình huống sử dụng thực tế và các tuỳ chọn thông dụng của lệnh này.
Điểm chính cần nắm
- Access Control List (ACL) là gì?: Giới thiệu về khái niệm và mục đích của Access Control List trong hệ thống Linux.
setfacl
là gì?: Cung cấp thông tin về lệnhsetfacl
dùng để quản lý quyền truy cập file và thư mục trong Linux.- Ưu và nhược điểm của lệnh setfacl trong Linux: Tổng hợp các ưu điểm và nhược điểm khi sử dụng lệnh
setfacl
trong môi trường Linux. - Cách sử dụng lệnh setfacl: Hướng dẫn cách sử dụng cơ bản lệnh
setfacl
để phân quyền truy cập. - Một số tuỳ chọn thông dụng của lệnh setfacl: Liệt kê các tuỳ chọn cơ bản và nâng cao khi sử dụng lệnh
setfacl
. - Ví dụ minh hoạ cho lệnh setfacl: Cung cấp ví dụ cụ thể về cách sử dụng
setfacl
trong các tình huống khác nhau. - Vietnix – Giải pháp lưu trữ hiệu suất cao cho website của bạn: Giới thiệu về dịch vụ hosting tốc độ cao của Vietnix, với tính năng tối ưu hiệu suất và bảo mật.
- FAQ: Giải đáp các câu hỏi thường gặp về lệnh
setfacl
và quản lý quyền truy cập trong Linux.
Access Control List (ACL) là gì?
ACL (Access Control List) là một danh sách các quy tắc được áp dụng lên file, thư mục, thiết bị mạng… nhằm xác định quyền truy cập cụ thể cho từng user hoặc group. ACL thường được quản lý bởi quản trị viên hệ thống và cho phép phân quyền chi tiết hơn so với quyền mặc định của Linux (owner, group,…).

Lệnh setfacl
là gì?
setfacl
(Set File Access Control List) là một lệnh trong hệ điều hành Linux cho phép thiết lập Access Control List (ACL) – danh sách quyền truy cập chi tiết cho các người dùng và nhóm cụ thể trên từng filehoặc thư mục. Khác với hệ thống phân quyền thông thường (user, group,…), ACL cung cấp cách phân quyền linh hoạt và chi tiết hơn, cho phép nhiều người dùng/nhóm có quyền khác nhau trên cùng một file.
Ví dụ: Nếu một tệp thuộc quyền sở hữu của user A, bạn vẫn có thể cấp quyền chỉ đọc cho user B bằng cách dùng setfacl
.
Ưu và nhược điểm của lệnh setfacl
trong Linux
Phân quyền chi tiết
Linh hoạt hơn phân quyền mặc định
Không ảnh hưởng đến người dùng khác
Cập nhật quyền nhanh chóng
Hữu ích trong môi trường chia sẻ
Quản lý phức tạp hơn
Không tương thích hoàn toàn trên mọi hệ thống
Dễ bị nhầm lẫn
Phụ thuộc vào quyền mask
Ưu điểm của lệnh setfacl
trong Linux
- Phân quyền chi tiết: Cho phép chỉ định quyền truy cập cụ thể cho nhiều user và group trên cùng một file/thư mục.
- Linh hoạt hơn phân quyền mặc định: Không bị giới hạn chỉ bởi owner, group và others như cách phân quyền thông thường.
- Không ảnh hưởng đến người dùng khác: Việc cấp quyền cho một user không làm thay đổi quyền của các user khác.
- Cập nhật quyền nhanh chóng: Có thể thêm, sửa hoặc xoá quyền truy cập mà không cần thay đổi owner/group.
- Hữu ích trong môi trường chia sẻ: Đặc biệt phù hợp với hệ thống có nhiều người dùng cần truy cập một cách kiểm soát.
Nhược điểm của setfacl
- Quản lý phức tạp hơn: Càng nhiều người dùng và nhóm được phân quyền, việc theo dõi và kiểm soát ACL càng trở nên khó khăn.
- Không tương thích hoàn toàn trên mọi hệ thống: Một số hệ thống tập tin cũ (hoặc chưa bật ACL) có thể không hỗ trợ đầy đủ.
- Dễ bị nhầm lẫn: Khi ACL được áp dụng rộng rãi, người quản trị có thể quên ai có quyền gì, đặc biệt nếu không có công cụ giám sát ACL tốt.
- Phụ thuộc vào quyền mask: Nếu không hiểu rõ về “mask”, bạn có thể cấp quyền nhưng thực tế user vẫn không truy cập được do bị mask giới hạn.
Cách sử dụng lệnh setfacl
- Cú pháp cơ bản
setfacl [tùy_chọn] [loại_đối_tượng]:[tên_user/group]:[quyền] <tên_file/thư_mục>
Trong đó:
setfacl
: công cụ trên Linux dùng để thiết lập quyền ACL trên file/thư mục.[tùy_chọn]
: một số tuỳ chọn thường dùng:-m
: sửa đổi hoặc thêm ACL-x
: xoá ACL
[loại_đối_tượng]
– chỉ định đối tượng cần phân quyền
Ký hiệu | Ý nghĩa |
---|---|
u | user – người dùng cụ thể |
g | group – nhóm người dùng |
o | other – tất cả người dùng còn lại |
[quyền]
– quyền được gán
Ký hiệu | Mô tả |
---|---|
r | read – quyền đọc |
w | write – quyền ghi, chỉnh sửa |
x | execute – quyền thực thi/chạy file |
Lưu ý
Có thể kết hợp nhiều quyền, ví dụ: rw
, rx
, rwx
.
Ví dụ:
setfacl -m u:nam:rw example.txt
# Gán quyền đọc và ghi cho user nam trên file example.txt.
Một số tuỳ chọn thông dụng của lệnh setfacl
Tuỳ chọn | Chức năng |
---|---|
-m , --modify | Sửa đổi hoặc thêm ACL cho file/thư mục |
-x , --remove | Xoá ACL cho user/group cụ thể |
-b , --remove-all | Xoá toàn bộ ACL đang áp dụng |
-d , --default | Thiết lập quyền mặc định cho file/thư mục mới trong một thư mục |
-k , --remove-default | Xoá quyền mặc định đã thiết lập |
-R , --recursive | Áp dụng ACL một cách đệ quy lên toàn bộ nội dung bên trong thư mục |
--set | Thiết lập toàn bộ ACL cho một file (ghi đè hiện tại) |
--set-file | Thiết lập ACL từ một file ACL đã lưu trước đó |
-M , --restore=file | Khôi phục ACL từ một file đã lưu |
--mask , --no-mask | Liên quan đến quyền hiệu lực (effective rights) của ACL |
setfacl
Ví dụ minh hoạ cho lệnh setfacl
Ví dụ 1: Gán quyền đọc + ghi cho user kali
trên file gfg.txt
Lệnh này dùng để cấp quyền truy cập (đọc, ghi, thực thi) cho một user trên một file nhất định. Có thể gán cho nhiều user khác nhau trên cùng một file.
setfacl -m u:kali:rw gfg.txt
→ Gán quyền đọc (r) và ghi (w) cho user kali
trên file gfg.txt
.

Ví dụ 2: Gán quyền đọc + thực thi cho user kali
trên nhiều file/thư mục
Với setfacl
, bạn có thể gán quyền cho một user trên nhiều file hoặc thư mục cùng lúc.
setfacl -m u:kali:rx f1.txt f2.txt d1
→ Gán quyền đọc (r) và thực thi (x) cho user kali
trên file f1.txt
, f2.txt
và thư mục d1
.

Ví dụ 3: Xoá toàn bộ quyền ACL của user kali
trên thư mục d1
Lệnh này dùng để xoá quyền truy cập đã cấp cho user, cụ thể là user kali
trên thư mục d1
.
setfacl -x u:kali d1
→ Loại bỏ mọi quyền mà user kali
đang có trên thư mục d1
.

Ví dụ 4: Hiển thị ACL của file f2.txt
Dùng lệnh getfacl
để kiểm tra các quyền đã được cấp qua ACL trên một file hoặc thư mục.
getfacl f2.txt
→ Hiển thị danh sách ACL chi tiết của file f2.txt
, bao gồm: owner, group, các user được cấp quyền, và quyền mask.
Lưu ý
Không có tuỳ chọn -a
trong getfacl
. Dòng getfacl -a f2.txt
bạn gửi là không hợp lệ.

Ví dụ 5: Hiển thị quyền mặc định (default ACL)
ACL mặc định thường được thiết lập cho thư mục để áp dụng tự động cho các file mới tạo bên trong.
getfacl -d f2.txt
→ Hiển thị quyền mặc định (nếu có) của file hoặc thư mục f2.txt
.

Vietnix – Giải pháp lưu trữ hiệu suất cao cho website của bạn
Vietnix cung cấp các dịch vụ lưu trữ web như Hosting, VPS và máy chủ chuyên dụng với tốc độ cao, khả năng xử lý ổn định và hệ thống bảo mật tiên tiến. Nhờ hạ tầng hiện đại và đội ngũ kỹ thuật giàu kinh nghiệm, Vietnix giúp website của bạn luôn vận hành mượt mà, an toàn và sẵn sàng cho mọi nhu cầu mở rộng. Khách hàng còn được hỗ trợ kỹ thuật 24/7, đảm bảo xử lý nhanh chóng mọi vấn đề phát sinh. Vietnix là lựa chọn lý tưởng cho cá nhân và doanh nghiệp muốn tối ưu tốc độ truy cập, nâng cao hiệu quả vận hành website.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Sự khác biệt giữa chmod và setfacl là gì?
chmod
chỉ gán quyền cho user, group và others, còn setfacl
cho phép gán quyền cụ thể cho nhiều người dùng/nhóm cùng lúc.
Làm sao để hiển thị các quyền đã được gán bằng ACL?
Dùng lệnh getfacl tên_file
để xem quyền ACL đã thiết lập.
Nếu user không có quyền trong ACL, quyền truy cập sẽ như thế nào?
User chỉ được quyền theo chmod truyền thống (user/group/others), ACL không có tác dụng nếu không có entry tương ứng.
ACL mask là gì và tại sao nó có thể hạn chế quyền được gán bởi setfacl?
mask
là giới hạn tối đa cho các quyền ACL bổ sung. Nếu quyền gán vượt quá mask, nó sẽ bị rút gọn theo mask hiện tại.
Có thể sao lưu và phục hồi toàn bộ ACL của một file/thư mục không?
Có, dùng getfacl > backup.acl
để sao lưu và setfacl --restore=backup.acl
để khôi phục.
ACL có được áp dụng cho hệ thống file nào cũng được không?
Không. Chỉ các hệ thống hỗ trợ ACL như ext3, ext4, xfs… mới dùng được.
Có thể dùng setfacl để phân quyền qua SSH hoặc NFS không?
Có, miễn là hệ thống file được mount hỗ trợ ACL thì các quyền vẫn được áp dụng.
Có cách nào để tự động áp dụng ACL cho các file mới tạo trong thư mục không?
Có, dùng ACL mặc định (default ACL
) cho thư mục đó để kế thừa quyền cho file mới.
Lời kết
Việc áp dụng lệnh setfacl trong Linux giúp cải thiện bảo mật và phân quyền truy cập linh hoạt hơn so với các phương pháp truyền thống. Điều này giúp người quản trị hệ thống kiểm soát quyền truy cập theo yêu cầu cụ thể của từng người dùng. Nếu bạn có bất cứ thắc mắc nào về cách sử dụng setfacl hoặc gặp khó khăn trong việc cấu hình ACL, đừng ngần ngại liên hệ với mình!
Mọi người cũng xem: