ฉันจะเปลี่ยนไฟล์ทั้งหมดเป็น 644 และโฟลเดอร์ทั้งหมดเป็น 755 โดยใช้chmod
จากlinux
พรอมต์คำสั่งได้อย่างไร (เทอร์มิ)
http://superuser.com
: P แต่คำถามนี้ช่วยฉันที่นี่ขอบคุณ
chmod -R u+rwX,go+rX,go-w /foo
ฉันจะเปลี่ยนไฟล์ทั้งหมดเป็น 644 และโฟลเดอร์ทั้งหมดเป็น 755 โดยใช้chmod
จากlinux
พรอมต์คำสั่งได้อย่างไร (เทอร์มิ)
http://superuser.com
: P แต่คำถามนี้ช่วยฉันที่นี่ขอบคุณ
chmod -R u+rwX,go+rX,go-w /foo
คำตอบ:
วิธีการหนึ่งอาจใช้ find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
ใช้ไฟล์และsudo find /your/location -type d -exec chmod 755 {} \;
ไดเรกทอรี
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
วิธีที่ง่ายที่สุดคือทำ:
chmod -R u+rwX,go+rX,go-w /path/to/dir
ซึ่งโดยทั่วไปหมายถึง:
เพื่อch
ange ไฟล์mod
es -R
ecursively โดยให้:
u
ser: r
อี๊ดw
พิธีกรรมและอีX
ecuteg
roup และo
ผู้ใช้: r
ead และ e X
ecute สิทธิ์ แต่ไม่ได้-w
รับอนุญาตพิธีโปรดทราบว่าX
จะทำให้ไดเรกทอรีที่ใช้งานได้ แต่ไม่ใช่ไฟล์เว้นแต่ว่าจะสามารถค้นหาได้ / ปฏิบัติการได้
+X
- ทำให้ทุกคนในไดเรกทอรีหรือไฟล์สามารถค้นหา / เรียกใช้งานได้ถ้าทุกคนสามารถค้นหาได้ / ปฏิบัติการได้
โปรดตรวจสอบman chmod
รายละเอียดเพิ่มเติม
ดูเพิ่มเติม: วิธีการ chmod ไดเรกทอรีทั้งหมดยกเว้นไฟล์ (ซ้ำ)? ที่ SU
สิ่งที่สั้นที่สุดที่ฉันสามารถทำได้คือ:
chmod -R a=r,u+w,a+X /foo
ซึ่งทำงานบน GNU / Linux และฉันเชื่อว่า Posix โดยทั่วไป (จากการอ่านของฉัน: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html )
สิ่งนี้คือ:
ที่สำคัญสิทธิ์ขั้นตอนที่ 1 จะล้างบิตเรียกใช้ทั้งหมดดังนั้นขั้นตอนที่ 3 จะเพิ่มบิตเรียกใช้กลับสำหรับไดเรกทอรีเท่านั้น (ไม่ต้องใช้ไฟล์) นอกจากนี้ทั้งสามขั้นตอนจะเกิดขึ้นก่อนที่ไดเรกทอรีจะถูกเรียกใช้ซ้ำ (ดังนั้นสิ่งนี้จึงไม่เทียบเท่ากับเช่น
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
เนื่องจาก a = r ลบ x ออกจากไดเรกทอรีดังนั้น chmod จึงไม่สามารถเรียกคืนเข้าไปได้)
ง่ายที่สุดสำหรับฉันที่จะจำคือการดำเนินการสอง
chmod -R 644 dirName
chmod -R +X dirName
เครื่องหมาย + X มีผลกับไดเรกทอรีเท่านั้น
ใน https://help.directadmin.com/item.php?id=589พวกเขาเขียน:
หากคุณต้องการวิธีที่รวดเร็วในการรีเซ็ตข้อมูล public_html ของคุณเป็น 755 สำหรับไดเรกทอรีและ 644 สำหรับไฟล์คุณสามารถใช้สิ่งต่อไปนี้:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
ฉันทดสอบแล้ว ... มันใช้งานได้!
สิ่งนี้ใช้ได้กับฉัน:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
ทำทั้งสองอย่างในครั้งเดียวด้วย:
find -type f ... -o -type d ...
เช่นเดียวกับในค้นหาประเภท f หรือพิมพ์ d และทำ ... แรกสำหรับไฟล์และที่สอง ... สำหรับ dirs โดยเฉพาะ:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
ออก--changes
หากคุณต้องการให้มันทำงานอย่างเงียบ ๆ
หากคุณต้องการวิธีที่รวดเร็วในการรีเซ็ตข้อมูล public_html ของคุณเป็น 755 สำหรับไดเรกทอรีและ 644 สำหรับไฟล์คุณสามารถใช้สิ่งต่อไปนี้:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
นอกจากนี้หากคุณรู้ว่า PHP ทำงานในฐานะผู้ใช้และไม่ใช่ "apache" คุณสามารถตั้งค่าไฟล์ PHP เป็น 600 เพื่อความปลอดภัยในระดับสูงเช่น:
find . -type f -name '*.php' -exec chmod 600 {} \;
คุณสามารถค้นหาแหล่งข้อมูลนี้ได้ที่นี่: https://help.directadmin.com/item.php?id=589
สิ่งนี้สามารถทำงานได้ด้วย:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.