การดู : 0

12/04/2026 18:19น.

EP.12.1 Go กับ File Permissions - จัดการสิทธิ์เข้าถึงไฟล์ง่ายๆ!

EP.12.1 Go กับ File Permissions - จัดการสิทธิ์เข้าถึงไฟล์ง่ายๆ!

#การเขียนโปรแกรม

#โปรแกรมเมอร์

#สิทธิ์การเข้าถึงไฟล์

#File Permissions

#Go

Go กับ File Permissions - จัดการสิทธิ์เข้าถึงไฟล์ง่ายๆ!

เคยสงสัยไหมว่า Permission ของไฟล์เช่น 0644 หรือ 0755 หมายถึงอะไร? วันนี้เราจะมาเจาะลึกเรื่องนี้กัน

 

File Permissions คืออะไร?
File Permissions หมายถึงสิทธิ์ที่บอกว่าใครสามารถเข้าถึงหรือใช้งานไฟล์ได้บ้าง เช่น
🦿ใครสามารถ อ่าน ข้อมูลในไฟล์ได้
🦿ใครสามารถ แก้ไข หรือ เขียน ข้อมูลลงในไฟล์ได้
🦿ใครสามารถ รัน ไฟล์นี้ได้ (เช่นในกรณีที่ไฟล์เป็นโปรแกรม)
ในระบบ Unix/Linux และ Go เราใช้ตัวเลขบอกว่าใครสามารถทำอะไรได้บ้าง เช่น 0644 หรือ 0755

 

โครงสร้างของตัวเลข File Permissions
ตัวเลขสิทธิ์การเข้าถึงไฟล์ใน Go ใช้ 3 หลักหลัก แต่ละหลักแยกออกเป็นกลุ่มต่างๆ ดังนี้:
1.Owner (เจ้าของไฟล์) – คนที่สร้างไฟล์นี้
2.Group (กลุ่มของเจ้าของไฟล์) – คนในกลุ่มเดียวกับเจ้าของ
3.Others (คนอื่นๆ) – คนที่ไม่ได้เป็นเจ้าของและไม่ได้อยู่ในกลุ่มเดียวกัน

 

ตัวเลขแต่ละหลักหมายถึงอะไร?
ในการกำหนดสิทธิ์ เราใช้เลข 4, 2 และ 1 บอกสิทธิ์:
🦿4 หมายถึง Read หรือ อ่านได้
🦿2 หมายถึง Write หรือ เขียน/แก้ไขได้
🦿1 หมายถึง Execute หรือ รันได้ (สำหรับไฟล์โปรแกรม)
การรวมตัวเลขจะบอกว่าสามารถทำอะไรได้บ้าง เช่น:
🦿7 = 4 + 2 + 1 = อ่าน เขียน และรันได้ (rwx)
🦿6 = 4 + 2 = อ่านและเขียนได้ แต่รันไม่ได้ (rw-)
🦿4 = อ่านได้อย่างเดียว (r--)

 

ตัวอย่างการใช้งานง่ายๆ ของตัวเลข Permissions
🦿0644: เจ้าของไฟล์ (Owner) อ่านและแก้ไขได้ ส่วนกลุ่ม (Group) และคนอื่นๆ (Others) อ่านได้อย่างเดียว
🦿0755: เจ้าของไฟล์ (Owner) อ่าน แก้ไข และรันได้ ส่วนกลุ่มและคนอื่นๆ อ่านและรันได้ แต่แก้ไขไม่ได้
🦿0700: เจ้าของไฟล์ (Owner) อ่าน แก้ไข และรันได้ ส่วนกลุ่มและคนอื่นๆ ไม่สามารถเข้าถึงไฟล์นี้ได้

 

การตั้งค่า Permission ใน Go
ลองใช้คำสั่ง ioutil.WriteFile() เพื่อกำหนดค่า Permission เมื่อสร้างไฟล์
ในตัวอย่างนี้:0644 หมายถึง เจ้าของไฟล์เขียนและอ่านได้ ส่วนคนอื่นๆ อ่านได้อย่างเดียว

package main

import (
    "io/ioutil"
    "log"
)

func main() {
    content := []byte("Hello, Permissions!")
    err := ioutil.WriteFile("example.txt", content, 0644) // อ่านได้ทุกคน แก้ไขได้เฉพาะเจ้าของ
    if err != nil {
        log.Fatal(err)
    }
}

 

สรุป
สิทธิ์ 4 หมายถึง อ่านได้
สิทธิ์ 2 หมายถึง เขียนได้
สิทธิ์ 1 หมายถึง รันได้ (สำหรับไฟล์โปรแกรม)
ตัวเลข 3 หลัก (เช่น 644 หรือ 755) จะแยกสิทธิ์ออกเป็น 3 กลุ่ม คือ เจ้าของ กลุ่ม และคนอื่นๆ

 

หากอยากลองทดสอบให้ลองตั้งค่าไฟล์ด้วย Permission 0755 แล้วลองให้ทดสอบดูว่าสามารถเปิดไฟล์ได้หรือไม่ จากนั้นลองตั้งค่าเป็น 0700 และทดสอบอีกครั้งเพื่อดูความแตกต่าง!