การจัดการสิทธิ์ไฟล์ (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)
สิทธิ์ | คำอธิบาย | ค่าเลขฐานแปด |
---|---|---|
r | อ่าน (Read) | 4 |
w | เขียน (Write) | 2 |
x | รัน (Execute) | 1 |
- | ไม่มีสิทธิ์ | 0 |
วิธีคำนวณ Numeric
- แยกสิทธิ์ออกเป็น 3 กลุ่ม Owner, Group, และ Others
- สำหรับแต่ละกลุ่ม
- นำค่าของ r, w, x มารวมกันตามสิทธิ์ที่กำหนด
- ถ้าไม่มีสิทธิ์ ให้ใช้ 0
- รวมค่าของทั้ง 3 กลุ่มเข้าด้วยกันเป็นเลข 3 หลัก
ตัวอย่างการคำนวณ Numeric Mode
- ตัวอย่างสิทธิ์
- -rwxr-xr--
- แบ่งสิทธิ์
กลุ่ม | สิทธิ์ | ค่าตัวเลข |
---|---|---|
Owner | rwx | 4 + 2 + 1 = 7 |
Group | r-x | 4 + 0 + 1 = 5 |
Others | r-- | 4 + 0 + 0 = 4 |
- รวมค่าของทั้ง 3 กลุ่ม
- Numeric Mode = 754
ตัวอย่างเพิ่มเติม
สิทธิ์ | Owner | Group | Others | Numeric Mode |
---|---|---|---|---|
-rw-r--r-- | rw- | r-- | r-- | 644 |
-rwx------ | rwx | --- | --- | 700 |
-rwxr-xr-x | rwx | r-x | r-x | 755 |
-rw-rw---- | rw- | rw- | --- | 660 |
4. การเปลี่ยนเจ้าของและกลุ่ม (chown และ chgrp)
เปลี่ยนเจ้าของไฟล์
chown user example.sh
เปลี่ยนกลุ่มของไฟล์
chgrp group example.sh
เปลี่ยนทั้งเจ้าของและกลุ่ม
chown user:group example.sh
5. ความสำคัญของ Special Permissions
- SetUID (s)
- รันไฟล์ในฐานะเจ้าของไฟล์ ไม่ใช่ผู้รัน
- ใช้กับไฟล์โปรแกรม เช่น /usr/bin/passwd
chmod u+s example.sh
- SetGID (s)
- กำหนดให้ไฟล์หรือโฟลเดอร์ใหม่ในกลุ่มเดียวกัน
chmod g+s folder/
- Sticky Bit (t)
- กำหนดให้ลบไฟล์ในโฟลเดอร์ได้เฉพาะเจ้าของ
chmod +t /tmp
6. ตัวอย่างการตั้งค่าสิทธิ์ในสถานการณ์จริง
- โฟลเดอร์ Public (อ่านได้ทุกคน)
chmod 755 /var/www/html/
- ไฟล์ส่วนตัว (Owner เท่านั้นที่อ่านได้)
chmod 600 secret.txt
- โฟลเดอร์ที่แชร์ในทีม
chmod 770 shared_folder/
สรุป
การจัดการ Permission ของไฟล์ใน Linux ช่วยให้ระบบมีความปลอดภัยและจัดการได้ง่ายขึ้น การเข้าใจคำสั่งพื้นฐาน เช่น chmod, chown, และ ls -l จะช่วยให้คุณสามารถบริหารจัดการสิทธิ์ได้ถูกต้อง
