Magento 2 फ़ोल्डर / फ़ाइल अनुमतियाँ


61

मुझे संदेह है कि अनुमति मेरे Magento 2 स्थापना पर गड़बड़ हो सकती है। पुराने संस्करणों पर मैं फोल्डर बनाने के लिए निम्न कमांड चलाऊंगा 755 और फाइल 644:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

क्या आप मुझे बता सकते हैं कि मैगेंटो 2 के लिए सही फ़ाइल और फ़ोल्डर की अनुमति क्या है क्योंकि वे अलग-अलग प्रतीत होते हैं? इसके अलावा, अगर कुछ विशेष फ़ोल्डर या फाइलें हैं जिन्हें अलग-अलग अनुमतियों की आवश्यकता होगी।


777 की कोशिश करें कि बैकअप लेने से पहले
Magento 2

मेरे सर्वर का PHP हैंडलर suPHP है और मैं वास्तव में हर चीज को 777 असाइन नहीं करना चाहता क्योंकि यह व्यावहारिक रूप से मेरी वेबसाइट को किसी के लिए खोल देगा। क्या अधिक विशिष्ट अनुमतियाँ हैं जिन्हें असाइन किया जा सकता है?
नेकॉय 20

Magento के पास फ़ोल्डर की फाइल अनुमति 775 पर है और फ़ाइलों की अनुमति के लिए 644 पर सेट है
ऋषभ आरके राय

FYI करें, अगर मैगेंटो 2 एक "होम" डायरेक्टरी में है, var/cacheऔर pub/staticपर्याप्त बिट सेट की आवश्यकता है। मैंने इस्तेमाल किया: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
क्रिस के

जवाबों:


117

आप http://devdocs.magento.com/ का संदर्भ ले सकते हैं

महत्वपूर्ण बातें:

Magento फ़ाइल सिस्टम का स्वामी: सभी फ़ाइलों और निर्देशिकाओं का पूर्ण नियंत्रण (पढ़ना / लिखना / निष्पादित करना) होना चाहिए।

वेब सर्वर उपयोगकर्ता नहीं होना चाहिए; यह एक अलग उपयोगकर्ता होना चाहिए।

वेब सर्वर उपयोगकर्ता के पास निम्न फ़ाइलों और निर्देशिकाओं तक पहुंच होनी चाहिए: var app / etc pub (और शायद 2.2.1 :) में नया था

इसके अलावा, वेब सर्वर के समूह के पास Magento फाइल सिस्टम होना चाहिए ताकि Magento उपयोगकर्ता (जो समूह में है) वेब सर्वर उपयोगकर्ता के साथ फाइलों तक पहुंच साझा कर सके। (इसमें Magento Admin या अन्य वेब-आधारित उपयोगिताओं द्वारा बनाई गई फ़ाइलें शामिल हैं।)

हम निम्नानुसार अनुमतियाँ निर्धारित करने की सलाह देते हैं:

All directories have 770 permissions.

770 permissions give full control (that is, read/write/execute) to the owner and to the group and no permissions to anyone else.

All files have 660 permissions.

660 permissions mean the owner and the group can read and write but other users have no permissions.

आपको सुझाए गए बॉटल के रूप में सेट करना चाहिए।

cd <your Magento install dir> 

find . -type f -exec chmod 644 {} \;                        // 644 permission for files

find . -type d -exec chmod 755 {} \;                        // 755 permission for directory 

find ./var -type d -exec chmod 777 {} \;                // 777 permission for var folder    

find ./pub/media -type d -exec chmod 777 {} \;

find ./pub/static -type d -exec chmod 777 {} \;

chmod 777 ./app/etc

chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

chmod u+x bin/magento

उम्मीद है इससे आपको मदद मिलेगी।


3
यह केवल मेरे साथ काम करता है \;, जैसे:find ./var -type d -exec chmod 777 {} \;
bpoiss

1
लेकिन यह विकास मोड के लिए है। उत्पादन के लिए यह समूह-पठनीय होना चाहिए - यह नहीं पता कि यह कैसे काम करना चाहिए
एलेक्स

3
मुझे लगता है कि आपको chmod u+x bin/magentoकंसोल कमांड को निष्पादित करने में सक्षम होने की भी आवश्यकता है।
वोल्वोक्स

42
दोस्तों दोस्तों 777
डैरेन फेल्टन

6
app / etc 777> हाहा अच्छा। हैक करने योग्य आसान। app / etc में आपकी db जानकारी होती है
CompactCode

19

कुछ दुर्लभ मामलों में, आप 770 और 660 का उपयोग नहीं कर सकते हैं, जैसे @MagenX कहते हैं, 755 और 644 भी आपकी आवश्यकता की अनुमति हो सकती है। (कुछ फास्ट-सीजीआई उपयोगकर्ता मुझे लगता है)

तो उस स्थिति में, आप चलाते हैं:

find . -type d -exec chmod 755 {} \; && find . -type f -exec chmod 644 {} \; && chmod u+x bin/magento

यह ठीक करने के लिए लगता है, लेकिन अगर Magento नई फाइलें या निर्देशिका बनाता है, तो उन्हें फिर से 770 और 660 की अनुमति होगी। आप निम्न फ़ाइलों में उन डिफ़ॉल्ट chmod मानों को संपादित कर सकते हैं:

/vendor/magento/framework/Filesystem/DriverInterface.php 
(WRITEABLE_DIRECTORY_MODE and WRITEABLE_FILE_MODE)

/lib/internal/Cm/Cache/Backend/File.php 
(directory_mode and file_mode)

इन परिवर्तनों के बाद, पहले कमांड को फिर से चलाएं और उसके बाद, नई उत्पन्न फाइलें अब कोई समस्या नहीं होनी चाहिए।

नोट: इस तरह से फाइलों को संपादित करना कभी भी अच्छा विचार नहीं है, लेकिन मुझे संदेह है कि भविष्य में ये चोमॉड विकल्प कॉन्फ़िगर करने योग्य हैं, इसलिए मैंने आसान तरीका अपनाया।


1
कठबोली /lib/internal/Cm/Cache/Backend/File.php M231 पर
snh_nl

@snh_nl नए Magento संस्करण में, वे अनुमति नहीं देते हैं यदि वे करते हैं, तो ऐसा लगता है कि वे 775 का उपयोग करते हैं। एक ताजा स्थापना के बाद आप बस चला सकते हैं: खोजें। -Type f -exec chmod 664 {} \; खोजो। -टाइप d -exec chmod 775 {} \; find ./var -type d -exec chmod 777 {} \; find ./pub/media -type d -exec chmod 777 {} \; find ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento जड़ में और आप ठीक होना चाहिए।
डैनियल वैन डेर गार्डे

11

आप मैगेंटो प्रलेखन की सिफारिश की तरह विधि का उपयोग कर सकते हैं :

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
find var pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
chmod u+x bin/magento

विंडोज़ में उत्पन्न फ़ोल्डर को लिखित अनुमति कैसे दें? @Rafael Corrêa गोम्स
zus

8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

स्थानीय विकास सेट pubऔर var775 या 777 के लिए


क्यों? (एक टिप्पणी की लंबाई के लिए न्यूनतम है)
vitoriodachef

7

यदि आप SELinux in (जैसे CentOS) का उपयोग कर रहे हैं, तो प्रयास करें:

sudo chcon -R -t httpd_sys_rw_content_t var

(पाठ्यक्रम के Magento रूट फ़ोल्डर से)


6

Magento के समुदाय में सलाह देते हैं

हम निम्नानुसार अनुमतियाँ निर्धारित करने की सलाह देते हैं:

सभी निर्देशिकाओं में 770 अनुमतियां हैं। 770 अनुमतियाँ मालिक और समूह को पूर्ण नियंत्रण देती हैं (यानी, पढ़ना / लिखना / निष्पादित करना) और किसी और को कोई अनुमति नहीं।

सभी फाइलों में 660 अनुमतियां हैं। 660 अनुमतियों का मतलब है कि मालिक और समूह पढ़ और लिख सकते हैं लेकिन अन्य उपयोगकर्ताओं के पास कोई अनुमति नहीं है।

अधिक जानकारी के लिए इस लिंक https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html


4

4

इस सामग्री को अपने रूट फ़ोल्डर के अंदर रखें, फिर इसे कंसोल से निष्पादित करें।

न भूलना chmod +x yourfile.sh

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

मैं यह कोड कैसे डाल सकता हूं? htacces या php फ़ाइल के रूप में
मिलान करें

इससे बचें, यह मूल रूप से आपके वेबसर्वर डायरेक्टरी को जनता के लिए खोल रहा है। इसके बजाय अपने चलने वाले संस्करण को ठीक से सुरक्षित करने के लिए मैगेंटो द्वारा प्रदान किए गए डिडॉक्स को पढ़ें।
themanwhoknowstheman

4

कोई विशेष अनुमति नहीं, आप बस सुनिश्चित करें कि उपयोगकर्ता जो php चलाते हैं या cPanel - cpanel उपयोगकर्ता और उसी समूह के मामले में स्वामित्व रखते हैं

इसलिए आपकी आज्ञा अच्छी है:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

बस अद्यतन फ़ाइलें मालिक:

chown -R user:user *

userमालिक कहां है, userजो php चलाता है।

अनुमतियों को हर बार बदलने के बजाय, लॉगिन / काम उचित उपयोगकर्ता के रूप में, फ़ाइल मालिक, रूट से उपयोगकर्ता के लिए:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd

विंडोज़ में उत्पन्न फ़ोल्डर को लिखित अनुमति कैसे दें? @MagenX
zus

3
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

इसके अलावा विस्तृत जानकारी http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html पर उपलब्ध है


5
Magento 2
Flipmedia

0

मैं Plesk गोमेद 17.8.11 पर CentOS Linux 7.4.1708 के लिए इस तरह से हल किया

find . -type f -exec chmod 644 {} \; &&  find . -type d -exec chmod 755 {} \; && find ./var -type d -exec chmod 777 {} \; && find ./pub/media -type d -exec chmod 777 {} \; && find ./pub/static -type d -exec chmod 777 {} \; && chmod 777 ./app/etc  && chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

आपको फ़ाइलों और निर्देशिकाओं पर 777 का उपयोग करने से बचना चाहिए। यह अनावश्यक सुरक्षा जोखिम के लिए आपकी दुकान खोलता है। इसके बजाय, अपने चलने वाले संस्करण के लिए मैगेंटो द्वारा दिए गए डॉक्स को पढ़ें।
थीमनोक्वनस्टीमैन

0

इन आदेशों को एक मूल उपयोगकर्ता के रूप में निष्पादित करें। यदि आप पहले ही 777 अनुमति दे चुके हैं, तो पहले दो आदेशों का उपयोग करके इसे फिर से जारी करें, बाकी के साथ आगे बढ़ें।

find . -type f -exec chmod 664 {} \;

find . -type d -exec chmod 775 {} \;

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +

find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +

Magento उपयोगकर्ता और वेब उपयोगकर्ता का उपयोग करने के लिए स्वामित्व सेट करें

sudo chown -R <Magento user>:<web server group> .

इन आदेशों को चलाने से Magento रूट में फ़ोल्डर्स और फ़ाइलों के लिए अनुमति दी जाती है और नई फ़ाइलों के लिए var, पब और जेनरेट की गई निर्देशिकाओं में बनाया जाता है।

रूट उपयोगकर्ता के रूप में किसी भी कमांड को न चलाएं क्योंकि यह नई स्थिर फ़ाइलों को रूट स्वामित्व के साथ बनाने का कारण बन सकता है जो वेब उपयोगकर्ता को ऐसी फ़ाइलों तक पहुंचने से रोक सकता है जो आपको 777 अनुमति प्रदान करने के लिए मजबूर करते हैं। कृपया किसी भी मामले में 777 की अनुमति न दें तो कृपया इसे वापस लौटाएं । Magento के उपयोगकर्ता के रूप में Magento कमांड चलाते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.