Magento 2 klasör / dosya izinleri


61

Magento 2 kurulumumda izinlerin bozulmuş olabileceğinden şüpheleniyorum. Eski sürümlerde, 755 klasörlerini ve 644 dosyalarını yapmak için aşağıdaki komutu çalıştırırdım:

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

Farklı göründüğü için Magento 2 için doğru dosya ve klasör izinlerinin ne olduğunu bana bildirir misiniz? Ayrıca, farklı izinlere ihtiyaç duyacak belirli klasörler veya dosyalar varsa.


Bu yedeklemeden önce 777 İzin'i deneyin
Magento 2

Sunucumun PHP işleyicisi suPHP ve gerçekten web sitemi hiç kimseye açmayacağından 777'ye her şeyi vermek istemiyorum. Atanabilecek daha özel izinler var mı?
Neekoy

Magento, klasörlerde 775'e ve dosya izninde
644'e

FYI, eğer magento 2 bir "home" dizinindeyse var/cacheve pub/staticset-in bit kümesi gerekiyor. Ben kullandım:find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K 19

Yanıtlar:


117

http://devdocs.magento.com/ adresine başvurabilirsiniz.

Önemli şeyler:

Magento dosya sisteminin sahibi: Tüm dosya ve klasörlerin tam kontrolüne sahip olmalı (okuma / yazma / yürütme).

Web sunucusu kullanıcısı olmamalıdır; farklı bir kullanıcı olmalı.

Web sunucusu kullanıcısı aşağıdaki dosyalara ve dizinlere yazma erişimine sahip olmalıdır: var app / etc pub (ve muhtemelen 2.2.1 :) 'de yeni üretildi

Ek olarak, web sunucusunun grubunun Magento dosya sistemine sahip olması gerekir, böylece Magento kullanıcısı (grupta olan) dosyalara erişimi web sunucusu kullanıcısıyla paylaşabilir. (Bu, Magento Yöneticisi veya diğer web tabanlı yardımcı programlar tarafından oluşturulan dosyaları içerir.)

İzinleri aşağıdaki gibi ayarlamanızı öneririz:

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.

Tavsiye edilen feryat olarak ayarlamalısınız.

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

Umarım bu sana yardımcı olmuştur.


3
Sadece benim için çalışıyor \;, örneğin:find ./var -type d -exec chmod 777 {} \;
bpoiss

1
Ancak bu geliştirme modu içindir. Üretim için, salt okunur olmalı
Alex,

3
chmod u+x bin/magentoKonsol komutlarını da yürütebilmeniz gerektiğini düşünüyorum .
Volvox 11

42
arkadaşlar izin vermeyin arkadaşlar 777
Darren Felton

6
app / etc 777> Güzel haha. Hackable kolay. app / etc db bilgilerinizi içerir
CompactCode

19

Bazı nadir durumlarda, 770 ve 660'ı kullanamazsınız, @MagenX'in dediği gibi, 755 ve 644 de ihtiyacınız olan izin olabilir. (Bazı Hızlı-CGI kullanıcıları sanırım)

Yani bu durumda, sen koşmak:

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

Bu gibi görünüyor, ancak Magento yeni dosyalar veya dizinler oluşturursa, yine 770 ve 660 iznine sahip olacaklar. Bu varsayılan chmod değerlerini aşağıdaki dosyalarda düzenleyebilirsiniz:

/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)

Bu değişikliklerden sonra ilk komutu tekrar çalıştırın ve bundan sonra yeni oluşturulan dosyalar artık sorun olmamalıdır.

Not: Bunun gibi dosyaları düzenlemek hiç iyi bir fikir değildir, ancak bu chmod seçeneklerinin gelecekte yapılandırılabilir olacağından şüpheleniyorum, bu yüzden kolay yoldan geldim.


1
Bulamadık / lib/internal/Cm/Cache/Backend/File.php M231 üzerinde
snh_nl

@snh_nl Daha yeni Magento sürümlerinde, izinleri artık onlar yaparsa, 775 kullanıyormuş gibi görünüyorlar. Taze bir kurulumdan sonra sadece çalıştırabilirsiniz: find. türü f -exec chmod 664 {} \; Bul türü d -exec chmod 775 {} \; Bulun ./var -tip d -exec chmod 777 {} \; Bulun ./pub/media -type d -exec chmod 777 {} \; Bulun ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento Kökte ve iyi olmalısınız.
Daniel van der Garde

11

Magento belgelerinin önerdiği gibi yöntemi kullanabilirsiniz :

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

Windows'da oluşturulan klasöre yazma izni nasıl verilir? @Rafael Corrêa Gomes
zus

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

Yerel gelişim için pubve var775 veya 777


neden? (Bir yorum uzunluğu için minimum düzeyde)
vitoriodachef

7

SELinux ̣ kullanıyorsanız (örneğin CentOS):

sudo chcon -R -t httpd_sys_rw_content_t var

(elbette magento kök klasöründen)


6

Magento Topluluğu'nda tavsiye

İzinleri aşağıdaki gibi ayarlamanızı öneririz:

Tüm rehberler var 770 izinleri. 770 izinler, sahibine ve gruba tam denetim (yani okuma / yazma / yürütme) verir ve başkasına izin verilmez.

Tüm dosyalar var 660 izinleri. 660 izin, sahip ve grubun okuyabilir ve yazabileceği anlamına gelir, ancak diğer kullanıcıların izinleri yoktur.

Daha fazla ref için bu bağlantı https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html



4

Bu içeriği kök klasörünüze yerleştirin, ardından konsolla yürütün.

Unutma chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

bu kodu nasıl koyabilirim? htacces veya php dosyası olarak
matinict

Bundan kaçının, temelde web sunucusu dizini halka açıktır. bunun yerine, çalışmakta olduğunuz sürümü uygun şekilde korumak için magento tarafından sağlanan devdocs kodlarını okuyun.
themanwhoknowstheman

4

özel izin yok, yalnızca php çalıştıran bir kullanıcının veya cPanel - cpanel kullanıcısı ve aynı grup durumunda çalışanların sahip olduklarından emin olun

bu yüzden emriniz iyi:

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

sadece dosya sahibini güncelle:

chown -R user:user *

php çalışan usersahibi nerede user.

Her zaman izinleri değiştirmek yerine, roottan kullanıcıya doğru kullanıcı, dosya sahibi olarak oturum açın / çalışın:

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

Windows'da oluşturulan klasöre yazma izni nasıl verilir? @MagenX
zus


0

Plesk Onyx'te CentOS Linux 7.4.1708 için bu şekilde çözdüm 17.8.11

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'yi dosya ve dizinlerde kullanmaktan kaçınmalısınız. Gereksiz güvenlik riskine dükkanınızı açar. Bunun yerine, yayınladığınız sürüm için magento tarafından sağlanan belgeleri okuyun.
themanwhoknowstheman 5:18

0

Bu komutları kök kullanıcı olarak yürütün. Eğer 777 izni vermişseniz, ilk iki komutu kullanarak geri döndürün, gerisi ile devam edin.

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 {} +

Sahipliğini kullanarak Magento kullanıcısı ve web kullanıcısı olarak ayarlayın.

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

Bu komutları çalıştırmak, Magento kökündeki klasörler ve dosyalar ile var, pub ve oluşturulan dizinlerde oluşturulacak yeni dosyalar için izin verir.

Kök kullanıcısı olarak herhangi bir komutu çalıştırmayın , çünkü yeni statik dosyaların kök sahipliğinde oluşturulmasına neden olabilir, bu da web kullanıcısının sizi 777 izin vermeye zorlayan dosyalara erişmesini engelleyebilir bu nedenle lütfen geri alın. Magento komutlarını Magento kullanıcısı olarak çalıştırın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.