เรื่องน่ารู้เกี่ยวกับ Premession ของไฟล์
ค่า Premession ของไฟล์หรือโฟลเดอร์ คือการกำหนดสิทธิ์ในการเข้าถึงซึ่งมีอยู่ด้วยกัน 3 ค่า คือ
- สิทธิ์ในการอ่าน (read)
- สิทธิ์ในการเขียน-ลบ (write)
- สิทธ์ในการใช้งาน (execute)
โดยปกติแล้วไฟล์แต่ละไฟล์จะมีถูกกำหนดว่าเป็นของใคร (user) และ เป็นของกลุ่มผู้ใช้ไหน (group) ดังนั้นการควบคุมการเข้าถึงจะอ้างผู้ใช้ (user) และ กลุ่มผู้ใช้ (group) เป็นสำคัญ นอกจากนี้ยังกำหนดสิทธิ์ครอบคลุมไปยังผู้ใช้นอกเหนือจาก user และ group หรือที่เรียกว่า public ซึ่งหมายถึงกลุ่มผู้ใช้ที่อยู่นอกเหนือจากสองกลุ่มหลักข้างต้น
ความหมายของ Premession ของไฟล์
- Read หมายถึง ไฟล์นั้นๆสามารถเปิดอ่านข้อความภายในไฟล์ได้
- Write หมายถึง สามารถเพิ่มข้อความ ลบข้อความ หรือแก้ไขข้อความภายในไฟล์นั้นๆได้
- Execute จะใช้ในกรณีที่ไฟล์นี้สามารถทำงานได้หรือสั่งให้ทำงานได้ ซึ่งจะมีสิทธื์ในการทำงานนี้ปรากฏอยู่
ความหมายของ Premession ของไดเร็คทอรี่ ซึ่งจะมีความหมายที่แตกต่างจากไฟล์ซักหน่อย ดังนี้
- Read สามารถดูรายชื่อไฟล์ภายในไดเรคทอรี่นั้นๆได้
- Write สามารถสร้างไฟล์ ลบไฟล์ หรือเปลี่ยนชื่อของไฟล์ ภายในไดเร็คทอรี่นั้นๆได้
- Execute สามารถเข้าถึงไดเร็คทอรี่นั้นๆ รวมถึงไดเร็คทอรี่ย่อยด้วยคำสั่งของ linux ได้
โดยปกติแล้วเรามักจะทำความเข้าใจเกี่ยวกับ Premession ของไฟล์เป็นตัวเลข 3 หลัก เช่น 777 หรือ 644 เป็นต้น ตัวเลขแต่ละหลัก หมายถึง
- หลักแรก หมายถึง User
- หลักที่สอง หมายถึง Group
- หลักที่สาม หมายถึง Public
ค่าของตัวเลขแต่ละตัวมีความหมายได้ดังนี้
- 0 หมายถึง ไฟล์นั้นไม่สามารถทำอะไรได้เลย
- 4 หมายถึง ไฟล์นั้นสามารถอ่านได้อย่างเดียว (Read)
- 5 หมายถึง ไฟล์นั้นสามารถอ่านและสั่งให้ทำงานได้ (Read และ Execute)
- 6 หมายถึง ไฟล์นั้นสามารถอ่านและเขียนได้ (Read และ Write)
- 7 หมายถึง ไฟล์นั้นสามารถอ่าน เขียน และ สั่งให้ทำงานได้ (Read Write และ Execute)
สิทธิ์ในการเข้าถึงไฟล์หรือไดเร็คทอรี่ต่างๆเหล่านี้ มีความสำคัญมากต่อความปลอดภัย เราควรกำหนดค่าสิทธิ์ต่างๆที่เพียงพอต่อการทำงานเท่านั้น โดยเฉพาะ ไดเร็คทอรี่ การกำหนดสิทธิ์ที่เกินความจำเป็นอาจมีผลให้เว็บถูกรุกรานได้
ลองมาดูตัวอย่างการกำหนดสิทธิ์ และ ความเชื่อที่ผิดๆกัน
- เราไม่จำเป็นต้องกำหนด สิทธิ์ 777 ให้กับไฟล์เลยถ้าไฟล์นั้นๆ ไม่จำเป็นต้องมีการแก้ไขโดย script และถึงแม้ต้องมีการแก้ไขการกำหนดสิทธิ์ให้เป็น 644 ก็เพียงพอสำหรับการแก้ไขโดย script
- เราไม่จำเป็นต้องกำหนด สิทธิ์ 777 ให้กับโฟลเดอร์เลย ถ้าโฟลเดอร์นั้นๆไม่จำเป็นต้องมีการสร้างไฟล์หรือลบไฟล์ และถึงแม้ต้องมีการสร้างและลบไฟล์ การกำหนดสิทธื์ให้เป็น 755 ก็สามารถใช้งานอัปโหลดหรือลบไฟล์ได้
- ปกติไฟล์ที่ถูกสร้างด้วย script บน Server (เช่นไฟล์ที่อัปโหลดด้วย script) จะมี Premession เป็น 644 ซึ่งเราจะไม่สามารถลบหรือแก้ไขไฟล์เหล่านี้ด้วย ftp ได้
ในทางปฏิบัติ เพื่อความปลอดภัยสูงสุดแล้ว ให้เรากำหนด Premession ให้เพียงพอต่อความต้องการเท่านั้น โดยเฉพาะโฟลเดอร์ ไม่ควรกำหนดเป็น 777 และถ้ากำหนดไว้เพื่อใช้งานอย่างใดอย่างหนึ่งก็ควรกำหนดกลับเป็นค่าเดิมเมื่อเลิกใช้งาน เช่น หากต้องการสร้างไฟล์ในไดเร็คทอรี่ ก็ให้กำหนดไดเร็คทอรี่ให้เป็น 777 และ กำหนดกลับเป็นค่าเดิมหลังจากสร้างไฟล์เสร็จแล้ว เป็นต้น