chmod -R ทำให้ไฟล์ในโฟลเดอร์ย่อยเป็นจริงด้วยเหตุผลบางประการ


22

ฉันปรับสิทธิ์เมื่อตั้งค่าบางธีมของ WordPress และchmod 664 -R theme-dir/*ทำงานมันทำงานได้ดีบนไฟล์ในรูทของไดเรกทอรี แต่ไฟล์ทั้งหมดในไดเรกทอรีย่อยตอนนี้อ่านแบบนี้เมื่อฉันls -l:

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

ฉันไม่สามารถซีดีไปยังไดเรกทอรีย่อยใด ๆ และฉันไม่สามารถลบได้ ฉันไม่เคยเห็นอะไรแบบนี้ใครเคยเจอเรื่องแบบนี้บ้างไหม?


ดูเหมือนว่าระบบไฟล์ที่เสียหาย ..
alexus

1
ทำงานchmod -R u+rwX,go+rX,go-w theme-dir/*
Dusan Bajic

@ dusan.bajic นั่นใช้ได้ขอบคุณ ยังไม่รู้เลยว่าทำไมมันถึงเกิดขึ้นตั้งแต่แรก
Sal

5
@alexus ไม่มีความเสียหายเพียงแค่ perms
ลูกไก่

ฉันคิดว่าฉันเห็นบางอย่างเช่นนั้นเมื่อฉันทำ chown 644 (หรืออะไรก็ตาม) กับ chmod แต่ฉันไม่รู้สึกอยากทดสอบอีกครั้งในระบบการทำงาน
Foon

คำตอบ:


49

การเข้าถึงเนื้อหา (หรือแฟ้มข้อมูลเมตาเฉพาะเพิ่มเติมยกเว้นชื่อไฟล์) ของไดเรกทอรีต้องการให้ไดเรกทอรีมีชุดบิตดำเนินการ

chmod แบบเรียกซ้ำของคุณลบสิทธิ์นั้นออกดังนั้นคุณสูญเสียการเข้าถึงนั้น หากคุณกำลังใช้-Rตัวเลือกในการchmodดีกว่าที่จะหลีกเลี่ยงการใช้รุ่นที่เป็นตัวเลขของสิทธิ์และเรียกแทน chmod -R ug=rwX,o=rX(ใช้รัฐที่คุณต้องการเป็นตัวอย่าง) ตัวพิมพ์ใหญ่ X หมายถึงการตั้งค่าบิต X เฉพาะในไดเรกทอรีหรือไฟล์ที่มีอย่างน้อยหนึ่งxชุด นอกจากนี้คุณอาจต้องการใช้ 644 ( u=rwX,go=rX) เว้นแต่คุณต้องการให้ผู้ใช้กลุ่มเขียนจริงๆ


6
X หมายถึงการตั้งค่า X ในไดเรกทอรีและไฟล์ที่ได้รับอนุญาตให้ใช้งานแล้วสำหรับผู้ใช้บางคน (ซึ่งโดยปกติคือสิ่งที่คุณต้องการ)
tomclegg

1
@ Tomclegg: ใช่ ฉันปรับปรุงคำตอบของฉันอย่างเหมาะสม ดูเหมือนแปลกที่พวกเขาไม่เคยเพิ่มรุ่นเฉพาะของไดเรกทอรีที่แท้จริงหรือดีกว่าตัวอักษรการดำเนินการล่วงหน้า (เช่น u, g, o หรือ a) ที่ดีกว่าซึ่งหมายถึงใช้การเปลี่ยนแปลงนี้กับไดเรกทอรีเท่านั้น
Kevin Cathcart

13

จากเอกสาร Wordpress :

หากคุณมีสิทธิ์เข้าถึงเชลล์ไปยังเซิร์ฟเวอร์ของคุณคุณสามารถเปลี่ยนการอนุญาตไฟล์ซ้ำโดยใช้คำสั่งต่อไปนี้:

สำหรับนาม:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

สำหรับไฟล์:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

overkill สำหรับปัญหานี้โดยเฉพาะอย่างยิ่ง แต่มีประโยชน์มากในกรณีอื่น ๆ :)
nurchi

1
ฉันได้สังเกตเห็นในสภาพแวดล้อมที่ไวต่อความปลอดภัยมากขึ้น (Magento และ Health Care Systems เมื่อเร็ว ๆ นี้) ที่ผู้ขายและระบบโอเพ่นซอร์สกำลังจะแนะนำให้ใช้วิธีการไฟล์เท่านั้นเพราะมันช่วยให้คุณควบคุมว่าวแบบละเอียดเหนือเงื่อนไข แอพลิเคชันของ setuid, setgid และ "บิตเหนียว" ที่น่าอับอาย มันอาจจะเป็นการดีกว่าที่จะทำแผนที่ออกมาสำหรับกรณีการใช้งานนี้ แต่คำตอบการเดิมพันเป็นวิธีที่ปลอดภัยที่สุดที่ได้ผลลัพธ์ที่ต้องการเสมอ ฉันเชื่อว่าความปลอดภัยควรเป็นคุณสมบัติ # 1 หากเป็นไปได้ที่จะจ่าย
ไบรอัน 'BJ' Hoffpauir Jr.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.