Permission Issues Linux Server แก้ปัญหาสิทธิ์ไฟล์อย่างถูกวิธี
返回文章列表

Permission Issues Linux Server แก้ปัญหาสิทธิ์ไฟล์อย่างถูกวิธี

แก้ปัญหาสิทธิ์การเข้าถึงไฟล์บน Linux Server ตั้งแต่ Permission Denied, Read-Only ไปจนถึงปัญหาสิทธิ์ Web Server พร้อมแนวทาง Least Privilege

Server Category--更新: May 20, 2026

Permission Issues บน Linux Server ปัญหาที่เจอบ่อยที่สุด

ปัญหาเรื่องสิทธิ์การเข้าถึงไฟล์ (Permission Issues) เป็นปัญหาอันดับต้น ๆ ที่ผู้ดูแลระบบ Linux Server เจอ ไม่ว่าจะเป็นข้อความ Permission denied ที่โผล่ขึ้นมาเมื่อพยายามเข้าถึงไฟล์ แก้ไข configuration ไม่ได้ หรือแอปพลิเคชันพังเพราะไม่มีสิทธิ์เพียงพอ

ถ้าเข้าใจระบบสิทธิ์ของ Linux และรู้วิธีแก้ไขที่ถูกต้อง ปัญหาเหล่านี้แก้ได้ไม่ยาก

ระบบ Permission ของ Linux ทำงานอย่างไร

ทุกไฟล์และไดเรกทอรีมีสิทธิ์ 3 ระดับ คือ อ่าน (read - r) เขียน (write - w) และรัน (execute - x) กำหนดให้กับ 3 กลุ่ม คือ เจ้าของ (owner) กลุ่ม (group) และผู้อื่น (others)

ตรวจสอบสิทธิ์ไฟล์

# ดูสิทธิ์ไฟล์แบบละเอียด
ls -la /var/www/html/

# ตัวอย่าง output:
# -rwxr-xr-- 1 www-data www-data 1024 Mar 15 10:00 index.html
# drwxr-xr-x 2 root     root     4096 Mar 15 09:00 css/

ในตัวอย่างข้างต้น -rwxr-xr-- หมายถึงเจ้าของมีสิทธิ์ครบ (rwx) กลุ่มอ่านและรันได้ (r-x) ผู้อื่นอ่านอย่างเดียว (r--)

ดูข้อมูลไฟล์แบบละเอียดด้วย stat

stat /var/www/html/index.html

# ตัวอย่าง output:
#   File: /var/www/html/index.html
#   Size: 1024       Blocks: 8          IO Block: 4096   regular file
# Access: (0754/-rwxr-xr--)  Uid: (   33/www-data)   Gid: (   33/www-data)
# Access: 2026-03-15 10:00:00.000000000 +0700
# Modify: 2026-03-15 09:30:00.000000000 +0700

ปัญหาที่พบบ่อยและวิธีแก้

Permission Denied

ปัญหาอันดับหนึ่ง แก้ด้วยการตรวจสอบและปรับสิทธิ์:

# ตรวจสอบสิทธิ์ปัจจุบัน
ls -la /path/to/file

# เปลี่ยนเจ้าของไฟล์
sudo chown user:group /path/to/file

# เปลี่ยนเจ้าของแบบ recursive (ทั้งโฟลเดอร์)
sudo chown -R www-data:www-data /var/www/html/

# เพิ่มสิทธิ์ด้วย chmod (ตัวเลข)
sudo chmod 755 /path/to/directory
sudo chmod 644 /path/to/file

# เพิ่มสิทธิ์ด้วย chmod (ตัวอักษร)
sudo chmod u+x script.sh        # เพิ่มสิทธิ์ execute ให้ owner
sudo chmod g+w /shared/folder    # เพิ่มสิทธิ์ write ให้ group

ไฟล์ Read-Only แก้ไขไม่ได้

อ่านได้แต่เขียนไม่ได้ สาเหตุอาจเป็น filesystem ถูก mount แบบ read-only หรือไฟล์ถูกตั้ง immutable attribute:

# ตรวจสอบ mount options
mount | grep /dev/sda1

# ตรวจสอบ immutable attribute
lsattr /path/to/file

# ถ้าเห็น 'i' flag ให้ลบออก
sudo chattr -i /path/to/file

# ตั้ง immutable เพื่อป้องกันไฟล์ (ห้ามแก้ไข/ลบ แม้เป็น root)
sudo chattr +i /etc/resolv.conf

สิทธิ์ของไดเรกทอรีที่มองข้าม

ใน Linux ต้องมีสิทธิ์ execute (x) บนทุกไดเรกทอรีในเส้นทาง:

# ตรวจสอบสิทธิ์ทุกไดเรกทอรีในเส้นทาง
namei -l /var/www/html/index.html

# ตัวอย่าง output:
# drwxr-xr-x root     root     /
# drwxr-xr-x root     root     var
# drwxr-xr-x root     root     www
# drwxr-xr-x www-data www-data html
# -rw-r--r-- www-data www-data index.html

สิทธิ์ Web Server

สำหรับเซิร์ฟเวอร์ที่ให้บริการเว็บ ตั้งสิทธิ์ตามมาตรฐาน:

# ตรวจสอบว่า web server รันด้วย user อะไร
ps aux | grep -E "nginx|apache|httpd"

# ตั้งสิทธิ์มาตรฐานสำหรับ web root
sudo chown -R www-data:www-data /var/www/html/
sudo find /var/www/html/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/ -type f -exec chmod 644 {} \;

Best Practice สำหรับจัดการสิทธิ์

ใช้หลัก Least Privilege

ให้สิทธิ์เท่าที่จำเป็นเท่านั้น อย่าตั้ง 777 เพราะต้องการแก้ปัญหาให้เร็ว นั่นคือช่องโหว่ด้านความปลอดภัยที่ร้ายแรง

ใช้ Group อย่างเหมาะสม

# สร้าง group สำหรับทีม
sudo groupadd webdev

# เพิ่ม user เข้า group
sudo usermod -aG webdev john
sudo usermod -aG webdev jane

# ตั้ง group ownership
sudo chgrp -R webdev /var/www/project/
sudo chmod -R g+rw /var/www/project/

# ตั้ง SGID เพื่อให้ไฟล์ใหม่สืบทอด group
sudo chmod g+s /var/www/project/

ใช้ ACL สำหรับกรณีซับซ้อน

เมื่อ owner/group/others ไม่เพียงพอ ใช้ Access Control Lists:

# กำหนดสิทธิ์ให้ user เฉพาะ
sudo setfacl -m u:john:rwx /shared/project/
sudo setfacl -m u:jane:rx /shared/project/

# กำหนดสิทธิ์ให้ group เฉพาะ
sudo setfacl -m g:devteam:rwx /shared/project/

# ตั้ง default ACL สำหรับไฟล์ใหม่ในไดเรกทอรี
sudo setfacl -d -m u:john:rwx /shared/project/

# ตรวจสอบ ACL
getfacl /shared/project/

# ลบ ACL ทั้งหมด
sudo setfacl -b /shared/project/

ระวังการใช้ sudo

# ตรวจสอบเจ้าของไฟล์ที่สร้างด้วย sudo
ls -la /path/to/file

# แก้เจ้าของกลับเป็น user ปกติ
sudo chown jamillejung:jamillejung /path/to/file

โครงสร้างพื้นฐานที่ปลอดภัย

การจัดการสิทธิ์ที่ดีเป็นส่วนหนึ่งของระบบรักษาความปลอดภัยของ DriteStudio องค์กรที่ใช้ VPS ของ DriteStudio หรือ Dedicated Server ของ DriteStudio ควรมีนโยบายจัดการสิทธิ์ชัดเจน ตรวจสอบอย่างสม่ำเสมอ และมี audit log ติดตามการเปลี่ยนแปลง

คำถามที่พบบ่อย (FAQ)

chmod 777 อันตรายยังไง?

ทำให้ทุกคนในระบบอ่าน เขียน และรันไฟล์ได้ หากมี web application ที่มีช่องโหว่ ผู้โจมตีสามารถอัปโหลดและรันไฟล์อันตรายได้ทันที

ใช้ chmod กับ chown ต่างกันยังไง?

chmod เปลี่ยนสิทธิ์ (อ่าน/เขียน/รัน) ส่วน chown เปลี่ยนเจ้าของไฟล์:

chmod 644 file.txt          # เปลี่ยนสิทธิ์
chown www-data:www-data file.txt  # เปลี่ยนเจ้าของ

ทำไมตั้ง permission แล้วยังเข้าถึงไม่ได้?

ตรวจสอบสิทธิ์ของไดเรกทอรีในเส้นทางด้วย ทุกไดเรกทอรีต้องมีสิทธิ์ execute (x) สำหรับผู้ใช้นั้น

SELinux หรือ AppArmor มีผลต่อ permission ไหม?

มี ถ้าเปิด SELinux อยู่ อาจบล็อกการเข้าถึงแม้ file permission จะอนุญาต:

# ตรวจสอบ SELinux status
getenforce

# ดู audit log
sudo ausearch -m avc -ts recent

# แก้ SELinux context
sudo restorecon -Rv /var/www/html/

ปัญหา Permission Issues แก้ได้อย่างเป็นระบบ เริ่มจากเข้าใจระบบสิทธิ์ ตรวจสอบด้วย ls -la แก้ไขด้วย chmod และ chown และปฏิบัติตามหลัก Least Privilege เสมอ เลือกโครงสร้างพื้นฐานที่ปลอดภัยกับ DriteStudio

分享文章:
查看更多文章
D

DriteStudio

提供 VPS、虚拟主机与服务器托管服务的泰国数字基础设施服务商

由 Craft Intertech (Thailand) Co., Ltd. 运营