การเปลี่ยน permission ไฟล์จำนวนมากๆ ในคำสั่งเดียว เขียนเมื่อ 2010.08.29 โดย

คงมีหลายครั้งที่คุณทำการแตกไฟล์ออกมาแล้วเกิด การตั้งค่า permission ของไฟล์หรือไดเรคทอรี่ไม่เป็นที่ต้องการ ล่าสุดเมื่อต้องการติดตั้ง Joomla 1.5.20 ก็ทำการ Download มาปกติแต่พอแตกไฟล์ออกมาแล้ว กลับเป็น 755 เสียหมดแม้กระทั้งไฟล PHP ทั้งหลาย แน่นอนว่าเราไม่ต้องการให้มีการเปิดช่องโหว่เหล่านี้ไว้ แต่ไฟล์และไดเรคทอรี่ก็ซับซ้อนและมากเหลือเกิน คงไม่สนุกแน่ถ้าต้องมานั่งทำทีละไฟล์

เราสามารถใช้ option exec ของคำสั่ง find ช่วยได้ โดย exec นี้หมายถึงให้กระทำคำสั่งหลังจากค้นหาพบตามต้องการแล้ว เมื่อผมต้องการเปลี่ยนไฟล์ PHP ทั้งหมดให้อยู่ในโหมด 644 ก็สามารถใช้คำสั่ง

find . -type f -name '*.php' -exec chmod 644 {} \;

จากคำสั่งเป็นการค้นหาเฉพาะไฟล์โดยในการระบุชนิดด้วย -type f และระบุให้หาไฟล์ที่มีชื่อตามรูปแบบด้วย -name '*.php' นั่นคือให้หาไฟล์ที่ชื่อลงท้ายด้วย php นั่นเอง จากนั้นก็สั่งให้ทำการ chmod 644 {} นั่นคือทำการ chmod ผลจากการค้นหาทั้งหมดเป็น 644 โดยเริ่มค้นหาตั้งแต่ไดเรคทอรี่ปัจจุบัน

ส่วนไดเรคทอรี่ทั้งหมดผมต้องการให้เป็น 755 ตามปกติ เราก็สามารถสั่งได้ด้วย

find . -type d -exec chmod 755 {} \;

เราระุบุให้ค้นหาเฉพาะไดเรคทอรี่เท่านั้นโดยระบุ -type d เมื่อค้นพบแล้วก็สั่ง chmod ให้เป็น 755 ซะให้หมด

ทั้งหมดเราสั่งงานเพียง 2 คำสั่งประหยัดเวลาลงไปได้มาโขเลย



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย