|
|
| chmod 755 มีความหมายยังไง ? มีผลกับเรื่องความปลอดภัยมั๊ย? |
chmod 755 ?? ทำไมต้อง 755 ?? แล้ว 755 มีความหมายยังไง ??
อาจจะเคยเห็นหลายๆคนหลายๆที่ บอกว่าเวลาลงโปรแกรม cgi ให้เปลี่ยน
mode ไฟล์เป็น 755 คงจะมีหลายคนอยู่นะครับ ที่สงสัยว่าทำไมต้อง 755
บางคนสงสัยต่อไปอีกว่า 755 คืออะไร ก่อนอื่นไหนๆก็เขียนออกมาเป็นบทความแล้ว
ไม่อยากให้มันสั้นจนเกินไป จะขอพูดถึง chmod และ permission ในระบบ
unix ไปด้วยเลยทีเดียวกันนะครับ
chmod (ย่อมาจาก change mode) เป็นคำสั่งที่ใช้ในการเปลี่ยน permission
ของแฟ้มข้อมูลในระบบ unix ซึ่ง permission นี้ก็คือข้อมูลเล็กๆที่จะบอก
ให้ระบบทราบเกี่ยวกับ สิทธิ์ต่างๆของแฟ้มนั้น กับผู้ใช้งานในระบบ โดยที่
ระบบจะมองผู้ใช้งานเป็น 3 กลุ่ม คือ
owner คือเจ้าของแฟ้มข้อมูล แฟ้มนั้นเอง
group คือผู้ที่อยู่ใน group เดียวกับเจ้าของแฟ้มข้อมูลนั้นๆ
other คือผู้ใช้ทั่วไปใครก็ได้ ไม่จำเป็นต้องเป็นเจ้าของ หรืออยู่กลุ่มเดียวกับเจ้าของแฟ้มข้อมูลนั้นๆ
โดยในระบบ unix จะมี permission ที่ในเบื้องต้นที่ควรรู้และเกี่ยวกับ
การพัฒนาโปรแกรมในเน็ตอยู่ 4 อย่างคือ d, r, w และ x โดยที่
d คือ directory หมายถึงว่าแฟ้มนั้นคือ directory (เหมือนกับ folder ในระบบ windows)
r คือ read หมายถึง สิทธิในการอ่านข้อมูลจากแฟ้มข้อมูลนั้น
w คือ write หมายถึง สิทธิในการเขียนข้อมูลในแฟ้มข้อมูล รวมไปถึงการลบด้วย
x คือ execute หมายถึง สิทธิในการสั่งให้แฟ้มข้อมูลนั้นทำงาน (execute)
เพื่อให้มองเห็นภาพ เรามาลองจัดกลุ่มของ rwx กันตามที่ระบบ unix มันมอง
กันดูนะครับ โดยจะจัดเรียงตามกลุ่มของผู้ใช้งาน และในแต่ละกลุ่มจะมีสิทธิ ทั้ง
r, w และ x (จะเห็นว่าไม่มี d มาเกี่ยวข้องเลยนะคับ) ดังนี้ครับผม
rwx rwx rwx
นี่หมายถึงว่า ผู้ใช้ทุกกลุ่ม จะมีสิทธิ ในการ อ่าน เขียน และ execute แฟ้มข้อมูล
นั้นๆทุกคน ให้เรามองแต่ละกลุ่มเป็นเลขฐาน 2 นะครับ อันไหนที่มีสิทธิในแต่ละ
ตำแหน่งคือ 1 เพราะฉนั้น rwx คือ 7 ในที่นี้ เราจะเรียกว่าแฟ้มข้อมูล แฟ้มนี้มี
permission (mode, attribute หรืออื่นๆ แล้วแต่จะเรียก) เป็น 7 7 7 นะครับ
(คือ 111 กับ 111 และ 111 เรียงกันนั่นเอง)
ถ้าหากว่าเราต้องการให้มีเฉพาะเราเท่านั้นที่จะ มีสิทธิในการเขียน
แฟ้มข้อมูลนั้น permission ก็จะเปลี่ยนไปเป็นดังนี้ 755 (นั่นแน่ มาแล้วเจ้า 755)
ซึ่งจะหมายถึง rwx r-x r-x (ไม่มีตัว w ในอีกสองกลุ่มสุดท้าย) ซึ่งจะหมายความว่า
จะมีแต่ผู้ที่เป็นเจ้าของแฟ้มข้อมูล นั้นเท่านั้นที่สามารถเขียนข้อมูล หรือลบ แฟ้มข้อมูล
นั้นๆได้ แต่ในเรื่องการอ่าน หรือการเรียกทำงาน (execute) แล้วนั้นทุกคนจะมีสิทธิ
เท่ากันหมด
เข้าเรื่องกันดีกว่า
ก็จะประมาณนี้นะครับ สำหรับเรื่อง permission ทีนี้มาพูดถึงตัวเลข 755 กันอีก
ทำไม cgi script มันต้องกำหนดเป็น 755 หละ หรือว่าต้อง 755 เพราะว่าเรา
ต้องการให้ทุกๆคนในโลกนี้สามารถเรียกใช้ cgi script ของเราได้ เราเลยต้อง
กำหนดเป็น 755 จริงๆ ไม่เกี่ยวกันเลยครับ 755 ไม่ได้หมายถึงว่าใครๆในโลกจะ
เรียกใช้โปรแกรมเราได้ จริงๆแล้วคือ เฉพาะผู้ใช้ในระบบ (server หรือ host แล้วแต่
จะเรียก) นั้นเท่านั้น ที่เรียกใช้ได้
ที่มักจะกำหนดเป็น 755 เพราะในหลายๆ hosting นั้น user ที่เป็นเจ้าของ www
daemon process (อธิบายคร่าวๆคือ user ที่รัน www server) จะถูกกำหนด
เป็น nobody:nobody (คือ user nobody และ group nobody) ซึ่งไม่ใช่
user เดียวกันกับที่แฟ้มข้อมูลโปรแกรมของเรามี นั่นหมายถึงว่าเราเพียงแค่เปิดโอกาส
ให้ user ที่เป็นเจ้าของ www daemon process เรียกใช้โปรแกรมเราได้
เท่านั้นเอง
แล้วกำหนดเป็นอย่างอื่นได้หรือเปล่า? เช่น 700 711 744 คำตอบก็คือ แล้วแต่ระบบ
นะครับ บาง hosting จะกำหนดให้ user ที่เป็นเจ้าของ www daemon process
ในแต่ละ virtual host (ว่าง่ายๆคือลูกค้าแต่ละคน) นั้นต่างกันได้ นั่นหมายถึงว่าเขา
สามารถจะเป็น user เดียวกับที่เป็นเจ้าของแฟ้ม cgi script ของเราได้ เราก็ไม่จำเป็น
ที่จะต้องกำหนดให้ ผู้ใช้อื่นๆในระบบสามารถอ่าน หรือเรียกใช้ cgi script ของเราได้
นั่นเอง
แล้วทำไมเราต้องมาคุยเรื่องนี้กันให้ยุ่งยากหรอครับ ใครเมื่อกำหนดมันเป็น 755 ก็ไม่
เห็นจะมีปัญหาอะไรเลยนี่ โปรแกรมเราก็เรียกใช้ได้ตามปกติ? คำตอบคือ มันอาจจะ
มีผลกระทบ ได้ในเรื่องของระบบความปลอดภัย หรือเรื่องความลับ เช่นถ้าเรากำหนด
เป็น 755 ซะ นั่นหมายถึง ลูกค้าคนอื่นที่มีสิทธิในระบบใน hosting ที่เราใช้อยู่อาจจะ
telnet เข้ามา server และเปิดดู source code ของโปรแกรมเราได้ !!!! หรืออาจจะ
ไม่ใช่ลูกค้า แต่เป็น hacker หละ เห็นผลในทันทีใช่ไหมครับ ถ้าเขาเห็น source code
และสามารถหาช่องโหว่ได้ ก็คงจะเกิดความเสียหายแน่นอน เป็นเรื่องน่าคิดอยู่เหมือนกัน
ใช่ไหมครับ <ยิ้ม> จะดีกว่าไหมครับ ถ้าสามารถกำหนดเป็น 700 แล้วโปรแกรม
ก็ยังสามารถทำงานได้อยู่เช่นเดิม ฝากไว้เป็นการบ้านนะครับ
ถ้าคิดว่า แล้วใครจะมารู้ได้ไงว่า โปรแกรมของเราเก็บไว้ที่ไหนใน server ไม่ใช่เรื่อง
ยากเลยครับ ขอแค่รู้ข้อมูลว่า url ที่เรียกใช้โปรแกรมนั้นๆคืออะไร และรู้เรื่องในระบบ
อีกนิดหน่อยว่า path ของลูกค้าโดยทั่วไปแล้วนั้นคืออะไร ใครๆก็ทราบได้จริงไหมครับ
และถ้าเขารู้ว่าเราต้องกำหนด cgi script เป็น 755 โปรแกรมถึงจะทำงานได้ นั่นก็หมายความ
ว่าเขาก็สามารถที่จะนำเอา source code ของโปรแกรมของคุณไปได้ไม่ยากเลย
กลับเนื้อหาหลัก.. ->
|
|
|