Trả lời nhanh
Mỗi chữ số trong chmod là tổng quyền của một nhóm người: đọc = 4, ghi = 2, chạy = 1. Chữ số thứ nhất cho chủ sở hữu, thứ hai cho nhóm, thứ ba cho người khác. Vì vậy 755 = rwxr-xr-x (chủ toàn quyền, người khác đọc và chạy), 644 = rw-r--r-- (chủ đọc ghi, người khác chỉ đọc).
chmod là gì?
Tích các ô đọc, ghi, chạy cho chủ sở hữu, nhóm và người khác để thấy ngay số chmod (755, 644, 0640) và dạng ký hiệu rwxr-xr-x như lệnh ls -l hiển thị; hoặc gõ / dán một trong hai dạng để đổi ngược lại. Công cụ có bit đặc biệt setuid, setgid, sticky, giải thích từng quyền khi áp lên tệp và lên thư mục (khác nhau khá nhiều), ô thử lệnh dạng chữ như u+x hay go-w, cảnh báo quyền nguy hiểm như 777, cùng các mẫu quyền hay dùng trên hosting aaPanel, cPanel và lệnh chmod để sao chép.

Cách tính quyền chmod
- 1
Tích ô Đọc, Ghi, Chạy ở từng hàng Chủ sở hữu, Nhóm, Người khác; số chmod và dạng rwx cập nhật ngay.
- 2
Hoặc gõ số (755) hay dán chuỗi ls -l (-rw-r--r--) vào ô tương ứng để xem bảng quyền và ý nghĩa.
- 3
Chọn một mẫu như “644 · tệp web” hay “600 · wp-config.php, .env” nếu bạn đang cấu hình website.
- 4
Nhập tên tệp ở phần “Lệnh tương ứng” rồi sao chép lệnh chmod để chạy trên máy chủ (qua SSH hay Terminal của aaPanel).
Giá trị từng chữ số
| Số | Ký hiệu | Quyền |
|---|---|---|
| 0 | --- | Không có quyền |
| 1 | --x | Chỉ chạy |
| 2 | -w- | Chỉ ghi |
| 3 | -wx | Ghi và chạy |
| 4 | r-- | Chỉ đọc |
| 5 | r-x | Đọc và chạy |
| 6 | rw- | Đọc và ghi |
| 7 | rwx | Đọc, ghi và chạy |
Quyền nên đặt cho website (WordPress, Laravel, PHP)
| Đối tượng | Quyền | Ghi chú |
|---|---|---|
| Mọi thư mục | 755 (hoặc 750) | Máy chủ web cần x để đi vào thư mục, r để liệt kê |
| Mọi tệp .php, .html, .css, ảnh | 644 (hoặc 640) | Chủ sửa được, máy chủ web đọc được |
| wp-config.php, .env | 600, 440 hoặc 400 | Chứa mật khẩu database, càng ít người đọc càng tốt |
| Thư mục uploads, cache, storage | 755, chủ sở hữu là người dùng chạy PHP | Sửa đúng chủ sở hữu (chown) thay vì mở 777 |
| ~/.ssh và khoá riêng | 700 cho thư mục, 600 cho khoá | SSH từ chối khoá có quyền rộng hơn |
Theo hướng dẫn bảo mật WordPress (developer.wordpress.org, mục Hardening WordPress): thư mục 755 hoặc 750, tệp 644 hoặc 640, wp-config.php 440 hoặc 400. Trên aaPanel, website thường thuộc người dùng www.
Ý nghĩa r, w, x trên tệp và trên thư mục
| Quyền | Trên tệp | Trên thư mục |
|---|---|---|
| r (đọc) | Xem nội dung tệp | Liệt kê tên các tệp bên trong (ls) |
| w (ghi) | Sửa, ghi đè nội dung | Tạo, xoá, đổi tên tệp bên trong (cần kèm x) |
| x (chạy) | Chạy như chương trình hoặc script | Đi vào thư mục (cd) và mở tệp bên trong nếu biết tên |
Ví dụ thực tế
WordPress báo không ghi được tệp
Thường do chủ sở hữu sai chứ không phải thiếu quyền. Kiểm tra bằng ls -l: thư mục wp-content nên thuộc người dùng chạy PHP (trên aaPanel là www) với quyền 755, không cần 777.
Bảo vệ wp-config.php
Chọn mẫu “600 · wp-config.php, .env”, nhập tên tệp rồi sao chép lệnh chmod 600 wp-config.php. Chỉ chủ sở hữu đọc ghi được; nếu PHP chạy bằng người dùng khác thì dùng 640 và đặt nhóm phù hợp.
Script backup không chạy
Báo “Permission denied” khi chạy ./backup.sh nghĩa là thiếu quyền chạy. Dùng ô thử lệnh với u+x: 644 thành 744, rồi chạy chmod u+x backup.sh.
Thư mục làm chung của nhóm
Mẫu 2775 (setgid) giúp mọi tệp tạo trong thư mục tự thuộc nhóm của thư mục, các thành viên cùng nhóm sửa được tệp của nhau.
Lỗi thường gặp
- Đặt 777 cho cả website để hết lỗi quyền.
- 777 cho phép mọi tiến trình trên máy ghi vào, là đường quen của mã độc. Sửa chủ sở hữu bằng chown cho đúng người dùng chạy PHP, giữ 755 / 644.
- chmod -R 644 làm website trắng trang.
- -R áp cả cho thư mục, thư mục mất quyền x nên không ai vào được. Đặt riêng: find . -type d -exec chmod 755 {} + và find . -type f -exec chmod 644 {} +.
- Khoá SSH bị từ chối: “UNPROTECTED PRIVATE KEY FILE”.
- Khoá riêng phải là 600 (hoặc 400) và thư mục ~/.ssh là 700; SSH từ chối khoá người khác đọc được.
- Đặt setuid cho script PHP / bash mà không có tác dụng.
- Linux bỏ qua setuid trên script vì lý do an toàn. Cần quyền cao thì dùng sudo với quy tắc giới hạn.
Chữ số thứ tư (setuid, setgid, sticky)
Khi số chmod có 4 chữ số như 2775 hay 1777, chữ số đầu là bit đặc biệt: 4 = setuid, 2 = setgid, 1 = sticky. Trong ls -l, chúng hiện thành s hoặc t ở vị trí chữ x; chữ hoa S hoặc T nghĩa là có bit đặc biệt nhưng thiếu quyền chạy, thường là đặt nhầm.
Số 0 đứng đầu như 0644 chỉ là cách viết bát phân trong nhiều ngôn ngữ (PHP chmod('a.txt', 0644)); với lệnh chmod, 0644 và 644 như nhau.
Thuật ngữ
- chmod
- Lệnh đổi quyền truy cập của tệp, thư mục trên Linux / Unix (change mode).
- chown
- Lệnh đổi chủ sở hữu và nhóm của tệp, ví dụ chown www:www index.php.
- Chủ sở hữu (u)
- Người dùng sở hữu tệp, thường là người tạo ra tệp.
- Nhóm (g)
- Nhóm người dùng được gán cho tệp; thành viên nhóm dùng quyền ở chữ số thứ hai.
- Người khác (o)
- Mọi người dùng còn lại trên máy, kể cả tiến trình máy chủ web nếu không phải chủ hay cùng nhóm.
- umask
- Mặt nạ trừ bớt quyền mặc định khi tạo tệp mới; umask 022 cho tệp 644 và thư mục 755.
Câu hỏi thường gặp
chmod 755 nghĩa là gì?
Chủ sở hữu đọc, ghi, chạy (7); nhóm và người khác đọc, chạy (5). Đây là quyền chuẩn cho thư mục website và script cần chạy.
chmod 644 nghĩa là gì?
Chủ sở hữu đọc, ghi (6); nhóm và người khác chỉ đọc (4). Đây là quyền chuẩn cho tệp HTML, PHP, ảnh trên website.
Có nên chmod 777 không?
Hầu như không bao giờ trên máy chủ web. Lỗi “không ghi được” nên sửa bằng chown đúng người dùng, hoặc 775 nếu cần nhóm cùng ghi.
Xem quyền hiện tại của tệp thế nào?
Chạy ls -l tên-tệp để thấy dạng -rw-r--r--, hoặc stat -c '%a %n' tên-tệp để thấy số 644. Trên aaPanel, mục Tệp có cột Quyền.
Đổi quyền cả thư mục con thế nào?
chmod -R áp một quyền cho tất cả, dễ làm thư mục mất quyền x. Nên dùng find để tách thư mục (755) và tệp (644) như lệnh mẫu trong công cụ.
Windows có chmod không?
Windows dùng ACL riêng; chmod chỉ có ý nghĩa trên Linux, macOS hoặc trong WSL. Quyền trong FileZilla hay trình quản lý tệp của hosting cũng chính là chmod trên máy chủ.
Đánh giá và bình luận
Đang tải…