OLS Community

“Chmod 777”  Permission ตัวร้าย อันตรายที่ต้องรู้

การตั้งค่ากำหนดสิทธิ์ (Permission) เรียกได้ว่าเป็นหนึ่งในสิ่งที่ผู้ดูแลระบบต้องให้ความสำคัญเป็นอันดับต้น ๆ เลยทีเดียว เพราะหากเราตั้งค่าไม่ดี อาจจะทำให้ผู้ไม่หวังดีเข้ามาเปลี่ยนโค้ด หรือโจมตีเซิร์ฟเวอร์ของเราได้ วันนี้เราเลยอยากจะพาทุกคนมาทำความรู้จักกับความอันตรายของ Chmod 777  ที่อาจส่งผลร้ายแรงกว่าที่คิด ถ้าพร้อมแล้วลองไปดูกันเลยค่ะ

บทความนี้มีหัวข้ออะไรบ้าง

ทำความรู้จักกับ “Classes” และ “Permission” 

วิธีการกำหนดสิทธิ์ให้กับไฟล์และไดเร็กทอรี

เพราะอะไรการใช้ Chmod 777 ถึงอันตราย

วิธีการสแกนไฟล์ และไดเร็กทอรีเพื่อหา 777

วิธีการเปลี่ยนสิทธิ์ไฟล์ และไดเร็กทอรี


ทำความรู้จักกับ “Classes” และ “Permission” 

อันแรกเราควรทำความเข้าใจเกี่ยวกับ “Classes” และ “Permission” กันก่อน โดยระบบปฏิบัติการยูนิกซ์ (Unix) ซึ่งรวมไปถึง Linux และ Mac OS ที่เราใช้กันอยู่นั้นจะมาพร้อมกับกลไกการกำหนดสิทธิ์เข้าถึงไฟล์ที่สามารถตั้งค่าได้ว่า “ใคร” สามารถ “ทำอะไร” ได้บ้างซึ่งก็คือ “Classes” และ “Permission” นั่นเองโดยมีรายละเอียดดังนี้

Classes  : เป็นการกำหนดว่า “ใคร” จะสามารถเข้าถึงได้บ้าง โดยจะแบ่งออกเป็น 3 ประเภทดังนี้

Permissions : เป็นการกำหนดว่า “สามารถทำอะไร” กับไฟล์ และไดเร็กทอรีนั้น ๆ ได้บ้าง ซึ่งจะแบ่งออกเป็น 3 ระดับดังนี้


วิธีการกำหนดสิทธิ์ให้กับไฟล์และไดเร็กทอรี

สำหรับการกำหนดสิทธิ์การเข้าถึงไฟล์ และไดเร็กทอรีนั้นจะใช้ตัวอักษร หรือตัวเลข ในการกำหนดความสิทธิ์และความสามารถต่าง ๆ ดังนี้

สิทธิ์ในการ Write Read และ Execute จะแทนค่าได้ดังนี้

สิทธิ์ที่แทนค่าทางด้านบนเมื่อนำมารวมกันจะได้ระดับการกำหนดสิทธิ์ของแต่ละ Classes ดังนี้

ซึ่งการกำหนดสิทธิ์ของแต่ละ Classes คือการนำตัวเลขของแต่ละระดับมาเรียงกัน ยกตัวอย่างเช่น 

วิธีการเรียกดูตัวเลขที่แสดงสิทธิ์ของไฟล์ สามารถเรียกดูได้โดยใช้คำสั่ง stat

# stat -c “%a” <file name>

วิธีการเรียกดูสิทธิ์ในการ Write , Read และ Execute ของไฟล์ทั้งหมด สามารถเรียกดูได้โดยใช้คำสั่ง II

# ll


เพราะอะไรการใช้ Chmod 777 ถึงอันตราย

อย่างที่เราเห็นกันแล้วว่าการกำหนดสิทธิ์นั้นมีรูปแบบอย่างไรบ้าง ดังนั้นหากเรากำหนดสิทธิ์เป็น 777 ก็เท่ากับว่า “ทุกคน” จะสามารถทำอะไรกับไฟล์หรือไดเร็กทอรีนั่นเอง ซึ่งถ้าหากผู้ไม่หวังดีรู้เข้าก็จะสามารถเข้าถึงไฟล์ และไดเร็กทอรีทำกำหนดสิทธิ์เป็น 777 เพื่อใส่โค้ดหรือไฟล์เพื่อโจมตีเซิร์ฟเวอร์ของเราได้นั้นเอง

นอกจากนี้แล้ว Script ทุกประเภทไม่ว่าจะเป็น php phtml และ html ไฟล์ ก็ไม่ควรที่จะกำหนดสิทธิ์เป็น 777 เพราะจะทำให้ผู้ไม่หวังดีสามารถเข้าถึงเพื่อแก้ไขโค้ด หรือโจมตีเซิร์ฟเวอร์ได้เช่นเดียวกัน

ดังนั้นการใช้  777 จึงควรหลีกเลี่ยง หรือระมัดระวังในการใช้งาน ซึ่งโดยส่วนมากแล้วจะใช้ในกรณีอัปโหลด IMAGES หรือไฟล์บางประเภทที่ไม่สามารถประมวลผลได้ หรือในบางกรณีที่ไดเร็กทอรีนั้นมีความปลอดภัยสูงอยู่แล้วเท่านั้น


วิธีการสแกนไฟล์ และไดเร็กทอรีเพื่อหา 777

ทำการ SSH เข้าสู่เซิร์ฟเวอร์ของคุณแล้วพิมพ์คำสั่ง ถ้ามีไฟล์ตรงตามเงื่อนไขที่กำหนด output จะแสดงชื่อไฟล์ดังต่อไปนี้

find . -perm 777 -name “*.*”

find . -perm 777 -name “*.php”

find . -perm 777 -name temp.txt


วิธีการเปลี่ยนสิทธิ์ไฟล์ และไดเร็กทอรี

เมื่อพบไฟล์ หรือไดเร็กทอรีที่ต้องการแก้ไขแล้ว เราสามารถเปลี่ยนสิทธิ์ได้ทีละไฟล์ แต่หากต้องการหาและเปลี่ยนไฟล์ทั้งหมดในเวลาเดียวกันสามารถทำได้ด้วยคำสั่ง

find . -name ‘*.php’ -exec chmod 755 {} \;

ไฟล์ที่มีนามสกุล php ทั้งหมดจะถูกเปลี่ยนสิทธิ์เป็น 755


สรุป

ทีนี้เราก็ทราบกันแล้วใช่มั้ยคะ การตั้งหรือกำหนดสิทธิ์ 777 นั้นอันตรายกว่าที่คิด เพราะฉะนั้นเราจึงควรระมัดระวังในการใช้ และหมั่นตรวจสอบสิทธิ์ไฟล์ต่าง ๆ ให้ดี เพื่อที่เราจะได้ไม่พลาดเปิดช่องให้ผู้ไม่หวังดีเข้ามาโจมตีเราได้นั่นเอง 


อ้างอิงจาก

Scanning your server for 777 files and directories: https://webcs.com/webcsdocs/docs5/777scan.html

Scan Find Files Folders With 777 Permissions PHP SCRIPT: http://chinashoppingsites.blogspot.com/2015/12/scan-find-files-folders-with-777.html

What Does chmod 777 Mean: https://linuxize.com/post/what-does-chmod-777-mean/