Hệ điều hành · 18/09/2026

Quyền file trong Linux: Hiểu đúng chmod, chown và ACL

Quyền file là một trong những cơ chế bảo vệ nền tảng của Linux. Hiểu sai một ký tự trong chuỗi rwx có thể khiến ứng dụng không chạy, người dùng không truy cập được dữ liệu hoặc tệ hơn là mở quyền ghi cho tất cả mọi người.

Quyền file trong Linux: Hiểu đúng chmod, chown và ACL

Quyền file là một trong những cơ chế bảo vệ nền tảng của Linux. Hiểu sai một ký tự trong chuỗi rwx có thể khiến ứng dụng không chạy, người dùng không truy cập được dữ liệu hoặc tệ hơn là mở quyền ghi cho tất cả mọi người.

Bài viết này giải thích mô hình owner-group-others, cách dùng chmod, chown, chgrp, umask và khi nào nên dùng ACL thay vì liên tục thay đổi group.

Đọc quyền file bằng ls -l

ls -l /var/www/example
-rw-r----- 1 deploy www-data 2840 Sep 18 10:30 config.php

Ký tự đầu cho biết loại đối tượng: - là file thường, d là thư mục và l là symbolic link. Chín ký tự tiếp theo chia thành ba nhóm:

  • rw-: quyền của owner deploy.
  • r--: quyền của group www-data.
  • ---: quyền của những người dùng còn lại.

r, w, x có ý nghĩa khác nhau trên thư mục

QuyềnTrên fileTrên thư mục
rĐọc nội dungLiệt kê tên bên trong
wThay đổi nội dungTạo, xóa hoặc đổi tên mục con
xThực thi fileĐi xuyên qua thư mục để truy cập mục con

Một người dùng có thể biết tên file nhờ quyền đọc thư mục nhưng vẫn không mở được file nếu thiếu quyền x trên đường dẫn.

Dùng chmod dạng ký hiệu

Dạng ký hiệu thường dễ review hơn vì thể hiện rõ đối tượng và thay đổi:

chmod u+x deploy.sh
chmod g-w config.php
chmod o= private.txt
chmod a+r README.md

u, g, o, a lần lượt là owner, group, others và tất cả; + thêm quyền, - bỏ quyền, còn = đặt chính xác quyền mới.

Dùng chmod dạng số

Mỗi quyền có giá trị: đọc là 4, ghi là 2, thực thi là 1. Cộng theo từng nhóm owner-group-others:

  • 640: owner đọc/ghi, group chỉ đọc, others không có quyền.
  • 750: owner đầy đủ, group đọc/thực thi, others không có quyền.
  • 644: thường dùng cho file công khai chỉ owner được sửa.
  • 755: thường dùng cho thư mục hoặc chương trình cần mọi người truy cập/thực thi.
chmod 640 config.php
chmod 750 scripts
Không dùng chmod -R 777 như một cách chữa lỗi quyền. Nó che giấu nguyên nhân và trao quyền ghi/thực thi quá rộng.

Đổi owner và group với chown, chgrp

sudo chown deploy app.log
sudo chown deploy:www-data app.log
sudo chgrp www-data storage
sudo chown -R deploy:www-data /var/www/example

Hãy kiểm tra kỹ đường dẫn trước lệnh đệ quy. Với ứng dụng web, chỉ những thư mục thực sự cần ghi như cache hoặc upload mới nên có quyền ghi cho tiến trình web.

Đặt group kế thừa bằng setgid

Trên thư mục cộng tác, setgid giúp file mới kế thừa group của thư mục:

sudo chgrp developers /srv/project
sudo chmod 2775 /srv/project

Chữ số 2 đầu bật setgid. Đây thường là lựa chọn rõ ràng hơn việc sửa group thủ công sau mỗi lần tạo file.

umask quyết định quyền mặc định

umask
umask 027

umask loại bớt quyền khỏi mức mặc định của file và thư mục. Với 027, file thường có xu hướng thành 640, thư mục thành 750. Cấu hình thực tế còn phụ thuộc shell, service manager và ứng dụng.

Khi nào cần ACL?

Mô hình owner-group-others không tiện khi cần cấp riêng cho một người dùng mà không muốn thay owner hoặc group chính. ACL giải quyết trường hợp này:

getfacl report.csv
setfacl -m u:analyst:r report.csv
setfacl -m d:g:developers:rwx /srv/project
setfacl -x u:analyst report.csv

ACL mặc định trên thư mục có thể truyền quyền cho mục mới. Hãy đọc dòng mask trong getfacl, vì mask giới hạn quyền hiệu lực của named users và groups.

Checklist xử lý lỗi Permission denied

  1. Dùng namei -l /duong/dan/file để kiểm tra mọi thư mục cha.
  2. Xác nhận user và group của tiến trình bằng ps hoặc cấu hình service.
  3. Kiểm tra quyền cơ bản bằng ls -ld.
  4. Kiểm tra ACL với getfacl.
  5. Xem mount có cờ ro hoặc noexec hay không.
  6. Kiểm tra AppArmor/SELinux nếu quyền Unix đã đúng.

Nguồn tham khảo

Thảo luận

Bình luận 0

Đăng nhập để bình luận

Bạn cần có tài khoản để tham gia thảo luận và trả lời độc giả khác.

Đăng nhậpĐăng ký

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.