ฉันจะทำ chmod ซ้ำในไดเรกทอรีได้อย่างไร?


31

ฉันต้องการเปลี่ยนสิทธิ์บนต้นไม้ใน Centos 4 เพื่อเพิ่มสิทธิ์ดำเนินการสำหรับไดเรกทอรีทั้งหมดซ้ำจากไดเรกทอรี หากฉันใช้ chmod ปกติไฟล์อื่นที่ไม่ใช่ไดเรกทอรีก็จะถูกแก้ไขด้วย:

chmod -R o+x /my/path/here

ฉันจะส่งผลกระทบต่อไดเรกทอรีได้อย่างไร

คำตอบ:


48

เรียกใช้findบน-type d( ไดเรกทอรี ) โดยมี-execหลักในการดำเนินการchmodเฉพาะในโฟลเดอร์:

find /your/path/here -type d -exec chmod o+x {} \;

เพื่อให้แน่ใจว่ามันใช้งานได้กับวัตถุที่ต้องการเท่านั้นคุณสามารถเรียกใช้find /your/path/here -type dก่อนได้ มันจะพิมพ์ไดเรกทอรีที่พบ


คุณช่วยอธิบายสิ่งที่ {} \; ทำ?
Srekel

2
@Srekel ดูคำตอบนี้askubuntu.com/questions/339015/…
MADforFUNandHappy

17

ดูตัวอย่างบรรทัดคำสั่ง - chmodใน Wikipedia

chmod -R a-x+X directory    remove the execute permission on all files in 
                            a directory tree, while allowing for directory browsing.

เพิ่มโดย Daniel: สิ่งนี้ควรใช้ในกรณีของคุณ:

chmod -R o+X directory

สิ่งนี้จะส่งผลกระทบต่อการอนุญาตในปัจจุบันของไฟล์ภายในไดเรกทอรี
scriptmonster

@scriptmonster บรรทัดที่ยกมานั้นไม่ถูกต้องสำหรับกรณีนี้ แต่chmod -R o+X directoryควรใช้กับ OP
Daniel Beck

1
สำหรับผู้ที่สงสัยเกี่ยวกับความแตกต่างเช่นฉันมันคือการที่ X จะยังใช้สิทธิ์ดำเนินการไปยังไฟล์ใด ๆ ที่มีอยู่แล้วอย่างน้อยหนึ่งผู้ได้รับอนุญาตบิตกำหนดไว้แล้ว (ทั้งผู้ใช้กลุ่มหรืออื่น ๆ ) ในกรณีทั่วไปคำตอบที่ยอมรับจะดีกว่า
ixe013

1
find /home/mydir -type d | xargs chmod ugo+rx

ใช้งานได้กับ CentOS6 ซึ่งหา -exec ด้านบนไม่ได้ โดยทั่วไปแล้วมันเพียงท่อรายการของไดเรกทอรีไปยังคำสั่ง xargs ซึ่งส่งไปยัง chmod chmod จากนั้นตั้งค่าสากลอ่านและดำเนินการ (ค้นหา) บนไดเรกทอรี ในการทำเช่นนี้สำหรับผู้ใช้ทุกคนในบ้านใช้ sudo:

sudo sh -c "find /home/ -type d | xargs chmod ugo+rx"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.