Skip to main content

การใช้ Advanced File Permissions และ Access Control ใน Linux

บทนำ

ในระบบ Linux การจัดการสิทธิ์การเข้าถึงไฟล์ (File Permissions) เป็นส่วนสำคัญที่ช่วยควบคุมว่าใครสามารถเข้าถึงไฟล์หรือไดเรกทอรีใดๆ และสามารถทำการใดๆ กับไฟล์เหล่านั้นได้บ้าง ในบทนี้เราจะศึกษาการใช้งาน Advanced File Permissions และ Access Control เพื่อเพิ่มความปลอดภัยให้กับระบบของคุณ

1. การตั้งค่าการเข้าถึงไฟล์ (File Permissions)

Linux ใช้ระบบการตั้งสิทธิ์ไฟล์แบบ 3 หมวดหมู่หลัก คือ User (U), Group (G) และ Others (O) สำหรับการเข้าถึงไฟล์และไดเรกทอรี

1.1 การอ่าน (r), เขียน (w), และการดำเนินการ (x)

สิทธิ์ที่สามารถตั้งค่าได้สำหรับไฟล์และไดเรกทอรีมีดังนี้:

  • r (read): อ่านไฟล์หรือไดเรกทอรี
  • w (write): เขียนไฟล์หรือเปลี่ยนแปลงเนื้อหาในไดเรกทอรี
  • x (execute): ดำเนินการไฟล์ (สำหรับไฟล์โปรแกรม) หรือเข้าไปในไดเรกทอรี

ตัวอย่างของการตั้งค่า:

chmod u+x file.txt

คำสั่งนี้จะเพิ่มสิทธิ์การดำเนินการ (x) ให้กับผู้ใช้ (u) สำหรับไฟล์ file.txt

1.2 การใช้เลขฐานแปด (Octal Representation)

การตั้งค่าค่าการเข้าถึงไฟล์สามารถทำได้โดยใช้ระบบเลขฐานแป้ (octal) ซึ่งจะใช้ตัวเลข 3 ตัวสำหรับแต่ละหมวดหมู่ (User, Group, Others) ดังนี้:

  • 0: ไม่มีสิทธิ์
  • 1: สิทธิ์การดำเนินการ (x)
  • 2: สิทธิ์การเขียน (w)
  • 3: สิทธิ์การเขียนและดำเนินการ (wx)
  • 4: สิทธิ์การอ่าน (r)
  • 5: สิทธิ์การอ่านและดำเนินการ (rx)
  • 6: สิทธิ์การอ่านและเขียน (rw)
  • 7: สิทธิ์การอ่าน, เขียน และดำเนินการ (rwx)

ตัวอย่างการตั้งค่า:

chmod 755 file.txt

คำสั่งนี้จะตั้งค่าการเข้าถึงไฟล์ file.txt เป็น:

  • ผู้ใช้ (User): อ่าน, เขียน, และดำเนินการ (rwx)
  • กลุ่ม (Group): อ่านและดำเนินการ (rx)
  • อื่นๆ (Others): อ่านและดำเนินการ (rx)

2. การใช้ Access Control Lists (ACLs)

ACL (Access Control Lists) ช่วยให้สามารถตั้งค่าการเข้าถึงไฟล์หรือไดเรกทอรีได้ยืดหยุ่นมากขึ้นกว่าระบบสิทธิ์พื้นฐาน โดยการใช้ ACL คุณสามารถกำหนดสิทธิ์การเข้าถึงได้โดยละเอียดมากขึ้น เช่น การกำหนดสิทธิ์การเข้าถึงสำหรับผู้ใช้หรือกลุ่มที่ไม่ใช่เจ้าของไฟล์

2.1 การตรวจสอบ ACL ของไฟล์

การดู ACL ของไฟล์สามารถทำได้โดยใช้คำสั่ง getfacl:

getfacl file.txt

2.2 การตั้งค่า ACL สำหรับไฟล์

การตั้งค่า ACL ใช้คำสั่ง setfacl โดยสามารถกำหนดสิทธิ์ของผู้ใช้หรือกลุ่มที่ต้องการได้

  • ตั้งค่า ACL สำหรับผู้ใช้:
setfacl -m u:username:rwx file.txt

คำสั่งนี้จะให้ผู้ใช้ username มีสิทธิ์การอ่าน, เขียน, และดำเนินการ (rwx) สำหรับไฟล์ file.txt

  • ตั้งค่า ACL สำหรับกลุ่ม:
setfacl -m g:groupname:rx file.txt

คำสั่งนี้จะให้กลุ่ม groupname มีสิทธิ์การอ่านและดำเนินการ (rx) สำหรับไฟล์ file.txt

2.3 การลบ ACL

การลบ ACL ที่ตั้งไว้สามารถทำได้โดยใช้คำสั่ง setfacl -x:

setfacl -x u:username file.txt

คำสั่งนี้จะลบ ACL ของผู้ใช้ username สำหรับไฟล์ file.txt

3. การใช้ Default ACLs

การตั้งค่า Default ACLs จะช่วยให้สิทธิ์การเข้าถึงจะถูกกำหนดโดยอัตโนมัติสำหรับไฟล์ใหม่ที่ถูกสร้างในไดเรกทอรี

3.1 การตั้งค่า Default ACL

สามารถตั้งค่า Default ACL สำหรับไดเรกทอรีได้ดังนี้:

setfacl -d -m u:username:rwx directory/

คำสั่งนี้จะตั้งค่า Default ACL สำหรับไดเรกทอรี directory/ โดยผู้ใช้ username จะมีสิทธิ์ rwx ในทุกไฟล์ใหม่ที่ถูกสร้างในไดเรกทอรีนี้

4. การจัดการกับ SUID, SGID และ Sticky Bits

4.1 SUID (Set User ID)

SUID เป็นการตั้งค่าพิเศษที่ให้โปรแกรมทำงานโดยมีสิทธิ์ของเจ้าของไฟล์ (user) แม้ว่าผู้ใช้ที่ทำการเรียกโปรแกรมจะไม่มีสิทธิ์นั้น

  • การตั้งค่า SUID:
chmod u+s file.txt

4.2 SGID (Set Group ID)

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

  • การตั้งค่า SGID:
chmod g+s file.txt

4.3 Sticky Bit

Sticky bit ใช้สำหรับไดเรกทอรี ซึ่งช่วยให้เฉพาะเจ้าของไฟล์สามารถลบไฟล์ในไดเรกทอรีนั้นได้ แม้ว่าผู้ใช้อื่นจะสามารถเขียนไฟล์ในไดเรกทอรีได้

  • การตั้งค่า Sticky Bit:
chmod +t directory/

5. สรุป

การจัดการสิทธิ์การเข้าถึงไฟล์และการใช้งาน ACLs ใน Linux เป็นเครื่องมือที่ทรงพลังในการเพิ่มความปลอดภัยและควบคุมการเข้าถึงไฟล์และไดเรกทอรีต่างๆ โดยคุณสามารถใช้คำสั่ง chmod สำหรับการตั้งค่าการเข้าถึงทั่วไป และ setfacl สำหรับการตั้งค่า ACLs เพิ่มเติม เพื่อให้การจัดการสิทธิ์ของผู้ใช้และกลุ่มมีความยืดหยุ่นและเหมาะสมกับความต้องการของระบบ