cPanel
หนึ่งในปัญหาที่เจ้าของเว็บไซต์บน Shared Hosting เจอบ่อยคือ ไฟล์หรือโฟลเดอร์มี Permission ไม่ถูกต้อง ส่งผลให้เว็บแสดงผิดพลาด ปลั๊กอิน WordPress อัปโหลดไฟล์ไม่ได้ หรือร้ายแรงกว่านั้นคือเปิดช่องโหว่ให้แฮกเกอร์เข้าถึงไฟล์สำคัญได้ บทความนี้จะพาทุกคนทำความเข้าใจ File Permissions ตั้งแต่พื้นฐาน พร้อมวิธีตั้งค่าผ่าน cPanel ให้ถูกต้องและปลอดภัย
File Permissions คืออะไร
File Permissions คือระบบกำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์บนเซิร์ฟเวอร์ Linux ซึ่งเป็นพื้นฐานของ Hosting ส่วนใหญ่ สิทธิ์แบ่งออกเป็น 3 กลุ่ม ได้แก่
- Owner (เจ้าของไฟล์) — โดยทั่วไปคือบัญชี cPanel ของคุณ
- Group (กลุ่ม) — ผู้ใช้อื่นที่อยู่ในกลุ่มเดียวกัน
- Others/World (คนอื่นทั่วไป) — ผู้ใช้งานทั่วไปบนเซิร์ฟเวอร์ รวมถึงเว็บเซิร์ฟเวอร์ (Apache/LiteSpeed)
แต่ละกลุ่มมีสิทธิ์ 3 ระดับ ได้แก่ อ่าน (Read = 4), เขียน (Write = 2), และรัน (Execute = 1) ตัวเลขสิทธิ์คือผลรวมของสิทธิ์แต่ละอย่าง เช่น 7 = 4+2+1 (ทำได้ทุกอย่าง), 6 = 4+2 (อ่าน+เขียน), 5 = 4+1 (อ่าน+รัน)
ความหมายของตัวเลข Permission ที่พบบ่อย
| Permission | Owner | Group | Others | ใช้กับอะไร |
|---|---|---|---|---|
644 | อ่าน+เขียน | อ่านอย่างเดียว | อ่านอย่างเดียว | ไฟล์ทั่วไป (.php, .html, .css, .js) |
755 | ทุกอย่าง | อ่าน+รัน | อ่าน+รัน | โฟลเดอร์ และ Shell script |
600 | อ่าน+เขียน | ไม่มีสิทธิ์ | ไม่มีสิทธิ์ | ไฟล์ความลับ เช่น wp-config.php |
700 | ทุกอย่าง | ไม่มีสิทธิ์ | ไม่มีสิทธิ์ | โฟลเดอร์ที่ต้องการความปลอดภัยสูง |
777 | ทุกอย่าง | ทุกอย่าง | ทุกอย่าง | ห้ามใช้ในสภาพแวดล้อม Production! |
777 หมายถึงทุกคนบนเซิร์ฟเวอร์สามารถอ่าน เขียน และรันไฟล์ได้ ซึ่งอันตรายมากบน Shared Hosting ห้ามใช้กับไฟล์ที่มีข้อมูลสำคัญเด็ดขาดวิธีดูและเปลี่ยน File Permissions ใน cPanel
cPanel มาพร้อม File Manager ที่ใช้งานง่าย ไม่ต้องพิมพ์คำสั่ง ทำตามขั้นตอนนี้
- Login เข้า cPanel แล้วคลิก File Manager ในหมวด Files
- เลือกไฟล์หรือโฟลเดอร์ที่ต้องการแก้ไข แล้วคลิกขวา หรือคลิกที่ Permissions ในแถบเมนูด้านบน
- หน้าต่าง Change Permissions จะปรากฏขึ้น มี Checkbox ให้ติ๊กในแต่ละกลุ่ม หรือพิมพ์ตัวเลขลงใน field ตรงๆ
- คลิก Change Permissions เพื่อบันทึก
นอกจากนี้ ยังสามารถเปลี่ยน Permission แบบ Recursive ได้ โดยคลิกขวาที่โฟลเดอร์ แล้วเลือก Change Permissions จะมีตัวเลือก "Recurse into subdirectories" ให้ติ๊กเพื่อเปลี่ยนทุกไฟล์และโฟลเดอร์ย่อยในคราวเดียว
File Permissions มาตรฐานสำหรับ WordPress
WordPress มีค่าแนะนำของ Permission ที่ควรตั้งดังนี้
# โฟลเดอร์ทุกตัวใน WordPress
Permission: 755
# ไฟล์ทุกตัวใน WordPress
Permission: 644
# ไฟล์ wp-config.php (สำคัญมาก!)
Permission: 600
# โฟลเดอร์ wp-content/uploads (ต้องเขียนได้)
Permission: 755
# ไฟล์ .htaccess
Permission: 644
wp-config.php เป็น 600 ทันที เพราะไฟล์นี้เก็บรหัสผ่านฐานข้อมูลและ Secret Keys ถ้าตั้งเป็น 644 จะทำให้เว็บเซิร์ฟเวอร์และผู้ใช้อื่นอ่านได้วิธีแก้ไข Permission ทั้งเว็บผ่าน cPanel Terminal
ถ้า Hosting ของคุณเปิดใช้ Terminal ใน cPanel (หมวด Advanced) สามารถใช้คำสั่งรีเซ็ต Permission ทั้งเว็บ WordPress ได้รวดเร็วกว่า
# เปลี่ยน Permission โฟลเดอร์ทั้งหมดเป็น 755
find /home/username/public_html -type d -exec chmod 755 {} \;
# เปลี่ยน Permission ไฟล์ทั้งหมดเป็น 644
find /home/username/public_html -type f -exec chmod 644 {} \;
# ตั้ง wp-config.php เป็น 600
chmod 600 /home/username/public_html/wp-config.php
# ตั้งโฟลเดอร์ uploads เป็น 755
chmod 755 /home/username/public_html/wp-content/uploads
username ด้วยชื่อบัญชี cPanel ของคุณ ถ้าไม่แน่ใจให้ดูจากหน้าแรกของ cPanel มักแสดงในรูปแบบ Current User: usernamePermission ที่ควรหลีกเลี่ยง
นอกจาก 777 ที่พูดถึงไปแล้ว ยังมี Permission อื่นที่ควรระวัง
- 666 — ทุกคนอ่านและเขียนไฟล์ได้ แต่รันไม่ได้ ยังอันตรายอยู่สำหรับไฟล์ PHP
- 757 — กลุ่ม Others รัน script ได้ ไม่เหมาะสำหรับโฟลเดอร์ที่มีไฟล์สำคัญ
- 444 — ทุกคนอ่านได้อย่างเดียว อาจทำให้ WordPress อัปเดตไฟล์ไม่ได้ เช่นไม่สามารถอัปเดตปลั๊กอินอัตโนมัติ
Permission กับการอัปโหลดไฟล์ใน WordPress
โฟลเดอร์ wp-content/uploads คือที่เก็บรูปภาพและไฟล์ที่อัปโหลดผ่าน WordPress โฟลเดอร์นี้ต้องให้ Web Server เขียนได้ จึงต้องตั้งเป็น 755 ไม่ใช่ 644 หรือ 700
ถ้าโฟลเดอร์นี้มี Permission ผิด คุณจะพบ Error ว่า "Unable to create directory" หรืออัปโหลดรูปไม่ได้เลยใน Media Library ของ WordPress
สำหรับผู้ที่กำลังมองหา Hosting คุณภาพที่ตั้งค่า File Permissions ได้ง่าย ลองดูที่ asiagb.com ผู้ให้บริการ Web Hosting และ VPS สัญชาติไทย ใช้ DirectAdmin จัดการไฟล์ได้สะดวก SLA 99%
ตรวจสอบว่า File Permissions ทำงานถูกต้อง
ใช้คำสั่งเหล่านี้ใน cPanel Terminal หรือ SSH เพื่อตรวจสอบค่า Permission ปัจจุบัน
# ดู Permission ไฟล์และโฟลเดอร์ใน public_html
ls -la /home/username/public_html/
# ตรวจสอบเฉพาะ wp-config.php
ls -la /home/username/public_html/wp-config.php
# หาไฟล์ที่มี Permission เป็น 777 (ควรจะไม่มี)
find /home/username/public_html -type f -perm 777
# หาโฟลเดอร์ที่มี Permission เป็น 777
find /home/username/public_html -type d -perm 777
# ดู Permission แบบ Octal (ตัวเลข) ของไฟล์ทั้งหมด
stat -c "%a %n" /home/username/public_html/*
find คืนผลลัพธ์ไฟล์ที่มี Permission 777 ให้รีบเปลี่ยนเป็น 644 (ไฟล์) หรือ 755 (โฟลเดอร์) ทันที ก่อนที่จะมีความเสี่ยงด้านความปลอดภัยแก้ปัญหาที่พบบ่อย
Error: "Sorry, you are not allowed to upload files"
ปัญหานี้มักเกิดจากโฟลเดอร์ wp-content/uploads มี Permission ผิด (มักเป็น 755 แต่บางครั้ง Hosting ตั้งเป็น 644 หรือต่ำกว่า) ให้ตรวจสอบและแก้ไขดังนี้
# แก้ Permission โฟลเดอร์ uploads และ subfolder ทั้งหมด
find /home/username/public_html/wp-content/uploads -type d -exec chmod 755 {} \;
find /home/username/public_html/wp-content/uploads -type f -exec chmod 644 {} \;
Error: "Could not create directory" ตอนอัปเดตปลั๊กอิน
เกิดจาก WordPress ไม่มีสิทธิ์เขียนเข้าโฟลเดอร์ wp-content/plugins หรือ wp-content/themes ต้องตรวจสอบ Permission ของโฟลเดอร์เหล่านี้ว่าเป็น 755 และ Web Server ต้องรันด้วย User เดียวกับเจ้าของไฟล์ (ปกติใช้ suEXEC บน Shared Hosting)
# ตั้ง Permission โฟลเดอร์ plugins และ themes
chmod 755 /home/username/public_html/wp-content/plugins
chmod 755 /home/username/public_html/wp-content/themes
Error: "403 Forbidden" เมื่อเข้าเว็บ
403 มักเกิดจากโฟลเดอร์ที่ไม่มีสิทธิ์ Execute ให้ Others (ต้องเป็น 7x5 ไม่ใช่ 7x4) หรือเกิดจาก .htaccess มีคำสั่งผิด ให้ตรวจสอบ Permission ของโฟลเดอร์รากก่อน
# ตรวจสอบ Permission โฟลเดอร์ public_html
stat -c "%a" /home/username/public_html/
# ผลลัพธ์ควรเป็น 755 ถ้าเป็น 700 หรือ 750 จะทำให้เกิด 403
# แก้ไข
chmod 755 /home/username/public_html/
Error: "Parse error" หรือไฟล์ PHP ดาวน์โหลดแทนรัน
ปัญหานี้ไม่ได้เกี่ยวกับ File Permissions โดยตรง แต่บางครั้งเกิดเมื่อ Permission ของไฟล์ .php เป็น 000 (ไม่มีสิทธิ์ใดเลย) ทำให้ Web Server อ่านไฟล์ไม่ได้ ให้ตั้งเป็น 644
chmod 644 /home/username/public_html/index.php
Error: "wp-config.php ถูกอ่านจากภายนอก" (Security Warning)
Plugin ด้าน Security เช่น Wordfence หรือ iThemes Security มักแจ้งเตือนว่า wp-config.php มี Permission ที่ไม่ปลอดภัย ให้ตั้งเป็น 600 เพื่อให้เฉพาะเจ้าของบัญชีเท่านั้นที่อ่านได้
chmod 600 /home/username/public_html/wp-config.php
คำถามที่พบบ่อย
ตั้ง Permission 777 ชั่วคราวได้ไหม แล้วค่อยเปลี่ยนกลับ?
ไม่แนะนำแม้แต่ชั่วคราว บน Shared Hosting ทุกบัญชีใช้เซิร์ฟเวอร์ร่วมกัน ถ้าตั้ง 777 แม้เพียงไม่กี่นาที สคริปต์อัตโนมัติที่แฮกเกอร์ฝังไว้บนเซิร์ฟเวอร์อาจเขียนไฟล์อันตรายเข้ามาได้ทันที ใช้ 755 สำหรับโฟลเดอร์แทน
ทำไม WordPress ถึงอัปเดตอัตโนมัติไม่ได้ ทั้งที่ Permission ถูกต้องแล้ว?
นอกจาก Permission แล้ว WordPress ยังต้องการ FTP credentials หรือให้ Web Server รัน PHP ด้วย User เดียวกับเจ้าของไฟล์ (suEXEC/suPHP) ถ้า Hosting ไม่รองรับ อาจต้องเพิ่ม define('FS_METHOD', 'direct'); ใน wp-config.php (ทำได้เฉพาะเมื่อ User ของ Web Server กับ Owner เป็นคนเดียวกัน)
Permission ของไฟล์ .htaccess ควรตั้งเป็นเท่าไหร่?
ตั้งเป็น 644 เสมอ เพราะ Apache ต้องอ่านไฟล์นี้ได้ แต่ไม่ควรให้ทุกคนเขียนได้ ถ้า Plugin WordPress ต้องการเขียน .htaccess (เช่นเปลี่ยน Permalink) Web Server จะจัดการให้อัตโนมัติผ่านกลไก suEXEC โดยไม่ต้องตั้ง 777