- 1 1. บทนำ
- 2 2. chmod คืออะไร?【ความเข้าใจพื้นฐาน】
- 3 3. วิเคราะห์ความหมายของ -rw-r–r–
- 4 4. วิธีตั้งค่า -rw-r–r– ด้วย chmod【ภาคปฏิบัติ】
- 5 5. วิธีตรวจสอบ Permission ด้วยคำสั่ง ls -l
- 6 6. วิธีตรวจสอบและเปลี่ยน Permission ด้วย GUI (เหมาะสำหรับมือใหม่)
- 7 7. ข้อควรระวังและการแก้ปัญหาเกี่ยวกับการตั้งค่า chmod
- 8 8. ตัวอย่างการใช้งานและสถานการณ์ที่พบบ่อย
- 9 9. คำถามที่พบบ่อย (FAQ)
- 9.1 Q1. chmod 644 กับ -rw-r--r-- ต่างกันยังไง?
- 9.2 Q2. ถ้าไฟล์ไม่มีสิทธิ์รัน จะเกิดอะไรขึ้น?
- 9.3 Q3. ตั้ง 644 กับไดเรกทอรีได้ไหม?
- 9.4 Q4. ใช้ chmod -R มีข้อควรระวังอะไร?
- 9.5 Q5. ไม่รู้สาเหตุของ “Permission denied”
- 9.6 Q6. อยากแชร์ไฟล์แต่ไม่อยากให้คนอื่นแก้ไข ต้องทำยังไง?
- 9.7 Q7. ตั้ง Permission ผิดจะแก้กลับยังไง?
- 10 10. สรุป
1. บทนำ
สิทธิ์การเข้าถึงใน Linux คืออะไร?
ในระบบ Linux และ Unix การจัดการ “สิทธิ์การเข้าถึง (Permission)” ของไฟล์และไดเรกทอรีอย่างเหมาะสมถือว่าสำคัญมาก เพราะเกี่ยวข้องกับทั้งด้านความปลอดภัยและเสถียรภาพในการใช้งานระบบ
หลายคนอาจเคยเห็นสัญลักษณ์แปลกๆ เช่น -rw-r--r--
ตอนแสดงรายการไฟล์ในเทอร์มินัล แล้วสงสัยว่า “มันหมายถึงอะไร?”
ความสัมพันธ์ของ chmod กับ -rw-r–r–
สัญลักษณ์เหล่านี้คือการแสดงสิทธิ์การเข้าถึงไฟล์แบบอักษร และคำสั่ง chmod
ใช้สำหรับกำหนดหรือเปลี่ยนแปลงสิทธิ์นี้ กล่าวคือ เมื่อใช้ chmod
กำหนดสิทธิ์ให้ไฟล์ ก็จะแสดงเป็น -rw-r--r--
เป็นต้น
วัตถุประสงค์และกลุ่มเป้าหมายของบทความนี้
บทความนี้จะอธิบายความหมายของ -rw-r--r--
อย่างละเอียด รวมถึงวิธีการตั้งค่า/เปลี่ยนแปลงด้วย chmod
ให้เข้าใจง่ายสำหรับมือใหม่ พร้อมตัวอย่างจริงและข้อควรระวังด้านความปลอดภัย
เหมาะสำหรับผู้ที่เพิ่งเริ่มใช้ Linux จนถึงผู้ใช้ระดับกลางที่คุ้นเคยกับเทอร์มินัล เพื่อให้มีความรู้ที่นำไปใช้ได้จริงในการทำงาน
2. chmod คืออะไร?【ความเข้าใจพื้นฐาน】
หน้าที่ของคำสั่ง chmod
chmod
(อ่านว่า ชโมด หรือเชนจ์โหมด) ย่อมาจาก “change mode” คือคำสั่งสำหรับเปลี่ยนแปลงสิทธิ์การเข้าถึง (Permission) ของไฟล์และไดเรกทอรีในระบบ Linux/Unix
โดยสามารถควบคุมได้ว่า “ใครจะสามารถทำอะไรกับไฟล์ได้บ้าง (อ่าน/เขียน/รัน)” อย่างยืดหยุ่น
การตั้งค่า Permission ที่ถูกต้องสำคัญต่อ ความปลอดภัย และช่วยป้องกันปัญหาเรื่องการแชร์หรือรันไฟล์ด้วย
ไวยากรณ์พื้นฐานของ chmod
chmod [ตัวเลือก] [สิทธิ์] ชื่อไฟล์
ตัวอย่างเช่น:
chmod 644 sample.txt
คำสั่งนี้จะเปลี่ยน Permission ของ sample.txt
เป็นดังนี้:
-rw-r--r-- 1 user group 1234 Apr 13 20:00 sample.txt
- เจ้าของ (user): อ่าน/เขียนได้ (rw-)
- กลุ่ม (group): อ่านได้เท่านั้น (r–)
- อื่นๆ (others): อ่านได้เท่านั้น (r–)
2 วิธีการกำหนดสิทธิ์: แบบตัวเลขและแบบสัญลักษณ์
ใน chmod
สามารถระบุสิทธิ์ได้ 2 วิธีดังนี้
- แบบตัวเลข (Numeric mode)
- เช่น
chmod 755 script.sh
- ระบุสิทธิ์ด้วยตัวเลขสำหรับแต่ละประเภทผู้ใช้
- แบบสัญลักษณ์ (Symbolic mode)
- เช่น
chmod u=rw,g=r,o=r file.txt
- u (user), g (group), o (others) กับ r (อ่าน), w (เขียน), x (รัน) ระบุด้วยสัญลักษณ์
ทั้งสองแบบให้ผลลัพธ์เหมือนกัน แบบตัวเลขเร็วกว่า แบบสัญลักษณ์ยืดหยุ่นกว่า เลือกตามความเหมาะสม
ข้อควรระวังเรื่องความแตกต่างระหว่าง chmod กับ chown
หลายคนมักสับสนระหว่าง chmod
กับ chown
chmod
: เปลี่ยนสิทธิ์การเข้าถึง (Permission)chown
: เปลี่ยน “เจ้าของ” หรือ “กลุ่ม” ของไฟล์/ไดเรกทอรี
เป้าหมายแตกต่างกัน ต้องเข้าใจหน้าที่แต่ละคำสั่งให้ชัดเจน
3. วิเคราะห์ความหมายของ -rw-r–r–
โครงสร้างของสัญลักษณ์ Permission
เมื่อรันคำสั่ง ls -l
ใน Linux จะเห็นข้อมูลไฟล์ในรูปแบบนี้:
-rw-r--r-- 1 user group 1234 Apr 13 2025 sample.txt
ส่วนที่อยู่ด้านซ้ายสุด -rw-r--r--
คือ Permission (สิทธิ์การเข้าถึง) ของไฟล์ เข้าใจส่วนนี้ จะช่วยให้รู้ว่าใครสามารถทำอะไรกับไฟล์ได้บ้าง
อธิบายรายละเอียดแต่ละส่วน
① ตัวอักษรตัวแรก: ประเภทของไฟล์
สัญลักษณ์ | ความหมาย |
---|---|
- | ไฟล์ทั่วไป |
d | ไดเรกทอรี |
l | ลิงก์เชิงสัญลักษณ์ (Symbolic link) |
b | บล็อกอุปกรณ์ (Block device) |
c | แคแรคเตอร์อุปกรณ์ (Character device) |
กรณี -rw-r--r--
ตัวแรก -
หมายถึง “ไฟล์ทั่วไป”
② อักษรที่ 2-10: สิทธิ์การเข้าถึง (3 ตัว × 3 ชุด)
- เจ้าของ (user) →
rw-
→ อ่าน (r) และเขียน (w) ได้ แต่รัน (x) ไม่ได้ - กลุ่ม (group) →
r--
→ อ่านได้อย่างเดียว เขียน/รันไม่ได้ - อื่นๆ (others) →
r--
→ อ่านได้อย่างเดียว
นั่นคือ เฉพาะเจ้าของไฟล์ที่สามารถแก้ไขได้ คนอื่นดูได้อย่างเดียว
ความสัมพันธ์กับเลข 644
ใน Linux สิทธิ์เดียวกันสามารถแสดงเป็น ตัวเลข (Octal) ได้เช่นกัน
-rw-r--r--
เท่ากับ 644
ประเภทผู้ใช้ | สัญลักษณ์ | ตัวเลข | ความหมาย |
---|---|---|---|
เจ้าของ | rw- | 6 | อ่าน+เขียน |
กลุ่ม | r-- | 4 | อ่านเท่านั้น |
อื่นๆ | r-- | 4 | อ่านเท่านั้น |
โดยคำนวณจาก:
- อ่าน (r) = 4
- เขียน (w) = 2
- รัน (x) = 1
ดังนั้น rw-
= 4+2 = 6, r--
= 4, r--
= 4 รวมเป็น 644
ทำไมถึงใช้ Permission แบบนี้?
-rw-r--r--
(644) คือ Permission ที่นิยมใช้กับไฟล์สาธารณะ เช่น HTML, CSS ในเว็บเซิร์ฟเวอร์
เหตุผล:
- เฉพาะเจ้าของที่แก้ไขได้ → ป้องกันการเปลี่ยนแปลงโดยไม่ได้ตั้งใจ
- ผู้อื่นดูได้ → เหมาะกับการเผยแพร่/แชร์ไฟล์
ใช้ให้ถูกต้องจะ รักษาความปลอดภัยและความสะดวกไปพร้อมกัน
4. วิธีตั้งค่า -rw-r–r– ด้วย chmod【ภาคปฏิบัติ】
เปลี่ยน Permission ด้วยคำสั่ง chmod
สามารถเปลี่ยนสิทธิ์การเข้าถึงของไฟล์หรือไดเรกทอรีได้อย่างอิสระด้วยคำสั่ง chmod
ตัวอย่างเช่น ถ้าต้องการให้ไฟล์อยู่ในสถานะ -rw-r--r--
ให้ตั้ง Permission เป็น “644”
วิธีตั้งค่าแบบตัวเลข (Numeric)
ใช้งานในรูปแบบ chmod 644 ชื่อไฟล์
chmod 644 document.txt
คำสั่งนี้จะเปลี่ยน Permission ของ document.txt
เป็นดังนี้:
-rw-r--r-- 1 user group 1234 Apr 13 20:00 document.txt
- เจ้าของ (user): อ่าน/เขียนได้ (rw-)
- กลุ่ม (group): อ่านได้เท่านั้น (r–)
- อื่นๆ (others): อ่านได้เท่านั้น (r–)
วิธีตั้งค่าแบบสัญลักษณ์ (Symbolic Mode)
หากต้องการควบคุมแบบยืดหยุ่นมากขึ้น แนะนำให้ใช้วิธีระบุแบบสัญลักษณ์
chmod u=rw,g=r,o=r document.txt
ความหมายของคำสั่ง:
u=rw
→ ให้เจ้าของไฟล์อ่าน/เขียนได้g=r
→ ให้กลุ่มอ่านได้เท่านั้นo=r
→ ให้บุคคลอื่นอ่านได้เท่านั้น
ผลลัพธ์จะเหมือนกับการใช้ตัวเลข 644 ทุกประการ
ข้อควรระวังเมื่อใช้กับไดเรกทอรี
แตกต่างจากไฟล์ธรรมดา ถ้าไดเรกทอรีไม่มีสิทธิ์ “รัน (x)” จะไม่สามารถเข้าถึงข้อมูลภายในได้
ตัวอย่างนี้อาจทำให้เกิดปัญหา:
chmod 644 my_folder
แม้จะอ่านได้ แต่ไม่สามารถ “เข้าไป” หรือดูข้างในไดเรกทอรีนั้นได้ เพราะขาดสิทธิ์ x
ตัวอย่างการตั้งค่าที่ถูกต้อง:
chmod 755 my_folder
- เจ้าของ: อ่าน เขียน รัน ได้
- กลุ่มและอื่นๆ: อ่าน รัน ได้
แบบนี้ผู้ใช้อื่นจะสามารถแสดงรายชื่อไฟล์ในไดเรกทอรีได้
เปลี่ยน Permission แบบ recursive ด้วยออปชัน -R
ถ้าต้องการเปลี่ยนสิทธิ์ไฟล์และโฟลเดอร์ย่อยทั้งหมดในครั้งเดียว ใช้ออปชัน -R
(recursive)
chmod -R 644 my_folder
จะตั้งค่า 644 ให้ไฟล์ทุกไฟล์ใน my_folder
ทั้งหมด แต่ระวัง! อาจทำให้ไดเรกทอรีเข้าไม่ได้ถ้าไม่ได้กำหนด x
5. วิธีตรวจสอบ Permission ด้วยคำสั่ง ls -l
จะตรวจสอบ Permission ของไฟล์หรือไดเรกทอรีได้อย่างไร?
หากต้องการตรวจสอบ Permission (สิทธิ์การเข้าถึง) ของไฟล์หรือไดเรกทอรีใน Linux นิยมใช้คำสั่ง ls -l
ซึ่งจะแสดงรายละเอียด เช่น Permission เจ้าของ ขนาด วันเวลาแก้ไขล่าสุด ฯลฯ
วิธีใช้งานพื้นฐาน
ls -l
จะได้ผลลัพธ์เช่น:
-rw-r--r-- 1 naoya devs 2048 Apr 13 20:00 index.html
แต่ละคอลัมน์มีความหมายดังนี้:
หัวข้อ | ความหมาย |
---|---|
-rw-r--r-- | Permission (สิทธิ์การเข้าถึง) |
1 | จำนวนฮาร์ดลิงก์ (ส่วนใหญ่เป็น 1) |
naoya | เจ้าของไฟล์ (user) |
devs | กลุ่ม (group) |
2048 | ขนาดไฟล์ (ไบต์) |
Apr 13 20:00 | วันเวลาแก้ไขล่าสุด |
index.html | ชื่อไฟล์ |
วิธีอ่านคอลัมน์ Permission
โฟกัสที่ส่วน -rw-r--r--
ซึ่งมีความหมายดังนี้:
- ตัวอักษรตัวแรก: ประเภทไฟล์
-
: ไฟล์ปกติd
: ไดเรกทอรีl
: ลิงก์เชิงสัญลักษณ์- อีก 9 ตัวที่เหลือ: สิทธิ์ 3 ชุด (เจ้าของ/กลุ่ม/อื่นๆ)
- เจ้าของ (user):
rw-
(อ่าน+เขียน) - กลุ่ม (group):
r--
(อ่านได้เท่านั้น) - อื่นๆ (others):
r--
(อ่านได้เท่านั้น)
ดังนั้น จะทราบได้ว่าไฟล์นี้ “เจ้าของเท่านั้นที่แก้ไขได้ ผู้อื่นอ่านได้อย่างเดียว”
ตรวจสอบเฉพาะไฟล์ที่ต้องการ
หากต้องการตรวจสอบ Permission เฉพาะไฟล์ ให้ระบุชื่อไฟล์ไปด้วย
ls -l index.html
เหมาะสำหรับกรณีมีไฟล์จำนวนมากในไดเรกทอรี
ตรวจสอบไดเรกทอรีด้วย
ไดเรกทอรีก็สามารถตรวจสอบ Permission ด้วย ls -l
ได้ หากต้องการดูเฉพาะตัวไดเรกทอรี ให้ใช้ -d
ร่วมด้วย
ls -ld my_folder
จะแสดงข้อมูลของ my_folder
เอง โดยไม่แสดงไฟล์ภายใน
บริหาร Permission อย่างปลอดภัย
หลังตั้งค่า Permission ด้วย chmod
ควรตรวจสอบผลด้วย ls -l
ทุกครั้ง
การตั้งค่าผิดพลาดอาจทำให้เกิดปัญหาด้านความปลอดภัยหรือใช้งานไม่ได้ตามต้องการ
ถ้าต้องการตรวจสอบไฟล์นามสกุล .sh ทั้งหมดในไดเรกทอรี สามารถใช้ pipe ได้:
ls -l | grep '.sh'
จะแสดงเฉพาะไฟล์ .sh
6. วิธีตรวจสอบและเปลี่ยน Permission ด้วย GUI (เหมาะสำหรับมือใหม่)
ทางเลือกสำหรับคนที่ไม่ถนัดใช้คำสั่ง
ใน Linux แม้การใช้งานหลักจะเน้นเทอร์มินัลและคำสั่ง แต่ผู้เริ่มต้นจำนวนมากรู้สึกว่า “หน้าจอแบบตัวหนังสือล้วนๆ ยากเกินไป” หรือ “กลัวพิมพ์ผิด”
สำหรับกรณีนี้ สามารถใช้ GUI (กราฟิกอินเทอร์เฟซ) เพื่อดูหรือเปลี่ยน Permission ได้เช่นกัน
การใช้งานบนตัวจัดการไฟล์ของ Ubuntu (Nautilus)
Ubuntu และลินุกซ์ดิสโทรอื่นๆ มักมีตัวจัดการไฟล์ “Nautilus” ติดตั้งมาให้ (คล้าย Windows Explorer)
วิธีตรวจสอบ:
- คลิกขวาที่ไฟล์หรือโฟลเดอร์ที่ต้องการ
- เลือก “Properties” (คุณสมบัติ)
- เปิดแท็บ “Permissions” (หรือ “สิทธิ์การเข้าถึง” แล้วแต่เวอร์ชัน)
สิ่งที่ทำได้ในหน้าต่างนี้:
- ดูหรือเปลี่ยนเจ้าของและกลุ่ม (บางกรณีต้องใช้สิทธิ์ผู้ดูแลระบบ)
- สลับสถานะ อ่าน/เขียน/รัน ได้อย่างสะดวก
- การเปลี่ยนจะแสดงผลทันที
GUI จะไม่ได้แสดงแบบ rw-
หรือ r--
แต่จะบอกเป็นภาษาเข้าใจง่าย เช่น “อ่านได้เท่านั้น”, “อ่านและเขียน” เหมาะกับมือใหม่
WinSCP (SFTP client สำหรับผู้ใช้ Windows)
ถ้าเชื่อมต่อจาก Windows ไปยังเซิร์ฟเวอร์ Linux สามารถใช้โปรแกรม WinSCP ซึ่งเป็น SFTP client แบบ GUI เพื่อจัดการ Permission ได้
ขั้นตอน:
- เข้าสู่เซิร์ฟเวอร์ด้วย WinSCP
- คลิกขวาที่ไฟล์ เลือก “Properties”
- ตั้ง Permission ด้วยตัวเลข (เช่น 644) หรือเลือกจากช่อง checkbox
- คลิก “OK” เพื่อบันทึก
จุดเด่น:
- ดูและเปลี่ยน Permission ได้ทั้งแบบตัวเลขและสัญลักษณ์
- เปลี่ยนสิทธิ์ทั้งโฟลเดอร์แบบ recursive ได้ผ่าน GUI
ข้อควรระวัง:
- ไฟล์ที่ต้องใช้ root อาจเปลี่ยนไม่ได้ถ้าไม่มีสิทธิ์ sudo
WinSCP is a popular free file manager for Windows supporting…

FileZilla (SFTP client ข้ามแพลตฟอร์ม)
บน Mac หรือ Linux เองก็มี FileZilla ซึ่งเป็น SFTP client แบบข้ามแพลตฟอร์ม สามารถเปลี่ยน Permission ได้คล้ายๆ กัน
ขั้นตอน:
- เชื่อมต่อไปยังเซิร์ฟเวอร์
- คลิกขวาที่ไฟล์ เลือก “File Permissions”
- ปรับสิทธิ์ด้วยตัวเลขหรือ checkbox แล้วกด OK
ข้อดีและข้อควรระวังของการใช้ GUI
ข้อดี:
- มือใหม่ใช้แล้วผิดพลาดน้อยลง
- ดูผลการเปลี่ยนได้ทันทีเป็นภาพ
- ไม่ต้องกลัวคำสั่งผิด
ข้อควรระวัง:
- บางกรณีเซิร์ฟเวอร์หรือสภาพแวดล้อมอาจไม่รองรับ GUI เต็มรูปแบบ
- สถานะบนหน้าจอกับผลลัพธ์จริงอาจไม่ตรงกัน 100% ควรตรวจสอบด้วย
ls -l
เสมอ
FileZilla - The free FTP solution for both client and server…
7. ข้อควรระวังและการแก้ปัญหาเกี่ยวกับการตั้งค่า chmod
ตั้งค่าสิทธิ์ถูกต้องแล้วแต่ใช้งานไม่ได้? สาเหตุคืออะไร
หลังใช้คำสั่ง chmod
เปลี่ยน Permission แล้วบางครั้งอาจเกิดปัญหาการทำงานไม่ตรงกับที่คาดหวัง ส่วนใหญ่เกิดจาก ตั้งค่าสิทธิ์ผิด หรือเข้าใจสิทธิ์ผิด
ในส่วนนี้จะรวม ปัญหาที่พบบ่อยในการทำงานจริงและวิธีแก้ไข
สาเหตุและวิธีแก้ Permission denied
อาการ:
bash: ./script.sh: Permission denied
สาเหตุ:
- ไฟล์ที่จะรันไม่มีสิทธิ์ “รัน (x)”
วิธีแก้:
chmod +x script.sh
หรือแบบตัวเลข:
chmod 755 script.sh
แม้จะอ่านหรือเขียนได้ แต่ถ้าไม่มี “x” จะรันไม่ได้ ต้องระวังตรงนี้
หากไดเรกทอรีไม่มีสิทธิ์ x จะเข้าถึงไม่ได้
ตั้ง chmod 644
กับไดเรกทอรี อาจทำให้ไม่สามารถดูไฟล์ข้างในได้
เหตุผล:
- สิทธิ์ “รัน (x)” สำหรับไดเรกทอรี คือ สิทธิ์ “เข้าไป” หรือ “ดูข้างใน”
ตัวอย่าง:
chmod 644 my_folder
ls my_folder
→ จะเห็นว่าเข้าไปดูไฟล์ใน my_folder ไม่ได้
วิธีแก้:
chmod 755 my_folder
ข้อควรระวังการใช้ -R (recursive)
chmod -R
ใช้งานสะดวกแต่ จะเปลี่ยนสิทธิ์ทั้งไฟล์และไดเรกทอรีเหมือนกันหมด ซึ่งอาจก่อปัญหาได้
ตัวอย่างความผิดพลาดที่พบบ่อย:
chmod -R 644 /var/www/html
→ ไดเรกทอรีขาดสิทธิ์รัน (x) เข้าถึงไม่ได้
วิธีที่ปลอดภัย:
# ไดเรกทอรีให้ 755
find /var/www/html -type d -exec chmod 755 {} ;
# ไฟล์ให้ 644
find /var/www/html -type f -exec chmod 644 {} ;
ข้อผิดพลาดเกี่ยวกับเจ้าของไฟล์และกลุ่ม
นอกจาก chmod
ต้องใส่ใจ “เจ้าของ (user)” และ “กลุ่ม (group)” ด้วย
เช่น ถ้า apache ต้องอ่านไฟล์ แต่เจ้าของเป็น user ปกติและไม่ได้ให้สิทธิ์กลุ่มหรือ others เลย เว็บอาจแสดงผลไม่ได้
วิธีแก้:
- เปลี่ยนเจ้าของไฟล์:
sudo chown www-data:www-data index.html
- ให้สิทธิ์กลุ่ม:
chmod 640 index.html
(ถ้ากลุ่มถูกต้อง)
777 อันตราย! อย่าตั้งสิทธิ์กว้างเกินไป
หลายคนแก้ปัญหาโดยตั้ง 777
กับทุกไฟล์ ซึ่ง อันตรายมาก
เหตุผล:
- ทุกคนสามารถอ่าน เขียน รัน ได้
- เสี่ยงถูกแก้ไขหรือรันสคริปต์อันตราย
แนวทางที่แนะนำ:
- ไฟล์: 644 หรือ 600
- ไดเรกทอรี: 755 หรือ 700
- สคริปต์/ไฟล์รันได้: 755 (เฉพาะที่จำเป็น)
8. ตัวอย่างการใช้งานและสถานการณ์ที่พบบ่อย
การตั้ง Permission ด้วย chmod ใช้จริงในสถานการณ์แบบไหน?
คำสั่ง chmod
และ Permission -rw-r--r--
ที่กล่าวถึงก่อนหน้านี้ ถูกใช้บ่อยมากในงานจริงทั้งฝั่ง DevOps และฝั่งพัฒนาเว็บ/เซิร์ฟเวอร์
มาดู 3 ตัวอย่างสถานการณ์ที่พบบ่อยกัน
1. จัดการไฟล์ HTML บนเว็บเซิร์ฟเวอร์
สถานการณ์:
คุณเปิดเว็บด้วย Apache, Nginx หรือเซิร์ฟเวอร์อื่น ไฟล์ HTML มักถูกตั้ง Permission เป็น -rw-r--r--
(644)
chmod 644 index.html
ทำไมต้องใช้ 644?
- เจ้าของ (ผู้ดูแล) ต้องแก้ไขไฟล์ได้ → ต้องมีสิทธิ์เขียน (w)
- Web server (www-data) ต้องอ่านไฟล์ได้ → ให้สิทธิ์อ่าน (r)
- ไม่ควรให้สิทธิ์เขียนกับบุคคลอื่น
แบบนี้ ปลอดภัยและจำกัดสิทธิ์เท่าที่จำเป็น
2. ตั้งสิทธิ์รันสำหรับไฟล์สคริปต์
สถานการณ์:
สร้าง shell script backup.sh
แล้วรันไม่ได้ เพราะติด Permission denied
chmod 755 backup.sh
ความหมายของ 755:
- เจ้าของ อ่าน/เขียน/รันได้ (rwx)
- กลุ่มและอื่นๆ อ่าน/รันได้ (rx)
แบบนี้ ทุกคนรัน script ได้ แต่แก้ไขได้เฉพาะเจ้าของ
3. จำกัดสิทธิ์อ่านไฟล์ลับ
สถานการณ์:
มีไฟล์ secrets.txt
เก็บ API key หรือรหัสผ่าน ต้องห้ามคนอื่นเห็น
chmod 600 secrets.txt
ความหมายของ 600:
- เจ้าของ อ่าน/เขียนได้ (rw-)
- กลุ่มและอื่นๆ เข้าไม่ได้เลย (—)
แนะนำให้ใช้ 600 หรือ 400 (อ่านได้เท่านั้น) กับไฟล์ที่สำคัญ
4. แชร์ไดเรกทอรีอย่างปลอดภัยให้หลายคน
สถานการณ์:
สร้างไดเรกทอรี shared_folder
สำหรับทีมงานหลายคน
chmod 770 shared_folder
ความหมายของ 770:
- เจ้าของและกลุ่ม ใช้ได้ทุกสิทธิ์ (rwx)
- คนอื่นเข้าไม่ได้เลย (—)
ตั้งกลุ่มเป็นทีมงานด้วย chgrp
จะควบคุมได้ละเอียด
5. ตัวอย่างความผิดพลาดและวิธีหลีกเลี่ยง
สถานการณ์:
เผลอใช้ chmod -R 777 .
กับทุกไฟล์ ทำให้ทุกคนแก้ไขและรันได้หมด
แนวทางป้องกัน:
- ใช้
find
เพื่อเลือกเฉพาะไฟล์หรือโฟลเดอร์ - ตรวจสอบด้วย
ls -l
ก่อนเปลี่ยน - ทดสอบใน environment แยกก่อน
9. คำถามที่พบบ่อย (FAQ)
Q1. chmod 644
กับ -rw-r--r--
ต่างกันยังไง?
A. ต่างกันแค่รูปแบบการแสดง ผลลัพธ์เหมือนกันทุกประการ
chmod 644
: คำสั่งตั้ง Permission แบบตัวเลข-rw-r--r--
: รูปแบบแสดงผลแบบสัญลักษณ์เมื่อใช้ls -l
ทั้งคู่หมายถึง “เจ้าของอ่าน/เขียนได้ ผู้อื่นอ่านได้อย่างเดียว”
Q2. ถ้าไฟล์ไม่มีสิทธิ์รัน จะเกิดอะไรขึ้น?
A. จะรันสคริปต์หรือโปรแกรมโดยตรงไม่ได้ และขึ้น error
เช่นจะรันไฟล์ .sh, .py ถ้าไม่มีสิทธิ์ x จะเจอ error แบบนี้
bash: ./script.sh: Permission denied
วิธีแก้:
chmod +x script.sh
Q3. ตั้ง 644
กับไดเรกทอรีได้ไหม?
A. ปกติไม่ควร
ไดเรกทอรีต้องมีสิทธิ์ “รัน (x)” ด้วย ไม่เช่นนั้นจะเข้าไปข้างในไม่ได้
ตั้งค่าที่แนะนำ:
chmod 755 ชื่อไดเรกทอรี
Q4. ใช้ chmod -R
มีข้อควรระวังอะไร?
A. สิทธิ์จะถูกตั้งเหมือนกันหมดทั้งไฟล์และโฟลเดอร์ อาจเกิดปัญหาได้
ตัวอย่าง:
chmod -R 644 my_project/
→ ไดเรกทอรีจะไม่มีสิทธิ์รัน (x) แล้วเข้าไม่ได้
วิธีที่ปลอดภัยกว่า:
find my_project/ -type d -exec chmod 755 {} ;
find my_project/ -type f -exec chmod 644 {} ;
Q5. ไม่รู้สาเหตุของ “Permission denied”
A. ตรวจสอบตามนี้:
- เป็นไฟล์รันได้แต่ไม่มี x?
- พยายามเขียนไฟล์ที่ตัวเองไม่ใช่เจ้าของ?
- ไดเรกทอรีไม่มีสิทธิ์ x?
- ไม่มีสิทธิ์ sudo?
แนะนำให้ใช้ ls -l
กับ whoami
เพื่อตรวจสอบสิทธิ์และผู้ใช้ปัจจุบัน
Q6. อยากแชร์ไฟล์แต่ไม่อยากให้คนอื่นแก้ไข ต้องทำยังไง?
A. ตั้งเป็น 644 หรือ 444
chmod 644 share.txt
- 644: คนอื่นอ่านได้แต่แก้ไขไม่ได้
- 444: ทุกคนอ่านได้อย่างเดียว
เลือกตามระดับการแชร์และความปลอดภัยที่ต้องการ
Q7. ตั้ง Permission ผิดจะแก้กลับยังไง?
A. ถ้าไม่ได้จดไว้ ให้ดู Permission จากไฟล์ปกติอื่นในระบบแล้วตั้งให้เหมือนเดิม
ls -l /path/to/ไฟล์ที่ถูกต้อง
แล้วตั้งค่าด้วย chmod
ตามนั้น หากเป็นระบบหรือโปรเจ็กต์ใหญ่ ควรบันทึกค่า default ไว้ด้วย
10. สรุป
ทำไมต้องเข้าใจพื้นฐานของ chmod และ Permission
บทความนี้ได้อธิบายรายละเอียดเกี่ยวกับคำสั่ง chmod
ที่ใช้กันอย่างแพร่หลายใน Linux/Unix และการแสดงสิทธิ์แบบ -rw-r--r--
เนื้อหาเหล่านี้ไม่ได้เป็นเพียงแค่ความรู้ทางเทคนิค แต่ มีผลต่อความปลอดภัย ประสิทธิภาพการใช้งาน และการแชร์ไฟล์ที่ถูกต้อง
ทบทวนสิ่งที่ได้เรียนรู้จากบทความนี้
chmod
คือคำสั่งเปลี่ยน Permission ของไฟล์/ไดเรกทอรี-rw-r--r--
หมายถึง “เจ้าของอ่าน/เขียนได้ คนอื่นอ่านได้อย่างเดียว”- แบบตัวเลข 644 กับสัญลักษณ์ -rw-r–r– มีความหมายเดียวกัน
- วิธีตั้ง Permission มีทั้งแบบตัวเลขและแบบสัญลักษณ์
- ใช้
ls -l
ตรวจสอบสิทธิ์ปัจจุบันได้ - GUI (Nautilus, WinSCP, FileZilla) ก็สามารถดูและเปลี่ยน Permission ได้
- หากตั้งค่าผิด อาจเกิด error อย่าง “Permission denied” ต้องระวัง
- การตั้งสิทธิ์ที่พบบ่อย มีเหตุผลด้านความปลอดภัยและจุดประสงค์ที่ชัดเจน
ไม่มี Permission เดียวที่ดีที่สุดสำหรับทุกกรณี
ไม่มีการตั้งค่าที่ใช้ได้กับทุกไฟล์หรือโฟลเดอร์เสมอไป
ต้องเลือกสิทธิ์ให้เหมาะกับการใช้งาน ความปลอดภัย และผู้ใช้งานแต่ละราย
สำหรับผู้เริ่มต้นใช้งาน Permission
แรกเริ่มอาจรู้สึกว่าคำสั่ง chmod
หรือแนวคิด Permission ซับซ้อน
แต่เมื่อเข้าใจและฝึกใช้จริง จะช่วยป้องกันปัญหาและเสริมความปลอดภัยให้กับระบบของคุณ
โปรดจำไว้เสมอว่า
“ใคร ควรเข้าถึงอะไร ได้แค่ไหน และเพื่ออะไร”
แล้วฝึกใช้งานจริงไปเรื่อยๆ คุณจะเก่งขึ้นแน่นอน!