การจัดการสิทธิ์ไฟล์ (File Permission) ใน Linux


Linux มีระบบจัดการสิทธิ์ (Permission) ที่มีประสิทธิภาพ เพื่อควบคุมการเข้าถึงไฟล์และโฟลเดอร์ ระบบนี้ช่วยป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตและเสริมความปลอดภัยให้กับระบบ

1. พื้นฐานของ Linux File Permission

Linux ใช้ระบบสิทธิ์ 3 ระดับ คือ

  • Owner (ผู้เป็นเจ้าของ) คนที่สร้างไฟล์หรือโฟลเดอร์
  • Group (กลุ่ม) ผู้ใช้ที่อยู่ในกลุ่มเดียวกัน
  • Others (อื่น ๆ) ผู้ใช้ที่ไม่ได้เป็นทั้งเจ้าของหรืออยู่ในกลุ่ม

สิทธิ์แบ่งเป็น 3 ประเภท

  • Read (r) อ่านไฟล์/ดูรายชื่อไฟล์ในโฟลเดอร์
  • Write (w) แก้ไขไฟล์/เพิ่มหรือลบไฟล์ในโฟลเดอร์
  • Execute (x) รันไฟล์ที่เป็นสคริปต์หรือโปรแกรม/เข้าโฟลเดอร์

2. การดูสิทธิ์ของไฟล์หรือโฟลเดอร์

ใช้คำสั่ง ls -l เพื่อดูรายละเอียดไฟล์

ตัวอย่างผลลัพธ์

-rwxr-xr--  1 user group  2048 Jan  5  example.sh

อธิบาย -rwxr-xr--

  • - ไฟล์ธรรมดา (หากเป็นโฟลเดอร์จะเป็น d)
  • rwx สิทธิ์ของ Owner (อ่าน, เขียน, รัน)
  • r-x สิทธิ์ของ Group (อ่าน, รัน)
  • r-- สิทธิ์ของ Others (อ่านเท่านั้น)

3. การเปลี่ยนสิทธิ์ของไฟล์ (chmod)

การกำหนดด้วยตัวอักษร

  • เพิ่มสิทธิ์
chmod u+x example.sh  # เพิ่มสิทธิ์รันให้ Owner
chmod g+w example.txt  # เพิ่มสิทธิ์เขียนให้ Group
  • ลบสิทธิ์
chmod o-r example.txt  # ลบสิทธิ์อ่านของ Others

การกำหนดด้วยเลขฐาน 8 (Octal) หรือ แบบ Numeric

เลข 3 หลักแทนสิทธิ์ (r=4, w=2, x=1)

  • 7 (rwx) มีสิทธิ์ทั้งหมด
  • 6 (rw-) อ่านและเขียน
  • 5 (r-x) อ่านและรัน
  • 4 (r--) อ่านอย่างเดียว

ตัวอย่างการใช้งาน

chmod 755 example.sh  # Owner=เต็มสิทธิ์, Group=อ่าน+รัน, Others=อ่าน+รัน
chmod 644 example.txt  # Owner=อ่าน+เขียน, Group=อ่าน, Others=อ่าน

การคำนวณแบบ Numeric สำหรับสิทธิ์ของไฟล์ใน Linux

Numeric Mode คือการใช้ตัวเลขฐานแปด (Octal) เพื่อแทนสิทธิ์ของไฟล์ใน Linux ซึ่งประกอบด้วย 3 ระดับคือ Owner, Group, และ Others โดยแต่ละระดับประกอบด้วยสิทธิ์ 3 ประเภท Read (r), Write (w), และ Execute (x)

ตารางสิทธิ์ของไฟล์ใน Linux
สิทธิ์คำอธิบายค่าเลขฐานแปด
rอ่าน (Read)4
wเขียน (Write)2
xรัน (Execute)1
-ไม่มีสิทธิ์0

วิธีคำนวณ Numeric

  1. แยกสิทธิ์ออกเป็น 3 กลุ่ม Owner, Group, และ Others
  2. สำหรับแต่ละกลุ่ม
    • นำค่าของ r, w, x มารวมกันตามสิทธิ์ที่กำหนด
    • ถ้าไม่มีสิทธิ์ ให้ใช้ 0
  3. รวมค่าของทั้ง 3 กลุ่มเข้าด้วยกันเป็นเลข 3 หลัก

ตัวอย่างการคำนวณ Numeric Mode

  1. ตัวอย่างสิทธิ์
    • -rwxr-xr--
  2. แบ่งสิทธิ์
ตัวอย่างการคำนวณสิทธิ์ของไฟล์ใน Linux
กลุ่มสิทธิ์ค่าตัวเลข
Ownerrwx4 + 2 + 1 = 7
Groupr-x4 + 0 + 1 = 5
Othersr--4 + 0 + 0 = 4
  1. รวมค่าของทั้ง 3 กลุ่ม
    • Numeric Mode = 754

ตัวอย่างเพิ่มเติม

ตัวอย่างการคำนวณสิทธิ์ของไฟล์ใน Linux
สิทธิ์OwnerGroupOthersNumeric Mode
-rw-r--r--rw-r--r--644
-rwx------rwx------700
-rwxr-xr-xrwxr-xr-x755
-rw-rw----rw-rw----660

4. การเปลี่ยนเจ้าของและกลุ่ม (chown และ chgrp)

เปลี่ยนเจ้าของไฟล์

chown user example.sh

เปลี่ยนกลุ่มของไฟล์

chgrp group example.sh

เปลี่ยนทั้งเจ้าของและกลุ่ม

chown user:group example.sh

5. ความสำคัญของ Special Permissions

  1. SetUID (s)
    • รันไฟล์ในฐานะเจ้าของไฟล์ ไม่ใช่ผู้รัน
    • ใช้กับไฟล์โปรแกรม เช่น /usr/bin/passwd
chmod u+s example.sh
  1. SetGID (s)
    • กำหนดให้ไฟล์หรือโฟลเดอร์ใหม่ในกลุ่มเดียวกัน
chmod g+s folder/
  1. Sticky Bit (t)
    • กำหนดให้ลบไฟล์ในโฟลเดอร์ได้เฉพาะเจ้าของ
chmod +t /tmp

6. ตัวอย่างการตั้งค่าสิทธิ์ในสถานการณ์จริง

  1. โฟลเดอร์ Public (อ่านได้ทุกคน)
chmod 755 /var/www/html/
  1. ไฟล์ส่วนตัว (Owner เท่านั้นที่อ่านได้)
chmod 600 secret.txt
  1. โฟลเดอร์ที่แชร์ในทีม
chmod 770 shared_folder/

สรุป

การจัดการ Permission ของไฟล์ใน Linux ช่วยให้ระบบมีความปลอดภัยและจัดการได้ง่ายขึ้น การเข้าใจคำสั่งพื้นฐาน เช่น chmod, chown, และ ls -l จะช่วยให้คุณสามารถบริหารจัดการสิทธิ์ได้ถูกต้อง

Buy Me A Coffee