ข้ามไปเนื้อหาหลัก

เลิกใช้ chmod 777 บน Linux: คู่มือใช้งาน POSIX ACLs

วิธีแก้ปัญหาให้ผู้ใช้เฉพาะรายเขียนไฟล์ได้บน Linux โดยไม่ต้องใช้สิทธิ์ 777 ที่มีความเสี่ยง พร้อมทำความเข้าใจการทำงานของ Mask และคำสั่ง setfacl

เรียบเรียงโดย AI
Inewgen
04 Nov 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
เลิกใช้ chmod 777 บน Linux: คู่มือใช้งาน POSIX ACLs

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • การใช้คำสั่ง chmod 777 เพื่อเปิดสิทธิ์ให้ผู้ใช้รายเดียวเขียนไฟล์สร้างความเสี่ยงด้านความปลอดภัยอย่างมาก
  • การเพิ่มผู้ใช้เข้ากลุ่มหลักมีข้อเสียเรื่องสิทธิ์ลามไปทั่วโฮสต์และผลลัพธ์ที่อาจไม่ทันที
  • POSIX ACLs อนุญาตให้กำหนดสิทธิ์เจาะจงรายยูสเซอร์หรือกลุ่มได้โดยไม่ต้องเปลี่ยนเจ้าของไฟล์
  • คำสั่ง setfacl และเครื่องมือตรวจสอบช่วยให้จัดการสิทธิ์ซับซ้อนได้อย่างปลอดภัย

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

POSIX ACLs (Access Control Lists) ถูกออกแบบมาเพื่อแก้ปัญหานี้โดยเฉพาะ โดยช่วยให้สามารถกำหนดสิทธิ์เฉพาะเจาะจงให้กับผู้ใช้หรือกลุ่มที่ต้องการได้ทันทีโดยไม่ต้องเปลี่ยนความเป็นเจ้าของไฟล์ ระบบ ACLs นี้ได้รับการรองรับจากระบบไฟล์หลักบน Linux ทุกตัว ทว่าจุดสำคัญที่มักทำให้ผู้ดูแลระบบเข้าใจผิดบ่อยครั้งคือเรื่องของ Mask ซึ่งจะแสดงผลลัพธ์แทนที่สิทธิ์กลุ่มในคำสั่ง ls -l ทั่วไป

linux server administration terminal code

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ในระบบสิทธิ์แบบดั้งเดิมของ Unix จะแบ่งออกเป็นสามกลุ่มหลักคือ เจ้าของไฟล์ (owner) กลุ่มเจ้าของ (owning group) และบุคคลอื่น (everyone else) ซึ่งแต่ละกลุ่มจะมีช่องสิทธิ์เฉพาะตัว หากมีบุคคลที่สี่ต้องการเข้าถึงจำเป็นต้องนำช่องสิทธิ์เดิมมาใช้ซ้ำ แต่สำหรับ ACLs จะเพิ่มรายการแบบกำหนดชื่อเข้าไปแนบกับวัตถุนั้นโดยตรง ทำให้รูปแบบสิทธิ์มีความยืดหยุ่นสูงขึ้นโดยยังคงสิทธิ์ดั้งเดิมไว้ครบถ้วน

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

การทำความเข้าใจสิทธิ์ POSIX ACL บน Linux มีความสำคัญมากสำหรับผู้ดูแลระบบและวิศวกร DevOps เนื่องจากข้อผิดพลาดจากการใช้สิทธิ์หลวมเกินไป เช่น chmod 777 เป็นช่องโหว่ด้านความปลอดภัยอันดับต้นๆ การใช้ ACLs ช่วยจำกัดวงการเข้าถึงให้แคบลงตามหลักการ Least Privilege แต่ต้องระวังเรื่องการทับซ้อนกับสิทธิ์กลุ่มและ Mask ที่มักถูกรีเซ็ตโดยเครื่องมือจัดการสิทธิ์อัตโนมัติ

สำหรับการเริ่มต้นใช้งาน จำเป็นต้องติดตั้งแพ็กเกจเครื่องมือผ่านคำสั่งระบบ เช่น sudo apt install acl บน Debian หรือ Ubuntu และ sudo dnf install acl บน Fedora หรือ RHEL จากนั้นสร้างไดเรกทอรีและกำหนดค่าเริ่มต้นด้วยคำสั่งกรุ๊ปและสิทธิ์ setgid เพื่อให้ไฟล์ใหม่ที่สร้างขึ้นสืบทอดกลุ่มที่ถูกต้องโดยอัตโนมัติ

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

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้