เทคนิคการปรับ chmod ให้เป็น 777 หรือ ปรับ chmod ให้สามารถเขียนได้
สิ่งที่เราได้ยินกันบ่อยๆ และมักจะถูกสอนต่อๆกันมาว่า เราไม่ควรปรับ chmod ให้เป็น 777 แล้วจริงๆมันคืออะไร หรือเราจะต้องปรับให้เป็นอะไรกันแน่
สำหรับใครที่สงสัยว่า chmod คืออะไร อ่านบทความนี้เลยครับ chmod 777 คืออะไร ทำไมต้อง chmod และมันไม่ปลอดภัยจริงหรือ วิธีการปรับ chmod พื้นฐานเรามักทำผ่านโปรแกรม FTP เช่น FileZilla ด้วยการคลิกขวาที่ไฟล์หรือไดเร็คทอรี่ที่ต้องการปรับ แล้วเลือก "สิทธิการเข้าถึงไฟล์" จะได้หน้าต่างดังรูป (ตัวอย่างนี้ เป็นการคลิกขวาที่ไดเร็คทอรี่ datas/)
- ก่อนอื่น เราต้องพิจารณาก่อนว่าตัวติดตั้งจะสร้างไฟล์หรือไดเร็คทอรี่อะไร ให้เราปรับ chmod ให้กับไดเร็คทอรี่ที่ไฟล์หรือไดเร็คทอรี่นั้นอยู่แทน เช่น โปรแกรมต้องการสร้างไดเร็คทอรี่ datas/ (สมมุติ path ของ datas/ คือ public_html/datas/) ก็ให้เราเปลี่ยนไปปรับ chmod ให้ไดเร็คทอรี่ public_html/ แทนการสร้างไดเร็คทอรี่ datas/ (และปรับ chmod ไดเร็คทอรี่ datas/ ให้เป็น 777) แต่ก่อนจะทำการปรับ chmod ให้กับ public_html/ ให้จดบันทึก chmod ของ public_html/ ปัจจุบันไว้ก่อน เพื่อปรับกลับหลังจากการติดตั้งเสร็จเรียบร้อยแล้ว
- หลังจากการปรับ chmod ให้กับไดเร็คทอรี่ public_html/ แล้วให้ดำเนินการติดตั้งต่อไปตามปกติจนกว่าจะเสร็จ (เนื่องจากไดเร็คทอรี่ public_html/ สามารถเขียนได้แล้ว ทำให้ตัวติดตั้งสามารถสร้างไดเร็คทอรี่ datas/ และ ไฟล์หรือไดเร็คทอรี่อื่นๆ ในนั้นได้)
- เมื่อเสร็จสิ้นการติดตั้ง ให้ปรับ chmod ให้ public_html/ กลับไปเป็นอย่างเดิมด้วย ห้ามลืมเด็ดขาด (ในกรณีที่จำไม่ได้ สามารถปรับ chmod ให้เป็น 644 ตามค่าที่แนะนำได้)
หมายเหตุ ตัวติดตั้งของ GCMS และ Kotchasan ต้องการสร้างไดเร็คทอรี่ datas/ และ settings/ ซึ่งทั้งสองไดเร็คทอรี่อยู่ที่ root ของเว็บไซต์ ดังนั้นเราสามารถปรับ chmod ให้ root ของเว็บไซต์เพียงรายการเดียวก็เพียงพอสำหรับการติดตั้งแล้ว
วิธีแก้ไข
- จากที่บอกไปด้านบนแล้วว่าอัปโหลดโดย root Owner ของไฟล์ก็จะได้เป็น root ดังนั้นแค่เปลี่ยนไปใช้ user อื่นในการอัปโหลด (user เจ้าของเดียวกันกับไดเร็คทอรี่ที่ติดตั้ง) ก็จะสามารถเขียนไฟล์ได้แล้ว นอกจาก user เจ้าของเดียวกันกับไดเร็คทอรี่ที่ติดตั้งแล้ว อาจใช้ ftp user ที่เราสร้างให้ user อัปโหลดไฟล์ก็ได้
- มีอีกวิธี อาจจะง่ายกว่า โดยการสั่งเปลี่ยน owner ของไดเร็คทอรี่
sudo chown -R username:group directory- แทนที่ username และ group ด้วยค่าที่ต้องการ (สังเกตุจากไดเร็คทอรี่อื่นๆที่ใช้งานได้ ก็ได้)
- directory ไดเร็คทอรี่ที่ต้องการ ปกติก็จะเป็น root ของเว็บไซต์นั่นแหละครับ เนื่องจากคำสั่ง -R ที่เพิ่มมาเป็นการบอกให้กระทำกับไดเร็คทอรี่ย่อยด้วย