File Permissions ใน cPanel คืออะไร ตั้งค่ายังไง

เข้าใจ 644, 755, 777 และวิธีตั้งค่าที่ถูกต้องสำหรับ WordPress บน Shared Hosting

File Permissions ใน cPanel คืออะไร ตั้งค่ายังไง cPanel

หนึ่งในปัญหาที่เจ้าของเว็บไซต์บน Shared Hosting เจอบ่อยคือ ไฟล์หรือโฟลเดอร์มี Permission ไม่ถูกต้อง ส่งผลให้เว็บแสดงผิดพลาด ปลั๊กอิน WordPress อัปโหลดไฟล์ไม่ได้ หรือร้ายแรงกว่านั้นคือเปิดช่องโหว่ให้แฮกเกอร์เข้าถึงไฟล์สำคัญได้ บทความนี้จะพาทุกคนทำความเข้าใจ File Permissions ตั้งแต่พื้นฐาน พร้อมวิธีตั้งค่าผ่าน cPanel ให้ถูกต้องและปลอดภัย

File Permissions คืออะไร

File Permissions คือระบบกำหนดสิทธิ์การเข้าถึงไฟล์และโฟลเดอร์บนเซิร์ฟเวอร์ Linux ซึ่งเป็นพื้นฐานของ Hosting ส่วนใหญ่ สิทธิ์แบ่งออกเป็น 3 กลุ่ม ได้แก่

แต่ละกลุ่มมีสิทธิ์ 3 ระดับ ได้แก่ อ่าน (Read = 4), เขียน (Write = 2), และรัน (Execute = 1) ตัวเลขสิทธิ์คือผลรวมของสิทธิ์แต่ละอย่าง เช่น 7 = 4+2+1 (ทำได้ทุกอย่าง), 6 = 4+2 (อ่าน+เขียน), 5 = 4+1 (อ่าน+รัน)

ความหมายของตัวเลข Permission ที่พบบ่อย

PermissionOwnerGroupOthersใช้กับอะไร
644อ่าน+เขียนอ่านอย่างเดียวอ่านอย่างเดียวไฟล์ทั่วไป (.php, .html, .css, .js)
755ทุกอย่างอ่าน+รันอ่าน+รันโฟลเดอร์ และ Shell script
600อ่าน+เขียนไม่มีสิทธิ์ไม่มีสิทธิ์ไฟล์ความลับ เช่น wp-config.php
700ทุกอย่างไม่มีสิทธิ์ไม่มีสิทธิ์โฟลเดอร์ที่ต้องการความปลอดภัยสูง
777ทุกอย่างทุกอย่างทุกอย่างห้ามใช้ในสภาพแวดล้อม Production!
สำคัญ: Permission 777 หมายถึงทุกคนบนเซิร์ฟเวอร์สามารถอ่าน เขียน และรันไฟล์ได้ ซึ่งอันตรายมากบน Shared Hosting ห้ามใช้กับไฟล์ที่มีข้อมูลสำคัญเด็ดขาด

วิธีดูและเปลี่ยน File Permissions ใน cPanel

cPanel มาพร้อม File Manager ที่ใช้งานง่าย ไม่ต้องพิมพ์คำสั่ง ทำตามขั้นตอนนี้

  1. Login เข้า cPanel แล้วคลิก File Manager ในหมวด Files
  2. เลือกไฟล์หรือโฟลเดอร์ที่ต้องการแก้ไข แล้วคลิกขวา หรือคลิกที่ Permissions ในแถบเมนูด้านบน
  3. หน้าต่าง Change Permissions จะปรากฏขึ้น มี Checkbox ให้ติ๊กในแต่ละกลุ่ม หรือพิมพ์ตัวเลขลงใน field ตรงๆ
  4. คลิก 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
Tip: หลังติดตั้ง WordPress ให้ตั้ง 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: username

Permission ที่ควรหลีกเลี่ยง

นอกจาก 777 ที่พูดถึงไปแล้ว ยังมี Permission อื่นที่ควรระวัง

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/*
Tip: ถ้าคำสั่ง 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