เทคนิคการปรับ chmod ให้เป็น 777 หรือ ปรับ chmod ให้สามารถเขียนได้

ในการติดตั้งโปรแกรม เรามักจะเจอกับเรื่องหนึ่งในขั้นตอนการติดตั้งอยู่เสมอ คือการปรับ chmod ซึ่งมักจะบอกไว้ว่า "ปรับ chmod ให้เป็น 777" หรือ "ปรับ chmod ให้สามารถเขียนได้" (หรืออะไรทำนองนี้)

สิ่งที่เราได้ยินกันบ่อยๆ และมักจะถูกสอนต่อๆกันมาว่า เราไม่ควรปรับ chmod ให้เป็น 777 แล้วจริงๆมันคืออะไร หรือเราจะต้องปรับให้เป็นอะไรกันแน่

สำหรับใครที่สงสัยว่า chmod คืออะไร อ่านบทความนี้เลยครับ chmod 777 คืออะไร ทำไมต้อง chmod และมันไม่ปลอดภัยจริงหรือ
ถ้าได้อ่านบทความข้างต้นจะเห็นว่า บทความบอกว่า chmod ของไดเร็คทอรี่ ควรเป็น 644 และ chmod ของไฟล์ควรเป็น 755
วิธีการปรับ chmod พื้นฐานเรามักทำผ่านโปรแกรม FTP เช่น FileZilla ด้วยการคลิกขวาที่ไฟล์หรือไดเร็คทอรี่ที่ต้องการปรับ แล้วเลือก "สิทธิการเข้าถึงไฟล์" จะได้หน้าต่างดังรูป (ตัวอย่างนี้ เป็นการคลิกขวาที่ไดเร็คทอรี่ datas/)
เรื่องโชคร้ายคือการปรับ chmod เป็นค่าอื่นที่ไม่ใช่ 777 จะยังไม่สามารถทำให้โปรแกรมสามารถสร้างไดเร็คทอรี่หรือเขียนไฟล์ได้ ทำให้เหมือนกับว่าเราถูกบังคับให้ต้องปรับ chmod ให้เป็น 777 เพียงอย่างเดียวเท่านั้น เราจะมาว่ากันถึงเทคนิคการแก้ปัญหานี้ในแบบของผมกัน (เทคนิคนี้สามารถใช้ได้กับตัวติดตั้งของ GCMS และตัวติดตั้งของ Kotchasan และยังสามารถใช้งานได้กับ CMS ส่วนใหญ่ ที่ตัวติดตั้งสร้างไดเร็คทอรี่ที่จำเป็นให้) ซึ่งผมจะยกตัวอย่างการติดตั้งของ Kotchasan และ GCMS เป็นหลักนะครับ
 
  • ก่อนอื่น เราต้องพิจารณาก่อนว่าตัวติดตั้งจะสร้างไฟล์หรือไดเร็คทอรี่อะไร ให้เราปรับ 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 ของเว็บไซต์เพียงรายการเดียวก็เพียงพอสำหรับการติดตั้งแล้ว
ลองมาดูปัญหาอีกข้อที่พบได้บ่อย ดูจากรูปภาพด้านบนเลยครับ (อันนี้มีคนส่งมาให้) ดูที่คอลัมน์ Owner เลยครับ จะเห็นว่าในคอลัมน์นี้ Owner เป็น root นั่นหมายความว่ามีการอัปโหลดไฟล์ด้วยสิทธิของ root ขึ้นไป (อาจเป็นเพราะผู้ดูแลเป็นคนอัปโหลด) ซึ่งจะมีผลให้เว็บ ซึ่งเรียกด้วยสิทธิของ Apache (หรือ www) ไม่สามารถสร้างหรือเขียนไฟล์ได้

วิธีแก้ไข
  1. จากที่บอกไปด้านบนแล้วว่าอัปโหลดโดย root Owner ของไฟล์ก็จะได้เป็น root ดังนั้นแค่เปลี่ยนไปใช้ user อื่นในการอัปโหลด (user เจ้าของเดียวกันกับไดเร็คทอรี่ที่ติดตั้ง) ก็จะสามารถเขียนไฟล์ได้แล้ว นอกจาก user เจ้าของเดียวกันกับไดเร็คทอรี่ที่ติดตั้งแล้ว อาจใช้ ftp user ที่เราสร้างให้ user อัปโหลดไฟล์ก็ได้
  2. มีอีกวิธี อาจจะง่ายกว่า โดยการสั่งเปลี่ยน owner ของไดเร็คทอรี่
    sudo chown -R username:group directory
    • แทนที่ username และ group ด้วยค่าที่ต้องการ (สังเกตุจากไดเร็คทอรี่อื่นๆที่ใช้งานได้ ก็ได้)
    • directory ไดเร็คทอรี่ที่ต้องการ ปกติก็จะเป็น root ของเว็บไซต์นั่นแหละครับ เนื่องจากคำสั่ง -R ที่เพิ่มมาเป็นการบอกให้กระทำกับไดเร็คทอรี่ย่อยด้วย
0SHAREFacebookLINE it!