Tag Archive Read

Byphunsanit

Linux: chmod สร้างสิทธิ์ (Permissions)

การใช้คำสั่ง chmod (Change Mode) เป็นทักษะพื้นฐานที่สำคัญมากสำหรับผู้ที่ใช้งาน Linux หรือจัดการ Web Hosting เพราะเป็นคำสั่งที่ใช้ควบคุมว่า “ใคร” สามารถ “ทำอะไร” กับไฟล์หรือโฟลเดอร์ของเราได้บ้าง


โครงสร้างสิทธิ์ (Permissions) ใน Linux

ก่อนจะใช้คำสั่ง เราต้องเข้าใจก่อนว่า Linux แบ่งกลุ่มผู้ใช้ออกเป็น 3 ระดับ

  1. Owner (u): เจ้าของไฟล์ (ปกติคือผู้สร้างไฟล์)
  2. Group (g): กลุ่มผู้ใช้ที่มีสิทธิ์ร่วมกัน
  3. Others (o): บุคคลอื่น ๆ ทั่วไปในระบบ

และแต่ละกลุ่มจะมีสิทธิ์ทำได้ 4 อย่าง

  • Read (r): อ่านไฟล์ หรือดูรายชื่อในโฟลเดอร์ (มีค่า = 4)
  • Write (w): แก้ไขไฟล์ หรือสร้าง/ลบไฟล์ในโฟลเดอร์ (มีค่า = 2)
  • Execute (x): รันไฟล์โปรแกรม หรือเข้าไปในโฟลเดอร์ (มีค่า = 1)
  • Zero permissions (-): ไม่มีสิทธิ์ (มีค่า = 0)

วิธีการใช้งาน chmod

เราสามารถเปลี่ยนสิทธิ์ได้ 2 รูปแบบหลักๆ คือ

แบบตัวเลข (Numeric Mode)

เป็นวิธีที่นิยมที่สุด เพราะสั้นและรวดเร็ว โดยใช้เลข 3 หลักแทน Owner, Group และ Others ตามลำดับ 

  • ตัวอย่าง: chmod 755 myfile.txt
    • 7 (4+2+1) = เจ้าของทำได้ทุกอย่าง (rwx)
    • 5 (4+0+1) = กลุ่มอ่านและรันได้ (r-x)
    • 5 (4+0+1) = คนอื่นอ่านและรันได้ (r-x)

แบบตัวอักษร (Symbolic Mode)

เหมาะสำหรับการเพิ่มหรือลดสิทธิ์บางอย่างโดยไม่ต้องคำนวณเลขใหม่ 

  • chmod +x script.sh : เพิ่มสิทธิ์การรัน (Execute) ให้ทุกคน
  • chmod u+w file.txt : เพิ่มสิทธิ์การเขียนให้เจ้าของ (User)
  • chmod g-r file.txt : ยกเลิกสิทธิ์การอ่านของกลุ่ม (Group)

ระดับคะแนน

แบบตัวเลข (Numeric Mode)แบบตัวอักษร (Symbolic Mode)คำอธิบาย
0---ไม่มีสิทธิ์ใดๆ
1--x
รันได้อย่างเดียว
2-w-
เขียนได้อย่างเดียว
3-wxเขียนและรันได้ (2+1)
4r--อ่านได้อย่างเดียว
5r-xอ่านและรันได้ (4+1)
6rw-อ่านและเขียนได้ (4+2)
7rwxทำได้ทุกอย่าง (4+2+1)

เกร็ดเล็กน้อย:

  • แม้เราจะตั้งเป็น 000 จนตัวเองเปิดไม่ได้ แต่ในฐานะเจ้าของไฟล์ (หรือ Root) เราสามารถใช้คำสั่ง chmod เพื่อเรียกคืนสิทธิ์กลับมาได้เสมอครับ!
  • ในภาษาคอมพิวเตอร์ เราจะเรียกว่า “การคำนวณสิทธิ์แบบฐานแปด (Octal Mode)” ครับ
  • “ให้สิทธิ์เท่าที่จำเป็น (Least Privilege)” อันไหนไม่ใช้ให้ตั้งเป็น 0 ไว้ก่อนครับ

ค่า CHMOD ยอดนิยมที่ควรรู้

  • 644: มาตรฐานสำหรับไฟล์ทั่วไป (เจ้าของแก้ไขได้ คนอื่นอ่านได้อย่างเดียว)
  • 755: มาตรฐานสำหรับโฟลเดอร์ หรือไฟล์สคริปต์ที่ต้องสั่งรัน (ทุกคนเข้าถึงได้แต่แก้ไขไม่ได้)
  • 400: สิทธิ์อ่านเฉพาะเจ้าของเท่านั้น (มักใช้กับไฟล์สำคัญ เช่น Private Key)
  • 777: (อันตราย!) ทุกคนทำได้ทุกอย่าง ไม่ควรใช้หากไม่จำเป็นจริงๆ เพราะเสี่ยงต่อการโดนเจาะระบบ

เทคนิคเพิ่มเติม

เปลี่ยนทั้งโฟลเดอร์: หากต้องการเปลี่ยนสิทธิ์ให้ทุกไฟล์และโฟลเดอร์ย่อยข้างในพร้อมกัน ให้ใช้ตัวเลือก -R (Recursive)
chmod -R 755 my_folder

ตรวจสอบสิทธิ์ปัจจุบัน: ใช้คำสั่งเพื่อดูว่าไฟล์ต่างๆ มีสิทธิ์เป็นอย่างไรในขณะนั้น
ls -l

ข้อควรระวัง: การตั้งค่า chmod 777 ทิ้งไว้ใน Web Server อาจทำให้ผู้ไม่หวังดีสามารถอัปโหลดไฟล์อันตรายหรือแก้ไขข้อมูลในเว็บไซต์ของคุณได้โดยง่าย


อ่านเพิ่มเติม