ฉันเข้าใจว่า magento บอกว่ามี/ varและ/ mediaที่700สำหรับโฟลเดอร์และ600สำหรับไฟล์ แต่เมื่อฉันทำเช่นนี้จะแบ่งบางส่วนของเว็บไซต์ของฉัน ฉันอยากรู้ว่าสิ่งใดที่คนส่วนใหญ่ใช้สิทธิ์สำหรับโฟลเดอร์เหล่านี้
ฉันเข้าใจว่า magento บอกว่ามี/ varและ/ mediaที่700สำหรับโฟลเดอร์และ600สำหรับไฟล์ แต่เมื่อฉันทำเช่นนี้จะแบ่งบางส่วนของเว็บไซต์ของฉัน ฉันอยากรู้ว่าสิ่งใดที่คนส่วนใหญ่ใช้สิทธิ์สำหรับโฟลเดอร์เหล่านี้
คำตอบ:
ฉันไม่เห็นการพูดถึงการใช้ 700 และ 600 มากนัก แต่เป็นคำแนะนำที่ดี น่าเสียดายที่การตั้งค่าเซิร์ฟเวอร์ทุกครั้งนั้นแตกต่างกันและต้องมีการชั่งน้ำหนักเทียบกับความสะดวกสบาย (การเข้าถึงของผู้ใช้เพื่ออัปเดต / แก้ไขไฟล์)
แนวทางพื้นฐานควรที่จะให้น้อยที่สุดเท่าที่จะทำได้และล็อคให้มากที่สุดเท่าที่จะทำได้ (700/600 ดีสำหรับเรื่องนี้) ในกรณีที่คำแนะนำ "ทางการ" ของ wiki ต้องการนำไปใช้กับสถานการณ์ให้ได้มากที่สุดและแนะนำการอนุญาตการอ่านสำหรับทุกคน (ซึ่งหมายถึงบริการอื่น ๆ ที่ถูกบุกรุกบนเซิร์ฟเวอร์นั้นจะสามารถอ่านแอพ / etc / local ได้ xml ด้วยการกำหนดค่า db ของคุณ)
ในกรณีของคุณในขณะนี้ดูเหมือนว่าไฟล์จะเป็นของผู้ใช้ที่แตกต่างจากกระบวนการเว็บเซิร์ฟเวอร์ / php ของคุณทำงาน การเปลี่ยนความเป็นเจ้าของไฟล์เป็นเว็บเซิร์ฟเวอร์ควรแก้ไขปัญหาเดิมของคุณ
โปรดทราบว่าการใช้ 700/600 และการกำหนดไฟล์ให้กับเว็บเซิร์ฟเวอร์หมายความว่าผู้ใช้ปกติของคุณจะไม่สามารถแก้ไขไฟล์ได้
ด้านล่างฉันรู้สึกว่าประนีประนอมที่ดีสำหรับความสะดวกสบายเทียบกับล็อค ไฟล์ทั้งหมดเป็นของผู้ใช้: webservergroup
var และสื่อ 770/660
เซิร์ฟเวอร์และผู้ใช้ของคุณได้รับอนุญาตให้อ่านและเขียนจากโฟลเดอร์ var และสื่อ (เซสชัน / แคช / รูปภาพ)
ที่เหลือ 750/640
ผู้ใช้ของคุณสามารถแก้ไข / อัปเดตรหัสได้
เว็บเซิร์ฟเวอร์สามารถอ่านไฟล์เพื่อเรียกใช้งาน / แสดงผลได้
โดยทั่วไปไฟล์ทั้งหมดที่ควรจะเป็น644
และโฟลเดอร์ที่ทุกคนควรจะ755
และควรจะเป็นเจ้าของโดยผู้ใช้เว็บเซิร์ฟเวอร์ของคุณทำงานภายใต้ mage
ปฏิบัติการควรจะได้รับ550
สิทธิ์ในการทำให้เกิดการเรียก
เชลล์สคริปต์นี้ควรทำการแก้ไขหากเรียกใช้จากรูต Mage ของคุณ:
#!/bin/sh
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 550 mage
ที่มา: http://www.magentocommerce.com/wiki/groups/227/resetting_file_permissions
ในขณะที่วิธีการแก้ปัญหาของ Phil ดี แต่ฉันก็ใช้วิธีที่ต่างกันเล็กน้อย นอกเหนือจากการทำให้เจ้าของ "ผู้ใช้ php / webserver" ของไฟล์ฉันสร้างกลุ่มเพิ่มเติม มักจะเรียกว่าdev และฉันเพิ่ม "ผู้ใช้ php" และตัวฉันเองและนักพัฒนาอื่น ๆ ในกลุ่มdevนั้น แล้วฉันจะทำchgrpเพื่อให้ไฟล์ทั้งหมดในโครงการวีโอไอพีทรีย่อยมีกลุ่มdev ฉันเพิ่มบิตไปยังโฟลเดอร์ที่ช่วยให้มั่นใจว่าโฟลเดอร์ย่อยที่สร้างขึ้นใหม่ได้รับการอนุญาตแบบเดียวกัน
ฉันได้สร้างส่วนสาธารณะด้วยสคริปต์ fix_permissions.sh ของฉัน รู้สึกฟรีที่จะใช้มัน :) มันช่วยให้คุณรักษาทรีทเมนต์โครงการ Magento ทั้งหมดของคุณด้วยสิทธิ์ที่ดี
https://gist.github.com/svenvarkel/8062778#file-fix_permissions-sh
คำถามเดิม - var และสื่อต้องมีการอนุญาตที่ "ผู้ใช้ php" สามารถอ่านและเขียนไปยังโฟลเดอร์เหล่านี้ได้ มันจะต้องสามารถเขียนแคชไฟล์เซสชั่น ฯลฯ ภายใต้ var และจะต้องสามารถเขียนแคชรูปภาพสินค้าและภาพภายใต้สื่อ ดังนั้นให้ทำตามคำแนะนำของฟิล: chown หรือ chgrp เหล่านี้กับ "ผู้ใช้ php" และให้สิทธิ์ rw แก่ "ผู้ใช้ php"
ฉันคิดว่ามันถูกต้องมากกว่าในการอ้างถึง "ผู้ใช้ php" ในบริบทของ FPM (CGI) ผู้ใช้เว็บเซิร์ฟเวอร์อาจแตกต่างจากผู้ใช้ PHP
/ var - magento ใช้เพื่อเขียนแคชเซสชันและข้อมูลอื่น ๆ
/ media - magento ใช้สำหรับอัปโหลดภาพผลิตภัณฑ์, ภาพหมวดหมู่ (ภาพทุกประเภท)
ดังนั้นทั้งสองโฟลเดอร์คุณควรใช้สิทธิ์ read + write ไฟล์อื่นที่คุณควรใช้สิทธิ์ในการอ่าน + การดำเนินการ
สิทธิ์ของไฟล์คือ 644 เรียกใช้รหัสด้านล่างในไดเรกทอรีรากโดยใช้ ssh หา
-type f -exec chmod 644 {} \;
สิทธิ์โฟลเดอร์คือ 755 เรียกใช้รหัสด้านล่างในไดเรกทอรีรากโดยใช้ ssh หา
-type d -exec chmod 755 {} \;
สิทธิ์โฟลเดอร์ Var คือ 777 เรียกใช้รหัสด้านล่างในไดเรกทอรีรากโดยใช้ ssh
chmod -R 777 var
สิทธิ์โฟลเดอร์แบบคงที่คือ 777 เรียกใช้รหัสด้านล่างในไดเรกทอรีรากโดยใช้ ssh
chmod -R 777 pub/static
สิทธิ์การใช้โฟลเดอร์สื่อคือ 777 เรียกใช้รหัสด้านล่างในไดเรกทอรีรากโดยใช้ ssh
chmod -R 777 pub/media
จากที่นี่: http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html
find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;
find var/ -type f -exec chmod 600 {} \;
find media/ -type f -exec chmod 600 {} \;
find var/ -type d -exec chmod 700 {} \;
find media/ -type d -exec chmod 700 {} \;
chmod 700 includes
chmod 600 includes/config.php