
ไขรหัสความปลอดภัยไฟล์ Linux: เข้าใจการอนุญาตและการเข้าถึงอย่างลึกซึ้ง
การทำงานกับระบบปฏิบัติการ Linux โดยเฉพาะในสภาพแวดล้อมที่มีผู้ใช้งานหลายคนหรือเซิร์ฟเวอร์ จำเป็นต้องเข้าใจเรื่องความปลอดภัยของไฟล์เป็นอย่างดี สิ่งนี้ช่วยให้แน่ใจว่าข้อมูลสำคัญจะถูกปกป้อง และผู้ใช้แต่ละคนสามารถเข้าถึงเฉพาะสิ่งที่ได้รับอนุญาตเท่านั้น มาดูกันว่ากลไกสำคัญเหล่านี้ทำงานอย่างไร
พื้นฐานการอนุญาตไฟล์: ใครทำอะไรได้บ้าง?
แกนหลักของการควบคุมการเข้าถึงไฟล์ใน Linux คือระบบสิทธิ์ (permissions) ซึ่งกำหนดว่าใครสามารถทำอะไรกับไฟล์หรือไดเรกทอรีได้บ้าง สิทธิ์เหล่านี้แบ่งออกเป็นสามประเภทหลักๆ ได้แก่ อ่าน (read), เขียน (write) และ เรียกใช้งาน (execute)
- อ่าน (r): ผู้ใช้สามารถดูเนื้อหาของไฟล์ หรือในกรณีของไดเรกทอรี สามารถดูรายชื่อไฟล์ภายในได้
- เขียน (w): ผู้ใช้สามารถแก้ไขหรือลบไฟล์ได้ หรือในกรณีของไดเรกทอรี สามารถสร้าง ลบ หรือเปลี่ยนชื่อไฟล์ภายในนั้นได้
- เรียกใช้งาน (x): ผู้ใช้สามารถรันไฟล์ในฐานะโปรแกรมได้ หรือในกรณีของไดเรกทอรี สามารถเข้าไปในไดเรกทอรีนั้นได้
สิทธิ์เหล่านี้จะถูกกำหนดให้กับสามกลุ่มผู้ใช้งาน ได้แก่ เจ้าของไฟล์ (user owner), กลุ่ม (group owner) และ คนอื่นๆ (others) ลองใช้คำสั่ง ls -l คุณจะเห็นรายละเอียดที่น่าสนใจเกี่ยวกับสิทธิ์เหล่านี้ปรากฏขึ้น
การเปลี่ยนแปลงสิทธิ์สามารถทำได้ง่ายๆ ด้วยคำสั่ง chmod โดยใช้ตัวเลข octal เช่น chmod 755 filename เพื่อกำหนดสิทธิ์ rwx ให้เจ้าของ, rx ให้กลุ่ม และ rx ให้คนอื่นๆ หรือใช้โหมดสัญลักษณ์ เช่น chmod u+x filename เพื่อเพิ่มสิทธิ์เรียกใช้งานให้กับเจ้าของไฟล์
เจ้าของไฟล์และกลุ่ม: ผู้ดูแลตัวจริง
นอกจากการอนุญาตแล้ว ความเป็นเจ้าของ (ownership) ก็เป็นอีกหนึ่งเสาหลักของความปลอดภัยใน Linux ทุกไฟล์และไดเรกทอรีจะมี เจ้าของผู้ใช้ (user owner) และ เจ้าของกลุ่ม (group owner) กำหนดไว้อย่างชัดเจน
เจ้าของผู้ใช้คือบัญชีผู้ใช้ที่สร้างไฟล์ขึ้นมา ซึ่งมักจะมีสิทธิ์ควบคุมไฟล์นั้นมากที่สุด ส่วนเจ้าของกลุ่มคือกลุ่มที่ไฟล์นั้นสังกัดอยู่ สมาชิกในกลุ่มนี้จะได้รับสิทธิ์ตามที่กำหนดไว้สำหรับกลุ่ม ทำให้การจัดการสิทธิ์ง่ายขึ้นสำหรับไฟล์ที่หลายคนต้องทำงานร่วมกัน
หากต้องการเปลี่ยนเจ้าของไฟล์ สามารถใช้คำสั่ง chown เพื่อเปลี่ยนเจ้าของผู้ใช้ และ chgrp เพื่อเปลี่ยนเจ้าของกลุ่ม ตัวอย่างเช่น chown user1:group1 filename จะเปลี่ยนทั้งเจ้าของผู้ใช้และกลุ่มของไฟล์
ACLs: การควบคุมที่ละเอียดอ่อนยิ่งขึ้น
แม้ว่าสิทธิ์แบบพื้นฐานจะครอบคลุมการใช้งานส่วนใหญ่ แต่บางครั้งอาจต้องการการควบคุมที่ ละเอียดอ่อน (granular) กว่านั้น นั่นคือที่มาของ ACLs (Access Control Lists)
ACLs ช่วยให้สามารถกำหนดสิทธิ์ให้กับผู้ใช้หรือกลุ่มเฉพาะเจาะจงที่อยู่นอกเหนือจากเจ้าของไฟล์ กลุ่ม หรือคนอื่นๆ ได้ ทำให้มีความยืดหยุ่นสูงในการจัดการการเข้าถึง ตัวอย่างเช่น คุณอาจต้องการให้ผู้ใช้ A มีสิทธิ์อ่านเท่านั้น แต่ผู้ใช้ B มีสิทธิ์เขียนในไฟล์เดียวกัน โดยที่ทั้งคู่ไม่ได้เป็นเจ้าของไฟล์หรืออยู่ในกลุ่มเดียวกัน
คำสั่ง getfacl ใช้สำหรับดู ACLs ที่ตั้งค่าไว้ และ setfacl ใช้สำหรับกำหนดค่า ACLs ต่างๆ ทำให้การบริหารจัดการความปลอดภัยของไฟล์ซับซ้อนน้อยลงในสถานการณ์ที่ต้องการความยืดหยุ่นสูง
Sticky Bit: ปกป้องไฟล์ในโฟลเดอร์สาธารณะ
Sticky bit เป็นคุณสมบัติพิเศษที่มักถูกมองข้าม แต่มีบทบาทสำคัญในการปกป้องไฟล์ในไดเรกทอรีที่ทุกคนเข้าถึงได้ เช่น /tmp หรือไดเรกทอรีแชร์อื่นๆ หากไดเรกทอรีมี sticky bit ตั้งค่าไว้ (จะเห็นเป็นตัว t ในส่วนของสิทธิ์สำหรับคนอื่นๆ เมื่อใช้ ls -l)
sticky bit จะป้องกันไม่ให้ผู้ใช้คนใดก็ตาม (ยกเว้นเจ้าของไดเรกทอรีหรือเจ้าของไฟล์นั้น) สามารถลบหรือเปลี่ยนชื่อไฟล์ของผู้อื่นภายในไดเรกทอรีนั้นได้ แม้ว่าผู้ใช้นั้นจะมีสิทธิ์เขียนในไดเรกทอรีก็ตาม นี่เป็นกลไกสำคัญที่ช่วยรักษาความเรียบร้อยและความปลอดภัยในพื้นที่สาธารณะ
การตั้งค่า sticky bit ทำได้ด้วยคำสั่ง chmod +t directory_name
การทำความเข้าใจกลไกเหล่านี้อย่างถ่องแท้เป็นสิ่งสำคัญสำหรับใครก็ตามที่ทำงานกับ Linux ช่วยให้สามารถจัดการระบบได้อย่างมีประสิทธิภาพและปลอดภัยยิ่งขึ้น ปกป้องข้อมูลสำคัญ และสร้างสภาพแวดล้อมที่มั่นคงสำหรับผู้ใช้งานทุกคน