linux permissions การกำหนดสิทธิ

Linux Permissions พื้นฐานการกำหนดสิทธิ

การจัดการสิทธิ์ Linux Permissions:พื้นฐานสู่นักเรียนสาย System


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

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


1. ทำความเข้าใจ “รูปแบบ” และ “การกระทำ”

ลำดับแรกที่นักเรียนต้องทำความเข้าใจคือการระบุ “กลุ่มบุคคล” ที่เราต้องการมอบหรือเพิกถอนสิทธิ์ โดยในระบบ Linux จะแบ่งออกเป็นสี่สัญลักษณ์หลัก ได้แก่ u (User/Owner) คือตัวนักเรียนเองที่เป็นเจ้าของไฟล์, g (Group) คือกลุ่มของเพื่อนนักเรียนที่ได้รับอนุญาตให้ทำงานร่วมกัน, o (Others) คือบุคคลอื่น ๆ ในระบบ และ a (All) ซึ่งหมายถึงทุกคนรวมกัน การระบุกลุ่มที่ชัดเจนเช่นนี้ช่วยให้นักเรียนสามารถวางแผนความปลอดภัยให้กับงานวิจัยหรือโปรเจกต์คอมพิวเตอร์ได้อย่างเป็นระบบ ป้องกันไม่ให้บุคคลที่ไม่เกี่ยวข้องเข้ามาแก้ไขงานสำคัญของคุณ

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

กลุ่มผู้ใช้งาน (Who)

  • User (u): คือเจ้าของไฟล์ (Owner) โดยปกติคือผู้ที่สร้างไฟล์นั้นขึ้นมา
  • Group (g): กลุ่มผู้ใช้งานที่ไฟล์นั้นสังกัดอยู่ เช่น นักเรียนในกลุ่มโปรเจกต์เดียวกัน
  • Others (o): ผู้ใช้งานคนอื่นๆ ทุกคนในระบบที่ไม่ได้เป็นเจ้าของและไม่อยู่ในกลุ่ม

สิทธิ์การกระทำ (What)

  • Read (r): สิทธิ์ในการอ่านเนื้อหาไฟล์ หรือดูรายชื่อไฟล์ในโฟลเดอร์
  • Write (w): สิทธิ์ในการแก้ไข ลบ หรือสร้างไฟล์ใหม่
  • Execute (x): สิทธิ์ในการสั่งรันไฟล์โปรแกรม หรือสิทธิ์ในการ “เข้าถึง” (cd) เข้าไปในโฟลเดอร์

2. การกำหนดสิทธิ์แบบตัวเลข (Numeric Method)

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

สิทธิ์ ค่าตัวเลข ความหมาย
Read (r) 4 อ่านข้อมูล
Write (w) 2 แก้ไข/เขียนข้อมูล
Execute (x) 1 สั่งงาน/เข้าถึง

เมื่อเราต้องการกำหนดสิทธิ์ เราจะใช้เลข 3 หลักเรียงกันตามลำดับ User | Group | Others เช่น 755 หมายถึง:

  • User: 7 (4+2+1) = ทำได้ทุกอย่าง
  • Group: 5 (4+1) = อ่านและรันได้
  • Others: 5 (4+1) = อ่านและรันได้
$ chmod 755 my_script.sh

3. การกำหนดสิทธิ์แบบตัวอักษร (Symbolic Method)

ในการก้าวเข้าสู่โลกของระบบปฏิบัติการ Linux สิ่งที่นักเรียนจะได้พบเจอเป็นลำดับต้น ๆ คือการจัดการสิทธิ์การเข้าถึงไฟล์ ซึ่งนอกเหนือจากการใช้ตัวเลข (Numeric Mode) ที่เราคุ้นเคยแล้ว ยังมีการกำหนดสิทธิ์อีกรูปแบบหนึ่งที่เรียกว่า Symbolic Mode หรือการใช้สัญลักษณ์แทนคำสั่ง วิธีนี้เปรียบเสมือนการที่เรากำลัง “สนทนา” กับระบบด้วยภาษาที่ใกล้เคียงกับภาษาคนมากที่สุด ช่วยให้นักเรียนสามารถระบุความต้องการได้อย่างแม่นยำโดยไม่ต้องผ่านการคำนวณเลขฐานแปดในใจ ซึ่งมีประโยชน์อย่างยิ่งเมื่อเราต้องการปรับเปลี่ยนสิทธิ์เพียงบางส่วนโดยที่ยังคงรักษาการตั้งค่าเดิมในส่วนอื่นไว้ได้อย่างครบถ้วน

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

การใช้เครื่องหมายในการเปลี่ยนสถานะ (Operators)

เมื่อนักเรียนระบุได้แล้วว่าสิทธิ์นั้นเป็นของใคร ขั้นตอนต่อไปคือการใช้ “ตัวดำเนินการ” หรือเครื่องหมายเพื่อกำหนดทิศทางของสิทธิ์นั้น เครื่องหมาย + (Plus) ใช้สำหรับการเพิ่มสิทธิ์เข้าไปในสถานะปัจจุบันโดยไม่กระทบสิทธิ์เดิมที่มีอยู่ เครื่องหมาย – (Minus) ใช้สำหรับการเพิกถอนสิทธิ์ที่เคยมีออกไป และเครื่องหมาย = (Equals) คือการกำหนดสิทธิ์ใหม่ให้เป็นไปตามที่ระบุไว้เท่านั้น โดยจะทำการลบสิทธิ์เดิมทั้งหมดที่ไม่ได้ระบุทิ้งไปทันที เครื่องหมายเหล่านี้คือเครื่องมือที่ให้ความยืดหยุ่นสูงมากในการปรับแต่งสภาพแวดล้อมการทำงานของนักเรียน

ยกตัวอย่างสถานการณ์ที่นักเรียนเขียนสคริปต์ส่งอาจารย์ หากคุณต้องการเพียงแค่เพิ่มความสามารถในการรันไฟล์ (Execute) ให้กับตัวเอง นักเรียนเพียงใช้เครื่องหมาย + เพื่อเติมสิทธิ์นั้นเข้าไป โดยที่สิทธิ์ในการอ่านและเขียนที่มีอยู่เดิมจะไม่หายไป ในทางกลับกัน หากนักเรียนต้องการความเด็ดขาดในการจำกัดสิทธิ์ของผู้อื่น การใช้เครื่องหมาย = จะเป็นการการันตีว่าบุคคลเหล่านั้นจะมีสิทธิ์ “เท่าที่ระบุไว้เท่านั้น” การเลือกใช้เครื่องหมายที่ถูกต้องจะช่วยให้นักเรียนสามารถควบคุมการเข้าถึงไฟล์ได้อย่างละเอียดและปลอดภัย ลดความเสี่ยงจากการเผลอเปิดช่องโหว่ให้ระบบโดยไม่ได้ตั้งใจ

โครงสร้างคำสั่งคือ: chmod [กลุ่ม][เครื่องหมาย][สิทธิ์] filename

คำสั่งตัวอย่าง กลุ่ม (Who) เครื่องหมาย สิทธิ์ (rwx) ผลลัพธ์ในมุมมองนักเรียน
chmod u+x myscript.sh เจ้าของไฟล์ (User) เพิ่ม (+) Execute (x) อนุญาตให้นักเรียนสามารถสั่งรันไฟล์สคริปต์ที่เขียนขึ้นเองได้
chmod g-w homework.txt กลุ่มเพื่อน (Group) ลบ (-) Write (w) ป้องกันไม่ให้เพื่อนสมาชิกในกลุ่มเผลอแก้ไขหรือลบเนื้อหาในไฟล์การบ้าน
chmod o=r public.log คนอื่น ๆ (Others) เท่ากับ (=) Read (r) กำหนดให้บุคคลภายนอกทำได้เพียงอ่านข้อมูลเท่านั้น โดยจะล้างสิทธิ์อื่นทิ้งทั้งหมด
chmod a+r memo.pdf ทุกคน (All) เพิ่ม (+) Read (r) ประกาศให้ทุกคนในระบบสามารถเข้าถึงและอ่านไฟล์บันทึกข้อความนี้ได้

4. ความแตกต่างที่ต้องระวัง: ไฟล์ vs โฟลเดอร์

นักเรียนมักจะสับสนว่าทำไมมีสิทธิ์ Write ในไฟล์แต่ลบไฟล์ไม่ได้? นั่นเป็นเพราะความลับของสิทธิ์ในระดับโฟลเดอร์

“การจะลบไฟล์ได้นั้น คุณไม่จำเป็นต้องมีสิทธิ์ Write ในไฟล์ตัวนั้น แต่คุณต้องมีสิทธิ์ Write ใน โฟลเดอร์ ที่ไฟล์นั้นบรรจุอยู่”

สิทธิ์ x (Execute) ในโฟลเดอร์ก็สำคัญมาก เพราะถ้าโฟลเดอร์ไม่มีสิทธิ์ x นักเรียนจะไม่สามารถใช้คำสั่ง cd เข้าไปข้างในได้เลย ถึงแม้จะมีสิทธิ์ r ก็จะทำได้แค่ดูรายชื่อไฟล์จากภายนอกเท่านั้น


สรุปคำสั่งอาจะใช้งานได้บ่อยครั้ง

เพื่อให้เห็นภาพชัดเจน เรามาดูตารางสรุปการใช้งานจริงที่นักเรียนจะได้เจอ เพราะการทำหนดสิทธิเหล่านี้เป็นพื้นฐานของการจัดการไฟล์ นักเรียนอาจจะมีความเคยชินกับการใช้งานโหมดกราฟิก แต่ในบางครั้งการใช้งานระบบปฏิบัติการ linux เราจำเป็นต้องใช้งาน shell ประกอบร่วมด้วย

คำสั่ง ความหมายเชิงปฏิบัติ
chmod 600 private.txt ฉันอ่านและแก้ได้คนเดียว คนอื่นห้ามยุ่ง
chmod 644 index.html ฉันแก้ได้ คนอื่นอ่านได้อย่างเดียว (เหมาะสำหรับทำเว็บ)
chmod 700 secret_dir/ โฟลเดอร์ส่วนตัว ห้ามใครเข้าดูหรือผ่านทางทั้งสิ้น
chmod +x run.sh ทำให้ไฟล์นี้กลายเป็นโปรแกรมที่สั่งทำงานได้

การเข้าใจเรื่อง Linux Permissions จะช่วยให้นักเรียนสามารถจัดการโปรเจกต์งานกลุ่มได้อย่างเป็นระบบ และป้องกันความผิดพลาดที่อาจเกิดขึ้นจากการเข้าถึงไฟล์โดยไม่ได้รับอนุญาต จำไว้เสมอว่า “พิจารณาให้สิทธิ์เท่าที่จำเป็น (Least Privilege)” เพื่อความปลอดภัยสูงสุดของข้อมูล องค์ความรู้เหล่านี้สามารถนำไปพัฒนาต่อยอดในสายงานระบบ linux ได้อีกมากมาย หวังว่าบทความนี้จะสร้างประโยชน์ให้ความเข้าใจไม่มากก็น้อย.. ขอบคุณครับ

เขียนและเรียบเรียงโดย : AI,วีรภัทร

Leave Comment

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *