การใช้คำสั่ง chmod (Change Mode) เป็นทักษะพื้นฐานที่สำคัญมากสำหรับผู้ที่ใช้งาน Linux หรือจัดการ Web Hosting เพราะเป็นคำสั่งที่ใช้ควบคุมว่า “ใคร” สามารถ “ทำอะไร” กับไฟล์หรือโฟลเดอร์ของเราได้บ้าง
โครงสร้างสิทธิ์ (Permissions) ใน Linux
ก่อนจะใช้คำสั่ง เราต้องเข้าใจก่อนว่า Linux แบ่งกลุ่มผู้ใช้ออกเป็น 3 ระดับ
- Owner (u): เจ้าของไฟล์ (ปกติคือผู้สร้างไฟล์)
- Group (g): กลุ่มผู้ใช้ที่มีสิทธิ์ร่วมกัน
- 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) |
| 4 | r-- | อ่านได้อย่างเดียว |
| 5 | r-x | อ่านและรันได้ (4+1) |
| 6 | rw- | อ่านและเขียนได้ (4+2) |
| 7 | rwx | ทำได้ทุกอย่าง (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 อาจทำให้ผู้ไม่หวังดีสามารถอัปโหลดไฟล์อันตรายหรือแก้ไขข้อมูลในเว็บไซต์ของคุณได้โดยง่าย
อ่านเพิ่มเติม
