ฉันรู้ว่ามันเป็นคำถามที่เก่ามาก แต่ฉันต้องการเพิ่มคำตอบที่ดีพร้อมคำอธิบายเชิงลึก คุณจะต้องดำเนินการสองคำสั่งบน Ubuntu เหมือนระบบจากนั้นจึงทำงานได้อย่างมีเสน่ห์
สิทธิ์ใน Linux สามารถแสดงด้วยตัวเลขสามหลัก ตัวเลขตัวแรกกำหนดสิทธิ์ของเจ้าของไฟล์ ตัวเลขหลักที่สองคือสิทธิ์ของผู้ใช้เฉพาะกลุ่ม ตัวเลขหลักที่สามกำหนดสิทธิ์สำหรับผู้ใช้ทั้งหมดที่ไม่ใช่เจ้าของหรือสมาชิกของกลุ่ม
เว็บเซิร์ฟเวอร์ควรจะดำเนินการกับ id ที่เป็นสมาชิกของกลุ่ม เว็บเซิร์ฟเวอร์ไม่ควรทำงานด้วย id เดียวกับเจ้าของไฟล์และไดเร็กทอรี ใน Ubuntu รัน apache ภายใต้ id www-data ID นั้นควรเป็นสมาชิกของกลุ่มที่มีการระบุสิทธิ์
เพื่อให้ไดเร็กทอรีที่คุณต้องการเปลี่ยนเนื้อหาของไฟล์มีสิทธิ์ที่เหมาะสมให้ดำเนินการคำสั่ง:
find %DIR% -type d -exec chmod 770 {} \;
นั่นหมายความว่าในคำถามของ OP ว่าการอนุญาตสำหรับไดเรกทอรี% ROOT% / ฐานข้อมูลควรจะเปลี่ยนตาม ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องไม่มีไฟล์ภายในไดเร็กทอรีที่ไม่ควรถูกเปลี่ยนแปลงหรือลบออก ดังนั้นแนวทางปฏิบัติที่ดีที่สุดในการสร้างไดเร็กทอรีแยกต่างหากสำหรับไฟล์ที่ต้องเปลี่ยนแปลงเนื้อหา
สิทธิ์ในการอ่าน (4) สำหรับไดเร็กทอรีหมายถึงความสามารถในการรวบรวมไฟล์และไดเร็กทอรีทั้งหมดด้วยข้อมูลเมตาภายในไดเร็กทอรี สิทธิ์ในการเขียน (2) ให้สิทธิ์ในการเปลี่ยนแปลงเนื้อหาของไดเร็กทอรี หมายถึงการเพิ่มและลบไฟล์การเปลี่ยนสิทธิ์ ฯลฯ .. Execution permission (1) หมายความว่าคุณมีสิทธิ์เข้าไปในไดเร็กทอรีนั้น หากไม่มีสิ่งหลังจะเป็นไปไม่ได้ที่จะลงลึกเข้าไปในไดเร็กทอรี เว็บเซิร์ฟเวอร์ต้องการสิทธิ์ในการอ่านเขียนและดำเนินการเมื่อเนื้อหาของไฟล์ควรเปลี่ยนแปลง ดังนั้นความต้องการกลุ่มหลัก 7
คำสั่งที่สองอยู่ในคำถามของ OP:
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
จำเป็นต้องมีความสามารถในการอ่านและเขียนเอกสาร แต่ไม่จำเป็นต้องเรียกใช้ไฟล์ 7 มอบให้กับเจ้าของไฟล์ส่วน 6 ให้กับกลุ่ม เว็บเซิร์ฟเวอร์ไม่จำเป็นต้องมีสิทธิ์ในการเรียกใช้ไฟล์เพื่อเปลี่ยนแปลงเนื้อหา สิทธิ์การเขียนเหล่านั้นควรมอบให้กับไฟล์ในไดเร็กทอรีนั้นเท่านั้น
ผู้ใช้รายอื่นไม่ควรได้รับอนุญาตใด ๆ
สำหรับไดเร็กทอรีที่ไม่จำเป็นต้องเปลี่ยนไฟล์มีสิทธิ์กลุ่ม 5 เพียงพอ เอกสารเกี่ยวกับสิทธิ์และตัวอย่างบางส่วน:
https://wiki.debian.org/Permissions
https://www.linux.com/learn/tutorials/309527-understand-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
php.ini
ไฟล์เพื่อหาสิ่งที่อาจปฏิเสธการเข้าถึงไฟล์หรือไม่?