chmod

1. คำสั่ง chmod คืออะไร และหน้าที่หลัก

ในฐานะผู้เชี่ยวชาญระบบ Linux, การจัดการสิทธิ์ (Permissions) ถือเป็นหัวใจสำคัญของความปลอดภัยและความเสถียรของระบบปฏิบัติการ คำสั่ง chmod ย่อมาจาก “change mode” เป็นคำสั่งพื้นฐานที่ใช้สำหรับเปลี่ยนแปลงสิทธิ์ในการเข้าถึงไฟล์และไดเรกทอรี (File and Directory Permissions) บนระบบ Unix-like OS

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

  • User (u): เจ้าของไฟล์ (Owner)
  • Group (g): กลุ่มที่เกี่ยวข้องกับไฟล์ (Group)
  • Other (o): ผู้ใช้งานคนอื่น ๆ ที่ไม่ได้อยู่ในกลุ่มหรือไม่ใช่เจ้าของ

สิทธิ์พื้นฐานที่สามารถกำหนดได้มี 3 ประเภท คือ:

  • Read (r): สิทธิ์ในการอ่านเนื้อหา (สำหรับไฟล์) หรือดูรายการไฟล์ย่อย (สำหรับไดเรกทอรี)
  • Write (w): สิทธิ์ในการแก้ไขหรือลบไฟล์, หรือสร้าง/ลบไฟล์ย่อยในไดเรกทอรี
  • Execute (x): สิทธิ์ในการรันไฟล์ (Script/Binary) หรือการเข้าถึงเนื้อหาภายในไดเรกทอรี

2. ไวยากรณ์ (Syntax) และพารามิเตอร์สำคัญ

chmod [OPTION]... [FILE]...
  • Octal (Numeric Mode): เป็นวิธีที่แม่นยำที่สุดในการกำหนดสิทธิ์ โดยใช้ตัวเลขฐานแปด (Base 8) เพื่อแทนค่าสิทธิ์ทั้งหมด ตัวเลข 3 หลักจะถูกแบ่งเป็น User, Group, และ Other ตามลำดับ เช่น 750 หมายถึง:
    • User (7): rwx (4+2+1)
    • Group (5): r-x (4+0+1)
    • Other (0): — (0+0+0)
  • Symbolic Mode: เป็นวิธีที่ง่ายต่อการทำความเข้าใจและแก้ไขสิทธิ์ทีละส่วน โดยใช้ตัวอักษร เช่น u+x (เพิ่มสิทธิ์ Execute ให้ User), g-w (ลบสิทธิ์ Write ออกจาก Group) หรือ o=r (กำหนดให้ Other มีสิทธิ์ Read เท่านั้น)

3. ตัวอย่างการใช้งานจริง (Code Examples & Use Cases)

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

กรณีศึกษาที่ 1: การทำให้ Script สามารถรันได้ (Executable)

เมื่อคุณเขียน Bash script เสร็จแล้ว ไฟล์นั้นจะยังไม่มีสิทธิ์ในการถูกเรียกใช้งาน คุณต้องใช้คำสั่งนี้เพื่อเพิ่มสิทธิ์ Execute ให้กับเจ้าของไฟล์เท่านั้น:

chmod +x my_script.sh

กรณีศึกษาที่ 2: การตั้งค่าสิทธิ์สำหรับ Web Directory (755)

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

chmod 755 public_html

กรณีศึกษาที่ 3: การตั้งค่าไฟล์ Configuration ที่ปลอดภัย (600)

สำหรับไฟล์ที่มีข้อมูลลับสูง เช่น Private Key หรือ Config File ควรจำกัดสิทธิ์ให้เฉพาะเจ้าของเท่านั้นที่สามารถอ่านและเขียนได้ และห้ามกลุ่มหรือผู้ใช้อื่นเข้าถึงเด็ดขาด:

chmod 600 .ssh/id_rsa

4. ข้อควรระวังและ Best Practices

  • หลักการสิทธิ์น้อยที่สุด (Principle of Least Privilege – PoLP): นี่คือแนวคิดที่สำคัญที่สุดในการจัดการสิทธิ์ ห้ามให้สิทธิ์เกินความจำเป็นเด็ดขาด หากไฟล์นั้นไม่จำเป็นต้องถูกรัน ก็ไม่ควรให้สิทธิ์ x
  • ระวังการใช้ World-Writable (o+w): การตั้งค่าที่อนุญาตให้ “Other” เขียนไฟล์ได้ เป็นช่องโหว่ด้านความปลอดภัยร้ายแรง เพราะผู้ใช้งานที่ไม่รู้จักสามารถเข้ามาแก้ไขหรือลบข้อมูลสำคัญของระบบได้

ในการทำงานจริง ควรใช้การผสมผสานระหว่าง Octal และ Symbolic Mode เพื่อให้เกิดความแม่นยำสูงสุด หากคุณกำลังสร้างโครงสร้างโปรเจกต์ขนาดใหญ่ การกำหนดสิทธิ์เริ่มต้น (Default Permissions) ด้วยคำสั่ง umask ก่อนจะดีกว่าการแก้ไขทีหลัง ซึ่งช่วยลดโอกาสเกิดช่องโหว่ด้าน Permission ได้อย่างมาก

Exit mobile version