Sửa quyền tệp và thư mục trên DirectAdmin
Hướng dẫn DirectAdmin · cập nhật 06/08/2026
Để sửa quyền tệp trên DirectAdmin, bạn đặt lại chủ sở hữu về đúng user của tài khoản, rồi đặt quyền 755 cho thư mục và 644 cho tệp bằng hai lệnh find. Cần quyền root hoặc sudo, và mất khoảng 2 phút cho một website cỡ vừa.
Bạn gặp việc này khi website báo lỗi 403 Forbidden hoặc 500 Internal Server Error sau khi khôi phục từ bản sao lưu, sau khi giải nén tệp bằng SSH dưới quyền root, hoặc sau khi ai đó chạy một lệnh đổi quyền sai. Trang quản trị không tải lên được tệp cũng là dấu hiệu quyền đang sai.
- Kiểm quyền và chủ sở hữu hiện tại của thư mục website.
- Đặt lại chủ sở hữu về đúng user của tài khoản hosting.
- Đặt quyền 755 cho toàn bộ thư mục.
- Đặt quyền 644 cho toàn bộ tệp.
- Siết riêng vài tệp cấu hình nhạy cảm về 600.
- Mở website kiểm và thử tải lên một tệp.
Các lệnh dưới đây chạy đệ quy trên toàn bộ thư mục và không hoàn tác được. Gõ nhầm đường dẫn là đổi quyền của cả máy chủ, gõ nhầm tên user là website ngừng chạy ngay lập tức. Đọc kỹ đường dẫn trước khi bấm Enter, và tạo bản sao lưu trước theo hướng dẫn sao lưu website trên DirectAdmin.
Quyền đúng của website trên hosting là bao nhiêu
Chuẩn của mọi hosting chạy Linux là thư mục 755 và tệp 644. Con số này cho chủ sở hữu toàn quyền, cho nhóm và người khác chỉ đọc. Web server đọc được tệp để trả về cho khách, còn người ngoài không sửa được gì.
| Đối tượng | Quyền đúng | Nghĩa là |
|---|---|---|
| Thư mục thường | 755 | Chủ đọc ghi vào ra, người khác chỉ đọc và đi vào |
| Tệp thường, gồm tệp PHP | 644 | Chủ đọc ghi, người khác chỉ đọc |
| Tệp cấu hình chứa mật khẩu | 600 | Chỉ chủ đọc ghi, người khác không đọc được |
| Tệp CGI và tệp lệnh cần chạy | 755 | Chủ đọc ghi chạy, người khác đọc và chạy |
| Thư mục Maildir | 770 | Chủ và nhóm mail cùng ghi được |
Đừng bao giờ đặt 777 cho tệp hay thư mục nào của website, kể cả khi một hướng dẫn trên mạng bảo làm vậy để hết lỗi. 777 cho phép mọi tài khoản trên máy chủ ghi đè tệp của bạn. Trên máy chủ dùng chung, đó là đường để mã độc từ website khác ghi thẳng vào mã nguồn của bạn. Lỗi 403 gần như luôn do sai chủ sở hữu, sửa chủ sở hữu là hết, không cần nới quyền.
Cách tìm chỗ cần sửa quyền tệp và chủ sở hữu
Trước khi đổi gì, xem hiện trạng đã. Đăng nhập SSH vào máy chủ rồi chạy lệnh dưới, thay tenuser và ten-mien.com bằng giá trị thật của bạn:
ls -la /home/tenuser/domains/ten-mien.com/public_html | head -20
Đọc kết quả theo hai cột. Cột đầu là chuỗi quyền: thư mục đúng hiện drwxr-xr-x, tệp đúng hiện -rw-r--r--. Thấy drwxrwxrwx là đang để 777, phải sửa. Hai cột tiếp theo là chủ sở hữu và nhóm, cả hai phải là tên user của tài khoản hosting.
Chủ sở hữu hiện root root là dấu hiệu rõ nhất của lỗi sau khi giải nén bằng quyền root. Web server chạy dưới quyền user của tài khoản nên không đọc được tệp thuộc root, và trả về lỗi 403.
Tìm nhanh mọi thứ đang để 777 trong website bằng lệnh:
find /home/tenuser/domains/ten-mien.com/public_html -perm 0777
Cách sửa quyền tệp cho toàn bộ thư mục website
Ba lệnh dưới đây xử lý gần hết các ca lỗi quyền. Chạy theo đúng thứ tự: chủ sở hữu trước, rồi thư mục, rồi tệp. Đổi thứ tự cũng ra kết quả như nhau, nhưng làm theo thứ tự này thì dễ kiểm giữa chừng hơn.
1. Đặt lại chủ sở hữu
Chuyển vào thư mục tên miền rồi đặt cả chủ và nhóm về đúng user:
cd /home/tenuser/domains/ten-mien.com/
chown -R tenuser:tenuser public_html
Thay tenuser bằng tên tài khoản hosting thật. Tên này chính là tên đăng nhập DirectAdmin, cũng là tên thư mục ngay dưới /home/. Gõ sai tên là lệnh báo lỗi và không đổi gì, đó là điều may.
2. Đặt quyền 755 cho thư mục
find public_html -type d -exec chmod 755 {} \;
Tham số -type d giới hạn chỉ tác động lên thư mục. Đây là lý do phải dùng find chứ không dùng chmod -R 755 thẳng: lệnh đệ quy thường đặt 755 cho cả tệp, khiến mọi tệp PHP thành tệp chạy được, và nhiều cấu hình máy chủ từ chối chạy tệp có quyền như vậy.
3. Đặt quyền 644 cho tệp
find public_html -type f -exec chmod 644 {} \;
Website có tệp CGI hoặc tệp lệnh shell cần chạy thì mở riêng cho chúng sau khi chạy lệnh trên:
find public_html -name "*.cgi" -exec chmod 755 {} \;
find public_html -name "*.pl" -exec chmod 755 {} \;
4. Siết tệp cấu hình về 600
Tệp cấu hình chứa mật khẩu cơ sở dữ liệu nên để 644 là mọi tài khoản trên máy chủ đều đọc được. Siết lại:
chmod 600 public_html/wp-config.php
Với mã nguồn khác thì tên tệp khác, thường là config.php, configuration.php hoặc tệp .env. Website báo lỗi sau khi siết thì cấu hình máy chủ đang chạy PHP dưới user khác, khi đó trả về 644 và chấp nhận mức đó.
Sửa quyền cho hộp thư, MySQL và chính DirectAdmin
Ngoài thư mục website còn ba chỗ hay sai quyền, mỗi chỗ có chuẩn riêng. Chỉ chạy lệnh của chỗ đang thật sự hỏng, đừng chạy cả loạt cho chắc, vì mỗi lệnh đều đệ quy và đều không lùi lại được.
Hộp thư không nhận được thư mới. Thư mục Maildir cần thuộc nhóm mail và cho nhóm quyền ghi:
cd /home/tenuser/
chown -R tenuser:mail Maildir
chmod -R 770 Maildir
MySQL không khởi động hoặc báo lỗi quyền. Thư mục dữ liệu phải thuộc user mysql:
chown -R mysql:mysql /var/lib/mysql
chmod -R 755 /var/lib/mysql
systemctl restart mysqld
DirectAdmin không chạy sau khi sửa gì đó ở cấp hệ thống. Tệp nhị phân và tệp cấu hình của DirectAdmin có chuẩn riêng:
cd /usr/local/directadmin
chown -R diradmin:diradmin .
chmod 755 directadmin
chmod 600 conf/directadmin.conf
service directadmin restart
Tệp directadmin.conf phải để 600 vì nó chứa thông tin kết nối cơ sở dữ liệu của bảng điều khiển. Để rộng hơn là mọi tài khoản trên máy chủ đọc được.
Dùng tệp lệnh có sẵn của DirectAdmin để đặt lại toàn bộ
DirectAdmin có sẵn một tệp lệnh đặt lại quyền theo chuẩn của chính nó, dùng khi nhiều chỗ cùng sai và bạn không muốn dò từng chỗ. Chỉ chạy được dưới quyền root, và chạy trên toàn máy chủ chứ không riêng một tài khoản.
/usr/local/directadmin/scripts/fix_permissions.sh all
Tham số all quét toàn bộ tài khoản trên máy chủ. Trên máy có hàng chục tài khoản, lệnh chạy khá lâu và làm máy chủ tải nặng trong lúc đó. Chỉ dùng khi lỗi diện rộng, và chạy ngoài giờ cao điểm. Với một website đang lỗi, ba lệnh ở phần trên gọn hơn và an toàn hơn nhiều.
Tệp lệnh này đặt quyền theo chuẩn mặc định của DirectAdmin. Website nào cố tình để quyền khác chuẩn vì lý do riêng sẽ bị đưa về chuẩn hết, nên kiểm lại các website đó sau khi chạy.
Kiểm website chạy đúng sau khi đổi quyền
Kiểm theo bốn mục dưới, mất chưa tới hai phút và bắt được gần hết các lỗi còn sót. Làm ngay sau khi chạy lệnh, đừng đợi khách báo.
- Mở trang chủ và hai trang con. Còn lỗi 403 nghĩa là chủ sở hữu vẫn sai, chạy lại lệnh chown và kiểm tên user.
- Đăng nhập trang quản trị website và thử tải lên một ảnh. Không tải lên được nghĩa là thư mục uploads chưa có quyền ghi.
- Kiểm lại bằng lệnh
ls -la, cột quyền phải hiệndrwxr-xr-xcho thư mục và-rw-r--r--cho tệp. - Gửi thử một thư nếu bạn có đụng vào thư mục Maildir.
Vẫn lỗi 500 sau khi quyền đã đúng thì nguyên nhân nằm chỗ khác, thường là tệp .htaccess sai cú pháp hoặc phiên bản PHP không hợp. Xem log lỗi của tên miền trong DirectAdmin để biết dòng nào gây lỗi.
Xử lý các lỗi thường gặp sau khi sửa quyền
Năm tình huống dưới đây gặp nhiều nhất sau khi sửa quyền tệp bằng các lệnh trên.
Lệnh báo Operation not permitted. Bạn đang chạy dưới user thường chứ không phải root. Lệnh chown đổi chủ sở hữu chỉ root làm được. Đăng nhập lại bằng root, hoặc thêm sudo vào đầu lệnh.
Website vẫn lỗi 403 sau khi chạy đủ ba lệnh. Thư mục cha đang thiếu quyền đi vào. Kiểm cả chuỗi từ /home/tenuser trở xuống, mỗi cấp đều phải cho người khác quyền đi vào, tức là 711 trở lên.
WordPress không tự cập nhật được nữa. Quyền 644 đúng chuẩn nhưng WordPress cần ghi vào một số thư mục. Mở riêng quyền ghi cho wp-content/uploads chứ đừng nới cả website, và giữ 755 chứ đừng lên 777.
Trang quản trị báo không kết nối được cơ sở dữ liệu ngay sau khi siết tệp cấu hình. Máy chủ chạy PHP dưới user khác nên không đọc được tệp 600. Trả tệp đó về 644.
Chạy nhầm lệnh trên toàn thư mục /home. Đây là ca nặng nhất, mọi tài khoản trên máy chủ cùng đổi chủ sở hữu và ngừng chạy. Chạy ngay tệp lệnh fix_permissions.sh all của DirectAdmin để đưa về chuẩn, rồi kiểm lại từng tài khoản.
Cách tránh lỗi quyền tái diễn
Phần lớn ca lỗi quyền đến từ một trong ba việc: giải nén tệp bằng SSH dưới quyền root, chép tệp lên bằng tài khoản khác với tài khoản hosting, hoặc chạy theo một hướng dẫn bảo đặt 777. Tránh được ba việc đó là gần như không gặp lại.
Tải tệp lên bằng FTP với đúng tài khoản của gói hosting thì quyền và chủ sở hữu tự đúng, không phải sửa gì. Cách tạo tài khoản ở hướng dẫn tạo tài khoản FTP trên DirectAdmin. Giải nén trên máy chủ thì làm dưới user của tài khoản, đừng làm dưới root.
Sau mỗi lần khôi phục từ bản sao lưu, kiểm và sửa quyền tệp một lượt trước khi báo xong. Đó là thời điểm quyền hay lệch nhất, và cũng là lúc dễ đổ nhầm lỗi cho bản sao lưu trong khi vấn đề chỉ nằm ở chủ sở hữu tệp.