สารบัญ
- File Permission คืออะไร
- ระบบ Octal: อ่านตัวเลข Permission
- Permission 755 คืออะไร ใช้กับอะไร
- Permission 644 คืออะไร ใช้กับอะไร
- ตารางเปรียบเทียบ Permission ที่ใช้บ่อย
- ตั้งค่า Permission ใน DirectAdmin
- คำสั่ง chmod บน VPS
- ปัญหาที่พบบ่อยจาก Permission ผิด
- Security Tips สำหรับ WordPress
- บทสรุป
- คำถามที่พบบ่อย (FAQ)
1. File Permission คืออะไร
File Permission หรือ สิทธิ์การเข้าถึงไฟล์ คือระบบควบคุมว่า "ใคร" สามารถทำอะไรกับไฟล์หรือโฟลเดอร์ได้บ้าง บน Linux และระบบปฏิบัติการ Unix-like ที่ใช้ใน Web Hosting และ VPS ทุกตัว
File Permission มีสามกลุ่มผู้ใช้ที่ระบบแยกสิทธิ์ให้:
- Owner (เจ้าของ) — user ที่สร้างหรือเป็นเจ้าของไฟล์นั้น มักเป็น account hosting ของคุณ
- Group (กลุ่ม) — กลุ่ม user ที่มีสิทธิ์ร่วม เช่น กลุ่ม web server
- Others (คนอื่น) — ผู้ใช้ทุกคนบนเซิร์ฟเวอร์ที่ไม่ใช่ owner หรือ group
และสามประเภทของสิทธิ์:
- Read (r = 4) — อ่านเนื้อหาไฟล์ หรือดูรายการไฟล์ในโฟลเดอร์
- Write (w = 2) — แก้ไข เขียน หรือลบไฟล์ / สร้างไฟล์ในโฟลเดอร์
- Execute (x = 1) — รันไฟล์ (สคริปต์/โปรแกรม) / เข้าถึงโฟลเดอร์
Web Server (Apache, Nginx) ต้องมีสิทธิ์ "อ่าน" ไฟล์เว็บได้เสมอ ถ้าตั้ง Permission ผิดจะได้รับ Error 403 Forbidden ทันที
2. ระบบ Octal: อ่านตัวเลข Permission
Linux แสดง Permission เป็นตัวเลขฐาน 8 (Octal) 3 หลัก แต่ละหลักแทนสิทธิ์ของ Owner / Group / Others ตามลำดับ
แต่ละหลักคือผลรวมของ: Read (4) + Write (2) + Execute (1)
เมื่อดู Permission ใน File Manager หรือพิมพ์ ls -la บน Terminal จะเห็นเป็นตัวอักษร เช่น drwxr-xr-x ซึ่ง d = directory และตัวที่เหลือแสดงสิทธิ์ทีละกลุ่ม
3. Permission 755 คืออะไร ใช้กับอะไร
755 อ่านว่า rwxr-xr-x หมายความว่า:
- Owner: อ่าน + เขียน + รัน ได้ทุกอย่าง (7 = rwx)
- Group: อ่านและรันได้ เขียนไม่ได้ (5 = r-x)
- Others: อ่านและรันได้ เขียนไม่ได้ (5 = r-x)
ใช้ 755 กับอะไร
- ✅ โฟลเดอร์/Directory ทั้งหมด — Web Server ต้องรันโฟลเดอร์ได้ (execute บน directory = เข้าถึงได้)
- ✅ ไฟล์ Script ที่ต้องรัน เช่น
.sh, CGI scripts - ✅ โฟลเดอร์
public_html/,wp-content/,uploads/
ถ้าโฟลเดอร์ตั้งเป็น 700 หรือ 600 Web Server จะเข้าไม่ได้เลย → เว็บจะ 403 Forbidden ทันที
4. Permission 644 คืออะไร ใช้กับอะไร
644 อ่านว่า rw-r--r-- หมายความว่า:
- Owner: อ่านและเขียนได้ (6 = rw-)
- Group: อ่านได้อย่างเดียว (4 = r--)
- Others: อ่านได้อย่างเดียว (4 = r--)
ใช้ 644 กับอะไร
- ✅ ไฟล์ทั่วไป ทั้งหมด — HTML, PHP, CSS, JS, รูปภาพ
- ✅
index.php,index.html - ✅ ไฟล์ WordPress ทุกไฟล์ (ยกเว้น wp-config.php ที่ควรใช้ 600)
- ✅ ไฟล์
.htaccess
644 เหมาะสมเพราะ Web Server (Apache/Nginx ซึ่ง run ในกลุ่ม group หรือ others) ยังสามารถ อ่าน ไฟล์ได้ แต่ไม่สามารถแก้ไขได้ ปลอดภัยกว่า 777 มาก
5. ตารางเปรียบเทียบ Permission ที่ใช้บ่อย
| Permission | สัญลักษณ์ | Owner | Group | Others | ใช้กับ |
|---|---|---|---|---|---|
| 644 | rw-r--r-- | อ่าน+เขียน | อ่าน | อ่าน | ไฟล์เว็บทั่วไป |
| 755 | rwxr-xr-x | ทุกอย่าง | อ่าน+รัน | อ่าน+รัน | โฟลเดอร์ทั่วไป |
| 600 | rw------- | อ่าน+เขียน | ไม่มี | ไม่มี | wp-config.php, SSH key |
| 700 | rwx------ | ทุกอย่าง | ไม่มี | ไม่มี | โฟลเดอร์ส่วนตัว |
| 777 | rwxrwxrwx | ทุกอย่าง | ทุกอย่าง | ทุกอย่าง | ❌ อันตราย! ห้ามใช้ |
6. ตั้งค่า Permission ใน DirectAdmin
AsiaGB Hosting ใช้ DirectAdmin ซึ่งมี File Manager ในตัวที่ช่วยตั้ง Permission ได้โดยไม่ต้องใช้ Terminal
ขั้นตอนการตั้งค่า
- เข้าสู่ระบบ DirectAdmin ของคุณ (เช่น
yourdomain.com:2222) - คลิก Files → File Manager
- นำทางไปยังไฟล์หรือโฟลเดอร์ที่ต้องการ
- คลิกขวาที่ไฟล์/โฟลเดอร์ → เลือก Change Permissions
- กรอกตัวเลข Permission (เช่น 755 หรือ 644) แล้วคลิก OK
ถ้าต้องการเปลี่ยน Permission ทีเดียวหลายไฟล์ ให้เลือกหลายไฟล์พร้อมกัน (Ctrl+Click) แล้วคลิกขวา → Change Permissions
ใช้ Select All เปลี่ยนทั้งโฟลเดอร์
สำหรับโฟลเดอร์ที่มีไฟล์เยอะ เช่น WordPress ให้เข้าไปในโฟลเดอร์ → กด Select All → Change Permissions ช่วยประหยัดเวลามาก แต่ต้องระวังว่าโฟลเดอร์และไฟล์ควรใช้ Permission ต่างกัน (755 vs 644)
7. คำสั่ง chmod บน VPS
สำหรับ AsiaGB VPS หรือผู้ใช้ที่เข้าถึง SSH Terminal ได้ คำสั่ง chmod ยืดหยุ่นกว่า File Manager มาก
คำสั่งพื้นฐาน
คำสั่งแบบชาญฉลาด: แยกไฟล์และโฟลเดอร์
วิธีที่ถูกต้องที่สุดสำหรับ WordPress คือตั้ง Permission แยกโฟลเดอร์ (755) และไฟล์ (644) พร้อมกันด้วยคำสั่งเดียว:
ใช้ find แทน chmod -R เสมอ เพราะสามารถแยก type เป็น file (-type f) หรือ directory (-type d) ได้ ทำให้โฟลเดอร์ได้ 755 และไฟล์ได้ 644 อย่างถูกต้อง
8. ปัญหาที่พบบ่อยจาก Permission ผิด
Error 403 Forbidden
เกิดเมื่อ Web Server ไม่มีสิทธิ์อ่านไฟล์หรือเข้าโฟลเดอร์
| ปัญหา | Permission ผิด | แก้ไขเป็น |
|---|---|---|
| 403 ทั้งเว็บ | public_html = 700 | 755 |
| 403 หน้า index | index.php = 600 | 644 |
| 403 รูปภาพ | uploads/ = 700 | 755 |
| PHP Error ตอน write | uploads/ = 555 | 755 |
เว็บโดน Hack / Shell Upload
สาเหตุหลักคือโฟลเดอร์ตั้งเป็น 777 ทำให้ทุกคนบนเซิร์ฟเวอร์เขียนไฟล์ได้ แฮกเกอร์ฝัง PHP shell ผ่านช่องนี้ได้ง่ายมาก
ห้ามตั้ง Permission 777 กับไฟล์หรือโฟลเดอร์ใดๆ เด็ดขาด โดยเฉพาะโฟลเดอร์ uploads/ ที่ผู้ใช้อัพโหลดไฟล์ได้ เพราะแฮกเกอร์จะอัพโหลด PHP shell แล้วรันคำสั่งบนเซิร์ฟเวอร์ได้ทันที
9. Security Tips สำหรับ WordPress บน Hosting
WordPress มีไฟล์ที่ต้องดูแลเป็นพิเศษ:
| ไฟล์/โฟลเดอร์ | Permission แนะนำ | เหตุผล |
|---|---|---|
| public_html/ | 755 | Web server ต้องเข้าถึงได้ |
| ไฟล์ PHP ทั่วไป | 644 | อ่านได้ แต่เขียนไม่ได้ |
| wp-config.php | 600 | มี DB password ต้องปลอดภัยสูงสุด |
| wp-content/ | 755 | WordPress ต้องเขียนได้ |
| wp-content/uploads/ | 755 | Upload ไฟล์ได้ แต่ไม่ 777 |
| .htaccess | 644 | Apache อ่านได้ คนอื่นเขียนไม่ได้ |
บทสรุป
- 755 — สำหรับโฟลเดอร์ทั่วไป เพื่อให้ Web Server เข้าถึงได้
- 644 — สำหรับไฟล์ทั่วไป HTML, PHP, CSS, JS ทุกอย่าง
- 600 — สำหรับไฟล์ที่มีข้อมูลสำคัญ เช่น wp-config.php
- 777 — ห้ามใช้เด็ดขาด เปิดช่องให้แฮกเกอร์ฝัง Shell ได้
- ใช้
find -type d -exec chmod 755และfind -type f -exec chmod 644เพื่อตั้งให้ถูกต้องพร้อมกัน - DirectAdmin มี File Manager ให้คลิกตั้ง Permission ได้โดยไม่ต้องใช้ Terminal
คำถามที่พบบ่อย (FAQ)
Permission 777 อันตรายไหม
อันตรายมากครับ 777 ให้ทุกคนบนเซิร์ฟเวอร์เขียนและรันไฟล์ได้ แฮกเกอร์สามารถแทรก PHP shell เข้าไปได้ ห้ามใช้กับไฟล์หรือโฟลเดอร์ของเว็บเด็ดขาด
Permission สำหรับ WordPress ควรเป็นเท่าไหร่
WordPress แนะนำให้ใช้ 755 สำหรับโฟลเดอร์ และ 644 สำหรับไฟล์ โดยเฉพาะ wp-config.php ควรตั้งเป็น 600 เพื่อความปลอดภัยสูงสุด
Error 403 Forbidden เกี่ยวกับ Permission อย่างไร
Error 403 มักเกิดจาก Permission ผิด เช่น โฟลเดอร์ตั้งเป็น 700 ทำให้ web server อ่านไม่ได้ หรือไฟล์ index.html/index.php มี Permission 600 แก้โดยตั้งโฟลเดอร์เป็น 755 และไฟล์เป็น 644
ตั้ง chmod ใน DirectAdmin ได้ไหม
ได้ครับ เข้า DirectAdmin → Files → File Manager เลือกไฟล์หรือโฟลเดอร์ → คลิกขวา → Change Permissions แล้วกรอกตัวเลข Permission ที่ต้องการ
Permission 644 กับ 640 ต่างกันอย่างไร
644 ให้ others อ่านได้ ส่วน 640 ให้ others อ่านไม่ได้เลย สำหรับ web hosting ทั่วไปใช้ 644 เพราะ web server ต้องอ่านไฟล์ได้ แต่ไฟล์ที่มีข้อมูลสำคัญอย่าง config ควรใช้ 600 หรือ 640
คำสั่ง chmod ใช้อย่างไรให้เปลี่ยน Permission ทั้งโฟลเดอร์พร้อมกัน
ใช้ option -R (recursive) เช่น chmod -R 755 /home/user/public_html/wp-content/ แต่แนะนำให้ใช้ find -type d และ find -type f แยกกันเพื่อให้โฟลเดอร์ได้ 755 และไฟล์ได้ 644 อย่างถูกต้อง