BizMaC bizmac.com

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.

  1. Kiểm quyền và chủ sở hữu hiện tại của thư mục website.
  2. Đặt lại chủ sở hữu về đúng user của tài khoản hosting.
  3. Đặt quyền 755 cho toàn bộ thư mục.
  4. Đặt quyền 644 cho toàn bộ tệp.
  5. Siết riêng vài tệp cấu hình nhạy cảm về 600.
  6. 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ượngQuyền đúngNghĩa là
Thư mục thường755Chủ đọc ghi vào ra, người khác chỉ đọc và đi vào
Tệp thường, gồm tệp PHP644Chủ đọc ghi, người khác chỉ đọc
Tệp cấu hình chứa mật khẩu600Chỉ chủ đọc ghi, người khác không đọc được
Tệp CGI và tệp lệnh cần chạy755Chủ đọc ghi chạy, người khác đọc và chạy
Thư mục Maildir770Chủ 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.

  1. 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.
  2. Đă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.
  3. Kiểm lại bằng lệnh ls -la, cột quyền phải hiện drwxr-xr-x cho thư mục và -rw-r--r-- cho tệp.
  4. 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.

Hướng dẫn này có giúp được Anh/Chị không?

Bài khác trong DirectAdmin

Xem cả 31 bài
Bật tắt extension PHP trên DirectAdmin Vào Extra Features rồi Select PHP version để tích hoặc bỏ tích extension. Nên bật thư viện nào cho WordPress, cách xác nhận đã nạp và lỗi hay gặp. 7 phút đọc 277 lượt xem Cập nhật 28/08/2026 Khôi phục website trên DirectAdmin từ bản sao lưu Đưa tệp sao lưu lên hosting, chọn đúng phần dữ liệu cần đưa về và kiểm website sau khi khôi phục, kèm cách chọn bản nào khi có nhiều bản. 8 phút đọc 297 lượt xem Cập nhật 26/08/2026 Khắc phục lỗi License has expired DirectAdmin DirectAdmin báo License has expired khi bản quyền hết hạn hoặc máy chủ đổi IP. Cách chạy getLicense.sh để tải lại license và mở khoá bảng điều khiển. 6 phút đọc 365 lượt xem Cập nhật 26/08/2026 Xoá tin nhắn hệ thống trên DirectAdmin Dọn hộp tin nhắn hệ thống DirectAdmin bằng giao diện hoặc dòng lệnh, kèm bảng phân loại tin nào đáng đọc trước khi xoá và cách giảm tin sinh ra. 8 phút đọc 188 lượt xem Cập nhật 26/08/2026 Cài SSL Let's Encrypt miễn phí trên DirectAdmin Let's Encrypt cấp chứng chỉ SSL miễn phí, hạn 90 ngày và tự gia hạn. Cách bật trong DirectAdmin và xử lý lỗi khi xin chứng chỉ. 5 phút đọc 171 lượt xem Cập nhật 23/08/2026 Cài đặt mcrypt cho PHP 7.2 trên DirectAdmin PHP 7.2 gỡ mcrypt khỏi lõi và đẩy sang PECL. Cách tải mã nguồn, biên dịch đúng bản PHP 7.2 rồi khai báo extension, kèm hướng chuyển sang OpenSSL. 6 phút đọc 197 lượt xem Cập nhật 23/08/2026