ฉันควรอนุญาตอะไรให้ / var และ / media


21

ฉันเข้าใจว่า magento บอกว่ามี/ varและ/ mediaที่700สำหรับโฟลเดอร์และ600สำหรับไฟล์ แต่เมื่อฉันทำเช่นนี้จะแบ่งบางส่วนของเว็บไซต์ของฉัน ฉันอยากรู้ว่าสิ่งใดที่คนส่วนใหญ่ใช้สิทธิ์สำหรับโฟลเดอร์เหล่านี้


คุณอ่านมาจากที่ไหน ด้วย 700?
FlorinelChis

คำตอบ:


18

ฉันไม่เห็นการพูดถึงการใช้ 700 และ 600 มากนัก แต่เป็นคำแนะนำที่ดี น่าเสียดายที่การตั้งค่าเซิร์ฟเวอร์ทุกครั้งนั้นแตกต่างกันและต้องมีการชั่งน้ำหนักเทียบกับความสะดวกสบาย (การเข้าถึงของผู้ใช้เพื่ออัปเดต / แก้ไขไฟล์)

แนวทางพื้นฐานควรที่จะให้น้อยที่สุดเท่าที่จะทำได้และล็อคให้มากที่สุดเท่าที่จะทำได้ (700/600 ดีสำหรับเรื่องนี้) ในกรณีที่คำแนะนำ "ทางการ" ของ wiki ต้องการนำไปใช้กับสถานการณ์ให้ได้มากที่สุดและแนะนำการอนุญาตการอ่านสำหรับทุกคน (ซึ่งหมายถึงบริการอื่น ๆ ที่ถูกบุกรุกบนเซิร์ฟเวอร์นั้นจะสามารถอ่านแอพ / etc / local ได้ xml ด้วยการกำหนดค่า db ของคุณ)

ในกรณีของคุณในขณะนี้ดูเหมือนว่าไฟล์จะเป็นของผู้ใช้ที่แตกต่างจากกระบวนการเว็บเซิร์ฟเวอร์ / php ของคุณทำงาน การเปลี่ยนความเป็นเจ้าของไฟล์เป็นเว็บเซิร์ฟเวอร์ควรแก้ไขปัญหาเดิมของคุณ

โปรดทราบว่าการใช้ 700/600 และการกำหนดไฟล์ให้กับเว็บเซิร์ฟเวอร์หมายความว่าผู้ใช้ปกติของคุณจะไม่สามารถแก้ไขไฟล์ได้

ด้านล่างฉันรู้สึกว่าประนีประนอมที่ดีสำหรับความสะดวกสบายเทียบกับล็อค ไฟล์ทั้งหมดเป็นของผู้ใช้: webservergroup

var และสื่อ 770/660
เซิร์ฟเวอร์และผู้ใช้ของคุณได้รับอนุญาตให้อ่านและเขียนจากโฟลเดอร์ var และสื่อ (เซสชัน / แคช / รูปภาพ)

ที่เหลือ 750/640
ผู้ใช้ของคุณสามารถแก้ไข / อัปเดตรหัสได้
เว็บเซิร์ฟเวอร์สามารถอ่านไฟล์เพื่อเรียกใช้งาน / แสดงผลได้


2
เกือบสองปีต่อมาและตอนนี้ฉันเห็นด้วยมากกว่าคำตอบของฉันเอง
philwinkle

ฉันรู้ว่าฉันไม่เคยตอบสนองต่อสิ่งนี้และปัญหาที่ฉันมีคือไฟล์นั้นไม่ได้เป็นของเว็บเซิร์ฟเวอร์ ฉันยังได้ขอให้ล้างการอนุญาตเพื่อให้ได้มาตรฐานมากขึ้นเนื่องจากฉันกำลังอ่านสิ่งต่าง ๆ
Egregory

18

โดยทั่วไปไฟล์ทั้งหมดที่ควรจะเป็น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


5

ในขณะที่วิธีการแก้ปัญหาของ 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


3
คุณมีความถูกต้องอย่างแท้จริงเกี่ยวกับคำศัพท์ที่เกี่ยวข้องกับผู้ใช้เว็บเซิร์ฟเวอร์และผู้ใช้ php จุดที่ดี แม้ว่าหนึ่งมีการสงสัยว่าคนที่ถามถึงวิธีการเปลี่ยนสิทธิ์จะรู้ว่าพวกเขาใช้ PHP FPM หรือไม่ ...
philwinkle

1

/ var - magento ใช้เพื่อเขียนแคชเซสชันและข้อมูลอื่น ๆ

/ media - magento ใช้สำหรับอัปโหลดภาพผลิตภัณฑ์, ภาพหมวดหมู่ (ภาพทุกประเภท)

ดังนั้นทั้งสองโฟลเดอร์คุณควรใช้สิทธิ์ read + write ไฟล์อื่นที่คุณควรใช้สิทธิ์ในการอ่าน + การดำเนินการ


1

สิทธิ์ของไฟล์คือ 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

2
ข้างต้นไม่ใช่สิ่งที่ OP ถามนี่สำหรับ Magento 2.x ไม่ใช่สำหรับ Magento 1.7
Frank Groot

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.