เรื่องน่ารู้เกี่ยวกับ Premession ของไฟล์

ปกติแล้วเรื่องเกี่ยวกับ Premession ของไฟล์จะมีผลบน Linux เท่านั้นนะครับ ซึ่งบน Windows แล้ว ค่านี้แทบไม่มีผลอะไรเลย

ค่า 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 และ กำหนดกลับเป็นค่าเดิมหลังจากสร้างไฟล์เสร็จแล้ว เป็นต้น
^