File permissions WordPress nên được thiết kế theo đúng hosting, user/group và deployment model của website. Không có một bộ permission duy nhất phù hợp mọi server. Mục tiêu là cấp đủ quyền để WordPress và quy trình vận hành hoạt động, nhưng không mở rộng quyền ghi vượt quá nhu cầu. Đây là một lớp trong hardening WordPress tổng thể, nơi filesystem control cần phối hợp với owner/group, update workflow và monitoring.
Đừng bắt đầu bằng “chmod 777”
777 cấp quyền đọc/ghi/thực thi cho owner, group và others. Dùng rộng rãi để “sửa lỗi permission” có thể tạo rủi ro đáng kể. Nếu website chỉ hoạt động khi mở quyền quá mức, cần tìm nguyên nhân owner/group hoặc deploy model thay vì giữ cấu hình đó lâu dài.
Thiết kế file permissions theo server và deployment
Map owner, group và process trước
| Thành phần | Cần biết | Lý do |
|---|---|---|
| Web server/PHP | User/group thực thi | Xác định quyền đọc/ghi thật sự cần |
| Deploy account | User/group và workflow | Tránh conflict với web server |
| WordPress core | Ai được phép update | Kiểm soát writable scope |
| Uploads/cache | Thư mục cần ghi runtime | Phân biệt với code directory |
| wp-config.php | Ai cần đọc | Bảo vệ secret/config nhạy cảm |
Permission là một phần của mô hình vận hành
Shared hosting, VPS, container và managed WordPress có thể dùng ownership khác nhau. Vì vậy con số permission chỉ có ý nghĩa khi biết user/group thực tế. WordPress Hardening khuyến nghị giới hạn quyền file và tránh để file writable rộng hơn mức cần thiết.
Code và runtime data không nên được đối xử giống nhau
Core, plugin và theme là code; uploads, cache và một số generated files là runtime data. Nếu kiến trúc cho phép, giảm khả năng web process ghi vào code directory giúp hạn chế một số đường persistence. Tuy nhiên thay đổi này cần tương thích với update/deploy workflow.
Kiểm tra trước khi thay đổi
- Ghi current owner/group/permission.
- Xác định process nào thật sự cần ghi.
- Chọn phạm vi pilot nhỏ.
- Backup hoặc chuẩn bị rollback.
- Thay đổi permission theo mô hình server.
- Smoke test upload, update, cache và frontend.
- Giám sát lỗi permission sau rollout.
wp-config.php cần xử lý riêng
wp-config.php chứa cấu hình và secret, nên quyền truy cập cần phù hợp với server model. Không áp dụng một con số copy-paste mà không kiểm tra owner/group. Xem bảo vệ wp-config, salts và secrets.
PASS/FAIL sau thay đổi
| Check | PASS | FAIL |
|---|---|---|
| Least write access | Chỉ process cần thiết có quyền ghi | Code writable rộng ngoài nhu cầu |
| Functionality | Upload/update/cache hoạt động theo thiết kế | Site lỗi vì permission |
| Rollback | Có state trước thay đổi | Không biết permission/owner ban đầu |
| Monitoring | Có theo dõi permission drift | Thay đổi không kiểm soát |
Không sửa permission mù quáng sau malware
Nếu file bị chèn mã độc, permission rộng có thể là một yếu tố nhưng chưa chắc là entry point. Hãy điều tra source ghi file, credential, plugin/theme vulnerability và persistence. Xem tìm file PHP mới tạo/chỉnh sửa và persistence WordPress malware.
Nguồn chính thức
Kết luận
File permissions WordPress an toàn không phải một bảng số cố định. Hãy bắt đầu từ owner/group/process, tách code khỏi runtime data khi kiến trúc cho phép, giảm quyền ghi theo nhu cầu thực tế và luôn có rollback + validation.
