Thay đổi quyền truy cập file
Trong hệ thống quản lý tập tin của máy tính, mỗi file và directory lại có một permission riêng để quy định ai được phép đọc, ghi, thay đổi và truy cập. Permission Modes 7 5 5 user group world r+w+x r+x r+x 4+2+1 4+0+1 4+0+1 = 755 Permission mode được tính bằng tổng ...
Trong hệ thống quản lý tập tin của máy tính, mỗi file và directory lại có một permission riêng để quy định ai được phép đọc, ghi, thay đổi và truy cập.
Permission Modes
7 5 5 user group world r+w+x r+x r+x 4+2+1 4+0+1 4+0+1 = 755
Permission mode được tính bằng tổng các giá trị của user, file group và everyone.
- Read 4 - Cho phép đọc file
- Write 2 - Cho phép ghi/sửa file
- eXecute 1 - Cho phép đọc/ghi/xoá/sửa/tạo folder
7 4 4 user group world r+w+x r r 4+2+1 4 4 = 744
Example Permission Modes
Mode | Permission | Explanation |
---|---|---|
0477 | -r--rwxrwx | Owner chỉ được đọc, group và others được full quyền |
0677 | -rw-rwxrwx | Owner chỉ được đọc/ghi/sửa, group và others được full quyền |
0444 | -r--r--r-- | Tất cả chỉ được đọc |
0666 | -rw-rw-rw- | Tất cả được đọc/ghi/sửa |
0400 | -r-------- | Owner được đọc, group và others không có quyền gì |
0600 | -rw------- | Owner được đọc/ghi/sửa, group và others không có quyền gì |
0470 | -r--rwx--- | Owner được đọc, group được full quyền còn others không có quyền gì |
0407 | -r-----rwx | Owner được đọc, group không có quyền gì còn others có full quyền |
0670 | -rw-rwx--- | Owner được đọc/ghi/sửa, group có full quyền, còn others không có quyền gì |
0607 | -rw----rwx | Owner được đọc/ghi/sửa, group không có quyền gì, còn others có full quyền |
Permission Scheme cho WordPress
Hướng dẫn dưới đây không bao hàm tất cả các trường hợp, mà chỉ cơ bản dành cho server đang chạy với thiết lập tiêu chuẩn (với những shared hosting sử dụng suexec, hãy xem ở bên dưới).
Bình thường thì tất cả các files nên có owner là tài khoản (ftp) của bạn trên web server của bạn, và có thể được ghi bởi account đó. Trên các shared hosts, các files không nên có owner là chính process webserver đó (www, apache hay nobody).
Bất kỳ file nào cần quyền ghi từ WordPress thì nên có owner hay group-owner bởi tài khoản được sử dụng bởi WordPress (có thể khác v ới tài khoản trên server). Ví dụ như bạn có thể có tài khoản để trao đổi file qua FTP với server của bạn, nhưng server thì lại chạy ở một tài khoản riêng rẽ như dhapache hay nobody chả hạn). Nếu WordPress đang chạy với FTP account, thì account đó cầ có quyền ghi (là owner của file, hoặc thuộc group có quyền ghi). Trong trường hợp thứ hai, permissions phải được set tự do hơn default (ví dụ 775 thay cho 755, hay 664 thay cho 644).
Permission cho file và folder của WordPress nên được thiết lập giống nhau cho hầu hết các users, tuỳ thuộc vào cách cài đặt của bạn và umask setting của môi trường hệ thống lúc cài đặt.
NOTE: Nếu một người có kinh nghiệm cài WordPress cho bạn, bạn có thể không cần phải quan tâm đến file permission nữa. Nếu bạn tự cài WordPress, bạn CẦN phải thiết lập file permission. Một số files và thư mục cần phải được set permission nghiêm ngặt hơn, ví dụ như wp-config.php, mặc định là 644 là rất nguy hiểm.
Về cơ bản, tất cả core WordPress files nên chỉ có account của bạn (hoặc httpd account) mới có quyền ghi. Tuy nhiên, nếu bạn khởi tạo mod_rewrite Permalinks hay .htaccess khác, bạn nên đảm bảo rằng WordPress có thể ghi vào /.htaccess của bạn.
Nếu bạn muốn sử dụng built-in theme editor, các files cần có quyền ghi cho group.
Một vài plugins đòi quyền ghi vào `/wp-content/ folder, khi đó chúng sẽ thông báo cho bạn biết trong quá trình cài đặt. Một vài trường hợp đòi permission là 755 để hoạt động.
Shared Hosting với suexec
Những thiết lập bên trên không áp dụng cho hệ thống shared hosting sử dụng suexec rất phổ biến. Ở những hệ thống đó, php process sẽ chạy với quyền owner của các php files, thông qua một thiết lập đơn giản hơn và môi trường bảo mật hơn.
NOTE: suexec không nên sử dụng để thiết lập single-site server, nó chỉ bảo mật hơn với một vài trường hợp của shared hosting.
Permission chuẩn dành cho thiết lập suexec rất dễ hiểu:
- Tất cả các files có owner là account của chính user, ko phải account sử dụng cho httpd process.
- Không sử dụng Group ownership, trừ trường hợp cần group đặc biệt để kiểm tra permissions của web-server process.
- Tất cả các thư mục có quyền 755 hoặc 750.
- Tất cả các files có quyền 644 hoặc 640. Ngoại trừ wp-config.php nên là 440 hoặc 400.
- Không thư mục nào có quyền 777, kể cả đường dẫn upload. Khi php process chạy dưới quyền là owner của file, nó có thể ghi file trong thư mục có quyền 755.
Các phương pháp phổ biến sử dụng bởi sysadminds cho thiết lập trên:
- suPHP
- mod_ruid2
- mpm-itk
- mod_fcgid
- PHP-FPM
Sử dụng FTP Client
Các chương trình FTP client cho phép bạn thay đổi permissions cho files và directories trên remote host. Chức năng đó thường được ghi là chmod hoặc set permissions trên thanh menu.
Ví dụ như bạn muốn thay đổi permission cho file index.php
Click chuột phải vào index.php và chọn File Permissions. Popup dưới đây sẽ hiện ra.
Không cần quan tâm đến mấy cái checkboxes làm gì, chỉ việc điền số mong muốn vào ô Numeric value, ví dụ ở đây là 666, rồi click OK, bạn sẽ thấy permission của index.php đã được thay đổi.
Sử dụng Command Line
Nếu bạn sử dụng SSH để truy cập vào server, bạn có thể sử dụng chmod để thay đổi file permissions.
# chmod -v 746 DIR
Nếu việc thay đổi quyền của thư mục vẫn chưa giúp bạn có thể ghi vào đó, bạn có thể thử sử dụng option -R thay cho -v, để thay đổi toàn bộ thư mục và files bên trong folder đó.
About Chmod
chmod là command của unix, viết tắt của change mode.
Nếu bạn sử dụng Permalinks, bạn nên thay đổi permissions cho htaccess để chắc chắn rằng WordPress có thể thực hiện update nó khi bạn tạo new page, redirect v.vv..
- Vào directory chính của WordPress
- chmod -v 666 .htaccess
Tăng cường bảo mật với File Permissions
Ví dụ dưới đây sử dụng custom compiled php-cgi binary và custom php.ini đặt ở thư mục cgi-bin để chạy php scripts. Để ngăn truy cập trực tiếp từ web browser đến các chương trình biên dịch và php.ini, chúng đc bảo vệ với .htaccess.
Default Permissions (umask 022)
644 -rw-r--r-- /home/user/wp-config.php 644 -rw-r--r-- /home/user/cgi-bin/.htaccess 644 -rw-r--r-- /home/user/cgi-bin/php.ini 755 -rwxr-xr-x /home/user/cgi-bin/php.cgi 755 -rwxr-xr-x /home/user/cgi-bin/php5.cgi
Thiết lập quyền bảo mật hơn
600 -rw------- /home/user/wp-config.php 604 -rw----r-- /home/user/cgi-bin/.htaccess 600 -rw------- /home/user/cgi-bin/php.ini 711 -rwx--x--x /home/user/cgi-bin/php.cgi 100 ---x------ /home/user/cgi-bin/php5.cgi
.htaccess (644->604)
Sự thay đổi xoá đi quyền đọc của group owner.
php.ini (644->600)
Trước đây tất cả groups và users có quyền vào server sẽ có thể access vào php.ini. Tuy nhiên, vì php.ini chỉ cần sử dụng bởi php.cgi, nên chỉ cần php.cgi process có quyền truy cập là đủ. php.cgi chạy với cùng user làm owner của file, thế nên chỉ cần user đó có quyền access vào file.
php.cgi (755->711)
Đây là compiled php-cgi binary được sử dụng thay thế cho mod_php.
php5.cgi (755->100) Vì có mỗi user account làm owner của process chạy php cgi, nên chúng ta disabled toàn bộ quyền, ngoài trừ quyền execute.
Source: Changing File Permissions