Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn dùng lệnh chmod trong Linux để quản lý quyền truy cập file và thư mục hiệu quả

    Nguyễn Hưng

    Ngày đăng:

    10/02/2026

    Cập nhật lần cuối:

    10/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    10/02/2026

    Cập nhật lần cuối:

    10/02/2026

    Mục lục

    Lệnh chmod trong Linux là công cụ dùng để thiết lập và thay đổi quyền truy cập đối với file và thư mục trong hệ thống. Việc cấu hình quyền đúng cách giúp kiểm soát truy cập, tăng cường bảo mật và hạn chế các lỗi phát sinh khi vận hành ứng dụng. Trong bài viết này, mình sẽ cùng bạn tìm hiểu cách hoạt động của chmod, các kiểu phân quyền phổ biến và những ví dụ thực tế để quản lý quyền file, thư mục hiệu quả hơn trên Linux.

    Những điểm chính

    • Khái niệm: Hiểu rõ lệnh chmod là công cụ dùng để thay đổi quyền truy cập, giúp bạn kiểm soát và bảo mật file/thư mục hiệu quả hơn.
    • Tầm quan trọng: Nhận thức được tầm quan trọng của việc phân quyền đúng, giúp bạn hiểu rõ tại sao đây là yếu tố cốt lõi để bảo vệ dữ liệu và đảm bảo hệ thống hoạt động ổn định.
    • Cú pháp cơ bản: Nắm vững các dạng cú pháp, giúp bạn linh hoạt sử dụng cả chế độ ký tự (symbolic) và số (octal) để thiết lập quyền một cách chính xác.
    • Các tùy chọn quan trọng: Tìm hiểu về các tùy chọn thường dùng, giúp bạn áp dụng thay đổi quyền một cách đệ quy hoặc sao chép quyền một cách tiện lợi.
    • Các ví dụ thực hành: Nắm vững các ví dụ thực tế, giúp bạn áp dụng lệnh chmod một cách linh hoạt trong nhiều tình huống, từ việc cấp quyền thực thi đến phân quyền hàng loạt.
    • Mô hình phân quyền: Hiểu rõ cách đọc và diễn giải chuỗi quyền, giúp bạn kiểm tra và phân tích trạng thái phân quyền hiện tại của file và thư mục.
    • Lưu ý bảo mật: Nắm được các nguyên tắc bảo mật quan trọng, giúp bạn tránh các lỗi cấu hình phổ biến như chmod 777 và thiết lập quyền một cách an toàn, hiệu quả.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh chmod trong Linux.

    Lệnh chmod trong Linux là gì?

    Lệnh chmod trong Linux là dòng lệnh dùng để thay đổi quyền (permissions) truy cập của file và thư mục, cho phép thiết lập ai được phép đọc, ghi hoặc thực thi một tài nguyên trên hệ thống. Thông qua việc điều chỉnh quyền với chmod, quản trị viên có thể kiểm soát chặt chẽ phạm vi truy cập của từng nhóm người dùng, từ đó hạn chế nguy cơ rò rỉ dữ liệu hoặc chỉnh sửa trái phép trong môi trường đa người dùng.

    Lệnh chmod trong Linux là dòng lệnh dùng để thay đổi quyền truy cập của file và thư mục
    Lệnh chmod trong Linux là dòng lệnh dùng để thay đổi quyền truy cập của file và thư mục

    Về mặt quyền cơ bản, chmod thao tác trên ba loại quyền chính là read (r) – cho phép xem nội dung, write (w) – cho phép sửa đổi hoặc ghi mới và execute (x) – cho phép thực thi file hoặc truy cập vào thư mục. Với file thông thường, quyền x quyết định khả năng chạy chương trình hoặc script, còn với thư mục, quyền x là điều kiện để người dùng có thể cd vào bên trong và truy cập các mục con.

    Các quyền này được áp dụng cho ba nhóm đối tượng là owner (u) – chủ sở hữu file, group (g) – nhóm người dùng liên kết với file và others (o) – tất cả các người dùng còn lại trên hệ thống. Ngoài ra, khi cần áp dụng thay đổi đồng thời cho cả ba lớp, bạn có thể sử dụng ký hiệu a (all users) để chỉ định mọi đối tượng trong một lần thay đổi.

    Tầm quan trọng của phân quyền đúng trong Linux

    Phân quyền đúng trong Linux giữ vai trò then chốt trong việc bảo vệ dữ liệu, vì mỗi file và thư mục đều được gắn quyền cụ thể cho từng lớp người dùng, từ đó quyết định thao tác nào được phép thực hiện. Khi quyền được thiết lập phù hợp với nhu cầu sử dụng, hệ thống vừa duy trì được tính an toàn, vừa tránh được các lỗi truy cập do thiếu hoặc thừa quyền trên các thành phần quan trọng.

    Nếu phân quyền quá lỏng lẻo, như đặt chmod 777 cho nhiều thư mục và file, mọi lớp người dùng đều có thể đọc, ghi và thực thi, làm tăng nguy cơ bị sửa đổi nội dung, tải mã độc hoặc chiếm quyền điều khiển ứng dụng. Ngược lại, nếu phân quyền quá chặt mà không tính tới yêu cầu thực thi của dịch vụ (web server, script deploy, thư mục log), ứng dụng có thể không đọc được file cấu hình, không ghi log hoặc không chạy được mã nguồn, dẫn tới lỗi hoạt động trên môi trường thật.

    Trên các hệ thống web hosting, việc cấu hình quyền hợp lý cho thư mục web, file cấu hình, thư mục upload hay log giúp giới hạn đúng phạm vi truy cập mà web server cần, tránh để người dùng khác hoặc tiến trình không liên quan có thêm quyền không cần thiết. Vì vậy, việc hiểu rõ cách phân quyền và sử dụng chmod đúng cách là bước nền cho mọi quy trình hardening và vận hành system trên Linux.

    Phân quyền đúng trong Linux giữ vai trò then chốt trong việc bảo vệ dữ liệu
    Phân quyền đúng trong Linux giữ vai trò then chốt trong việc bảo vệ dữ liệu (Nguồn: Internet)

    Cú pháp cơ bản của lệnh chmod trong Linux

    Cú pháp cơ bản của lệnh chmod được thiết kế linh hoạt để bạn có thể thay đổi quyền truy cập file/thư mục bằng nhiều cách biểu diễn khác nhau, nhưng tất cả đều hướng tới mục tiêu thiết lập đúng quyền cho tài nguyên trên hệ thống. Trên Linux, có ba dạng cú pháp phổ biến của chmod thường được sử dụng trong quản trị hệ thống và thao tác file hàng ngày. Cụ thể, ba cách gọi lệnh chmod gồm:

    chmod [OPTION]... MODE[,MODE]... FILE…
    
    chmod [OPTION]... OCTAL-MODE FILE…
    
    chmod [OPTION]... --reference=RFILE FILE…

    Trong đó:

    • OPTION: Là các tùy chọn mở rộng cho lệnh, có thể bỏ trống và có thể kết hợp nhiều option cùng lúc như -R, -v, -c để điều khiển phạm vi hoặc mức độ hiển thị khi thay đổi quyền.
    • MODE / OCTAL-MODE: Biểu diễn quyền truy cập muốn đặt cho file/thư mục, có thể viết dưới dạng ký tự (symbolic, ví dụ u+rwx, g-w, o+r) hoặc dạng số bát phân (octal, ví dụ 755, 644).
    • FILE: Là một hoặc nhiều tên file hoặc thư mục cần thay đổi quyền; bạn có thể truyền nhiều đối tượng trong cùng một lệnh để áp dụng chung một cấu hình permission.

    Ngoài ra, cú pháp sử dụng --reference=RFILE cho phép sao chép quyền từ một file/thư mục tham chiếu (RFILE) sang file mục tiêu mà không cần tự tính toán MODE, rất hữu ích khi muốn đồng bộ quyền giữa nhiều file cấu hình hoặc thư mục có cùng vai trò. Trong cách ghi tài liệu, phần đặt trong dấu ngoặc vuông [] thể hiện là tùy chọn, không bắt buộc phải có, còn dấu ba chấm cho biết bạn có thể liệt kê nhiều option, nhiều MODE hoặc nhiều FILE trong cùng một câu lệnh.

    Các tùy chọn quan trọng của chmod

    Các tùy chọn của lệnh chmod giúp điều khiển phạm vi áp dụng và cách hiển thị kết quả khi thay đổi quyền, đặc biệt hữu ích khi thao tác trên nhiều file hoặc cả cây thư mục. Bảng dưới đây tổng hợp các option quan trọng thường được dùng kèm chmod trong công việc quản trị hệ thống Linux:

    Tùy chọnChức năng
    -R, --recursiveÁp dụng thay đổi quyền một cách đệ quy cho toàn bộ file và thư mục con bên trong thư mục được chỉ định, phù hợp khi cần chuẩn hóa phân quyền cho cả cấu trúc thư mục.
    -v, --verboseIn ra thông tin chi tiết cho từng file/thư mục được xử lý, cho biết quyền đã thay đổi như thế nào trong quá trình thực thi lệnh.
    -c, --changesHoạt động tương tự --verbose nhưng chỉ hiển thị những đối tượng thực sự có thay đổi về quyền, giúp log ngắn gọn và dễ theo dõi hơn.
    --reference=FILESử dụng quyền của FILE tham chiếu làm mẫu, sau đó áp dụng giống hệt cho các file/thư mục mục tiêu mà không cần tự nhập MODE thủ công.

    Trong thực tế, -R thường được dùng khi cần set quyền cho cả cây thư mục ứng dụng, còn --reference rất tiện khi muốn đồng bộ quyền giữa nhiều file cấu hình hoặc thư mục có cùng vai trò mà vẫn tránh sai sót do nhập nhầm quyền.

    Ví dụ 1: Cấp quyền thực thi cho file

    Khi tải một script .sh từ internet hoặc tự tạo mới, file thường chỉ có quyền đọc/ghi mà chưa có quyền thực thi nên sẽ gặp lỗi “Permission denied” nếu chạy trực tiếp. Trong trường hợp này, để cho phép hệ thống coi file là chương trình có thể chạy được, bạn có thể sử dụng lệnh:

    chmod +x script.sh
    Cấp quyền thực thi cho file
    Cấp quyền thực thi cho file

    Sau khi thêm quyền x, script có thể được thực thi bằng cách gọi ./script.sh trong terminal, miễn là người dùng có đủ quyền trên thư mục chứa file đó.

    Ví dụ 2: Dùng chế độ số để set quyền đầy đủ

    Khi cấu hình thư mục làm web root hoặc thư mục chứa mã nguồn ứng dụng, quản trị viên thường đặt quyền sao cho chủ sở hữu có toàn quyền, còn các lớp còn lại chỉ được đọc và thực thi. Một mẫu phổ biến là:

    chmod 755 /home/vietnix
    Dùng chế độ số để set quyền đầy đủ
    Dùng chế độ số để set quyền đầy đủ

    Với thiết lập này, owner có quyền rwx (7), group và others có quyền r-x (5), phù hợp cho thư mục web vì server có thể đọc và chạy file, trong khi hạn chế quyền ghi của người dùng khác.

    Ví dụ 3: Set quyền chỉ cho owner, không cho người khác

    Đối với script cá nhân, file chứa thông tin nhạy cảm hoặc dữ liệu cấu hình riêng tư, yêu cầu cơ bản là chỉ chủ sở hữu mới được phép đọc, ghi và thực thi. Lúc này, bạn có thể áp dụng:

    chmod 700 script.sh
    Set quyền chỉ cho owner, không cho người khác
    Set quyền chỉ cho owner, không cho người khác

    Cách set này tương ứng owner rwx, group ---, others ---, đảm bảo chỉ người sở hữu file mới thao tác được, các tài khoản khác trên hệ thống không thể đọc hoặc sửa nội dung file.

    Ví dụ 4: Thay đổi quyền cho tất cả lớp người dùng bằng symbolic

    Trong một số tình huống, bạn muốn áp cùng một quyền cho cả owner, group và others, chẳng hạn cho phép tất cả mọi người đọc và thực thi nhưng không được ghi. Khi đó, có thể sử dụng toán tử a (all) trong symbolic mode, ví dụ:

    chmod a+rx file

    Hoặc nếu cần loại bỏ khả năng thực thi của tất cả người dùng, bạn có thể dùng:

    chmod a-x file

    Các lệnh này giúp thiết lập cùng một quyền cho mọi lớp mà không cần tính lại từng số octal tương ứng.

    Ví dụ 5: Kết hợp nhiều thay đổi quyền trong một lệnh

    Khi cần thiết lập chi tiết chính sách quyền cho từng nhóm (owner, group, others), symbolic mode cho phép mô tả rõ ràng trong cùng một câu lệnh. Giả sử, bạn dùng lệnh sau:

    chmod u=rw,g=r,o= file.txt

    Câu lệnh này gán quyền đọc/ghi cho owner, quyền đọc cho group và không cấp quyền cho others, giúp biểu đạt chính xác yêu cầu phân quyền mà không phải ghi nhớ tương đương số octal.

    Ví dụ 6: Thay đổi quyền theo kiểu đệ quy

    Khi cấu hình lại quyền cho toàn bộ thư mục dự án, bao gồm tất cả thư mục con và file bên trong, việc chỉnh sửa từng đối tượng một sẽ rất mất thời gian. Thay vào đó, bạn có thể dùng tùy chọn -R để áp dụng đệ quy:

    chmod -R 755 /home/vietnix

    Lệnh này sẽ đặt quyền 755 cho thư mục /home/vietnix và toàn bộ nội dung bên trong, vì vậy cần kiểm tra kỹ phạm vi thư mục trước khi chạy để tránh làm thay đổi quyền ngoài mong muốn trên hệ thống.

    Ví dụ 7: Set quyền chính xác giống file khác

    Trong thực tế, nhiều file cấu hình hoặc thư mục cùng loại cần được duy trì chung một mẫu quyền để đảm bảo ứng dụng hoạt động ổn định. Thay vì tự tính lại MODE, bạn có thể sao chép quyền từ một file chuẩn bằng lệnh:

    chmod --reference=template.conf config.conf

    Cách này giúp file config.conf nhận đúng bộ quyền của template.conf, hạn chế sai lệch khi nhập thủ công và rất hữu ích khi áp dụng hàng loạt trên nhiều file cấu hình.

    Ví dụ 8: Kết hợp find với chmod để phân quyền hàng loạt

    Trong các dự án web hoặc thư mục dữ liệu lớn, thường cần phân quyền khác nhau cho file và thư mục (ví dụ file 644, thư mục 755). Lúc này, bạn có thể kết hợp find với chmod, chẳng hạn:

    • Chỉ đổi quyền thư mục:
    find . -type d -exec chmod 755 {} \;
    • Chỉ đổi quyền file:
    find . -type f -exec chmod 644 {} \;

    Cách làm này giúp chuẩn hóa phân quyền hàng loạt theo đúng best practice (thư mục cho phép truy cập và liệt kê, file chỉ cho đọc/ghi phù hợp) trên toàn bộ cây thư mục dự án.

    Mô hình phân quyền trong Linux

    Mô hình phân quyền trong Linux được thể hiện trực quan qua chuỗi 10 ký tự đứng đầu mỗi dòng khi liệt kê file/thư mục bằng các lệnh như ls -l. Trong đó, một ký tự đầu biểu thị loại đối tượng và chín ký tự còn lại mô tả quyền cho ba lớp người dùng khác nhau. Ở dạng tổng quát, một chuỗi quyền thường có cấu trúc như -rwxr-xr-.

    Trong đó ký tự đầu tiên là dấu - cho biết đây là file thường (hoặc d nếu là thư mục), ba ký tự kế tiếp thể hiện quyền của owner, ba ký tự tiếp theo là quyền của group và ba ký tự cuối là quyền của others với r, w, x lần lượt là quyền đọc, ghi và thực thi hoặc truy cập thư mục. Để kiểm tra quyền hiện tại của file hoặc thư mục, bạn có thể sử dụng lệnh ls -l trong thư mục cần xem, hệ thống sẽ liệt kê danh sách đối tượng kèm chuỗi quyền, chủ sở hữu và group tương ứng.

    Một quy trình thao tác hợp lý là: Dùng ls -l để xem quyền và chủ sở hữu, phân tích xem thiết lập hiện tại có phù hợp với nhu cầu sử dụng và chính sách bảo mật hay không. Sau đó, bạn dùng chmod (kết hợp chown, chgrp khi cần) để điều chỉnh lại cho đúng.

    Mô hình phân quyền trong Linux
    Mô hình phân quyền trong Linux – Nguồn: Internet

    Một số lưu ý về bảo mật khi dùng chmod

    Khi thay đổi quyền truy cập bằng chmod, ngoài việc đảm bảo chức năng cho ứng dụng, bạn cần chú ý đến các nguyên tắc bảo mật sau để tránh vô tình mở rộng quyền cho những đối tượng không cần thiết:

    • Hạn chế sử dụng quyền 777 trên file/thư mục: Chmod 777 cấp toàn bộ quyền đọc, ghi, thực thi cho owner, group và others, khiến bất kỳ tài khoản nào trên hệ thống cũng có thể can thiệp vào dữ liệu. Điều này chỉ nên dùng tạm thời trong môi trường thử nghiệm và tránh áp dụng trên production.
    • Chỉ cấp quyền thực thi (x) cho những file cần chạy: Với các script, binary hoặc file chạy dịch vụ, quyền x là bắt buộc để chương trình hoạt động, nhưng các file nội dung, cấu hình, tài liệu tĩnh thường không cần execute, việc bỏ bớt x giúp giảm nguy cơ chạy nhầm file chứa mã độc.
    • Thiết lập quyền thư mục khác với quyền file: Thư mục thường dùng quyền 755 hoặc 750 để cho phép owner toàn quyền và các lớp khác chỉ có quyền đọc/truy cập. Trong khi file nội dung nên để 644 hoặc 640 để giới hạn quyền ghi của group và others, tránh bị sửa hoặc xóa ngoài ý muốn.
    • Tránh cấp quyền ghi cho group và others nếu không có nhu cầu rõ ràng: Cho phép nhiều nhóm hoặc người dùng ghi vào cùng một file/thư mục sẽ làm tăng rủi ro sai sót và khó truy vết thay đổi. Do đó, bạn chỉ nên mở quyền write cho owner hoặc cho một group tin cậy đã được quản lý chặt.
    Một số lưu ý về bảo mật khi dùng chmod
    Một số lưu ý về bảo mật khi dùng chmod

    Câu hỏi thường gặp

    Khi nào nên ưu tiên dùng chmod dạng ký tự (u,g,o,+,-,=) thay vì dạng số?

    Dạng ký tự (symbolic) phù hợp khi bạn muốn thêm hoặc bớt một quyền cụ thể cho một nhóm đối tượng mà không làm thay đổi các quyền còn lại. Ví dụ chỉ thêm quyền thực thi cho owner hoặc chỉ bỏ quyền ghi của group. Đây là cách an toàn khi bạn không chắc quyền hiện tại là gì nhưng chỉ muốn điều chỉnh một phần nhỏ, trong khi dạng số (octal) thường ghi đè toàn bộ bộ quyền cho owner/group/others.

    Tại sao cùng là 755 nhưng đôi khi vẫn bị lỗi 500 trên web server?

    Quyền 755 chỉ đảm bảo về mặt permission (owner có rwx, group/others có r-x) nhưng ứng dụng web còn phụ thuộc vào quyền sở hữu (owner, group) và user mà web server đang chạy (như www-data, apache, nginx). Nếu file và thư mục không thuộc đúng user/group mà dịch vụ web sử dụng, hoặc một số file cấu hình cần quyền chặt hơn (ví dụ 640, 600), web server có thể không đọc được hoặc bị chặn, dẫn đến lỗi 500 dù quyền chmod nhìn có vẻ đúng.

    Nên đặt quyền như thế nào cho file cấu hình nhạy cảm (.env, wp-config.php, config database)?

    Với các file chứa thông tin nhạy cảm như thông số kết nối database, API key hoặc biến môi trường, thông lệ tốt là chỉ cho phép owner đọc/ghi và hạn chế tối đa quyền cho group/others, ví dụ 600 hoặc 640 tùy mô hình triển khai. Cách này giúp dịch vụ cần thiết vẫn có thể đọc file (thông qua user hoặc group phù hợp), trong khi giảm thiểu khả năng các user khác trên cùng hệ thống xem hoặc chỉnh sửa nội dung cấu hình quan trọng.

    Khi nắm vững chmod và áp dụng đúng mô hình phân quyền, bạn sẽ dễ dàng cấu hình quyền file/thư mục để vừa đáp ứng yêu cầu vận hành ứng dụng, vừa hạn chế tối đa rủi ro bảo mật trên server Linux. Dựa trên các ví dụ, quy tắc permission và những lưu ý bảo mật đã trình bày, bạn có thể áp dụng trực tiếp vào dự án hoặc môi trường hosting thực tế. Đồng thời, bạn có thể kết hợp chmod với chown, chgrp để xây dựng cấu trúc quyền nhất quán và an toàn hơn.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả
    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả

    Lệnh passwd trong Linux là công cụ dòng lệnh dùng để thiết lập, thay đổi và quản lý mật khẩu của tài khoản người dùng trên hệ thống. Việc sử dụng passwd đúng cách giúp tăng cường bảo mật, kiểm soát quyền truy cập và hạn chế rủi ro liên quan đến tài khoản người…

    10/02/2026

    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu
    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu

    Lệnh zcat trong Linux là công cụ dòng lệnh dùng để xem và xử lý nội dung của các file nén định dạng .gz mà không cần giải nén. Với zcat, bạn có thể nhanh chóng đọc dữ liệu, kết hợp cùng các lệnh như grep, less, head để phân tích file nén một cách…

    10/02/2026

    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng
    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng

    Lệnh groupdel trong Linux là công cụ dòng lệnh dùng để xóa nhóm người dùng khỏi hệ thống. Việc sử dụng groupdel đúng cách giúp hệ thống gọn gàng hơn, hạn chế rủi ro phân quyền sai và tăng tính bảo mật trong quá trình quản trị. Trong bài viết này, mình sẽ cùng bạn…

    09/02/2026

    Hướng dẫn sử dụng lệnh groupadd Linux để thêm nhóm người dùng
    Hướng dẫn sử dụng lệnh groupadd Linux để thêm nhóm người dùng

    Lệnh groupadd Linux là tiện ích dòng lệnh dùng để tạo nhóm người dùng mới trên hệ thống, phục vụ cho việc phân quyền và quản lý user theo nhóm. Việc sử dụng group giúp quản trị viên kiểm soát quyền truy cập hiệu quả hơn, giảm rủi ro sai sót và đơn giản hóa…

    09/02/2026

    linux

    lenh

    text