Quyền file WordPress quyết định user nào được đọc, ghi hoặc đi qua thư mục. Mục tiêu không phải thuộc lòng 755/644 rồi áp dụng mọi nơi, mà là bảo đảm code chỉ được ghi bởi chủ sở hữu/quy trình deploy, còn những thư mục cần ghi như uploads hoặc cache được mở đúng phạm vi.
Hiểu owner, group và user chạy PHP
Hai website cùng dùng Nginx/PHP có thể cần quyền khác nếu PHP-FPM chạy theo từng user, chạy chung dưới www-data hoặc dùng shared hosting với suexec. Trước khi chmod, xác định owner/group hiện tại và tiến trình nào cần ghi. Permission đúng nhưng ownership sai vẫn gây lỗi.
Mốc tham khảo 755 và 644
WordPress đưa ra 755 cho thư mục và 644 cho tệp như một sơ đồ phổ biến, với wp-config.php chặt hơn khi môi trường cho phép. Đây là điểm bắt đầu, không phải luật tuyệt đối. Một số hosting dùng 750/640; cache, backup và uploads có yêu cầu riêng.
Những nơi không nên ghi mặc định
- WordPress core, wp-admin và wp-includes sau khi deploy.
- Plugin và theme nếu cập nhật được quản lý ngoài Dashboard.
- wp-config.php và cấu hình máy chủ.
- Bản backup, log điều tra và baseline checksum.
Những nơi có thể cần ghi
Uploads, cache, thư mục update/upgrade tạm thời và một số plugin cần ghi. Chỉ cấp cho user/process cần thiết và theo hướng dẫn của thành phần. Nếu plugin đòi ghi toàn bộ root, cần đánh giá lại thiết kế thay vì mở rộng quyền ngay.
Vì sao 777 nguy hiểm?
777 cho mọi user khả năng đọc, ghi và đi qua thư mục. Trên máy chủ dùng chung hoặc khi một tiến trình khác bị chiếm, nó làm tăng phạm vi sửa tệp. WordPress nêu rõ không nên dùng 777 cho thư mục upload trong cấu hình suexec.
Quy trình thay đổi an toàn
- Ghi lại owner, group và mode hiện tại.
- Xác định thao tác nào thực sự cần ghi.
- Thử quyền chặt nhất trên staging.
- Áp theo thư mục cụ thể thay vì chmod -R toàn site.
- Kiểm thử update, upload, cache và rollback.
Nếu PHP có quyền ghi uploads và plugin có lỗ hổng upload, attacker vẫn có thể ghi tại đó. Cần kết hợp vá lỗi, validation và chặn thực thi.
Nguồn tham khảo chính thức
Đối chiếu Changing File Permissions và phần file permissions trong Hardening WordPress.
Permission 777 thường là dấu vết của một lần chữa lỗi vội
Khi upload hoặc update thất bại, cách nhanh nhất nhiều người chọn là mở quyền toàn bộ thư mục. Website chạy lại ngay, nhưng web server cũng có thể sửa nhiều nơi hơn cần thiết. Nếu một plugin bị khai thác, attacker có sẵn không gian để đặt mã.
Ngược lại, chmod theo công thức cứng mà không hiểu owner/group có thể khóa update, cache và backup. Quyền file là bài toán giữa chức năng và giới hạn thiệt hại, không phải cuộc thi xem con số nào nhỏ nhất.
Đọc quyền theo luồng vận hành
Hãy hỏi process nào cần đọc, user nào cần deploy, thư mục nào thật sự cần ghi và thay đổi diễn ra qua CI/CD hay control panel. Core, plugin và theme thường không cần web server ghi liên tục; uploads, cache và thư mục tạm có nhu cầu khác.
Dấu hiệu quyền sở hữu đã lệch
- File mới thuộc user khác sau mỗi lần update.
- Plugin yêu cầu FTP credential dù trước đó không cần.
- Cache chỉ hoạt động khi mở 777.
- Backup restore tạo owner root khiến PHP không đọc được.
- Attacker sửa được core dù đội vận hành không cấp quyền.
Ghi lại baseline owner/permission sau khi ổn định và cảnh báo sai lệch giúp đội ngũ phát hiện cả lỗi triển khai lẫn hành vi xâm nhập.
Kiểm tra từ ngoài vào trong
Permission hệ điều hành chỉ là một lớp. ACL, container volume, control panel và credential SFTP cũng quyết định ai sửa được file. Một thư mục 755 không giúp ích nếu tài khoản owner bị lộ.
Đừng sửa permission toàn site giữa production
Thử trên staging hoặc từng vùng, chụp trạng thái trước và có rollback. Sau thay đổi, kiểm tra upload, update, cache, backup và deploy để lỗi không âm thầm tích tụ.
Cụm gia cố WordPress sau phục hồi
Hoàn thiện cấu hình, quyền, danh tính và lớp phòng thủ theo một lộ trình có kiểm thử.
Câu hỏi thường gặp
Mọi website WordPress đều dùng 755 và 644 phải không?
Đây là mốc phổ biến nhưng còn phụ thuộc ownership, PHP handler và mô hình hosting.
Có nên dùng 777 khi upload lỗi không?
Không. Cần sửa owner/group hoặc cấp đúng thư mục thay vì mở quyền cho mọi user.
wp-config.php nên để quyền bao nhiêu?
Chặt nhất mà user chạy PHP vẫn đọc được; WordPress nêu 400/440 ở một số hệ thống nhưng phải kiểm thử môi trường thực tế.
Cần rà cấu hình bảo mật theo website thực tế?
WebAnToan có thể kiểm tra cấu hình, quyền, tài khoản và lớp phòng thủ mà không làm gián đoạn nghiệp vụ.



