Uprawnienia do folderu / pliku Magento 2

61

Podejrzewam, że uprawnienia mogły zostać pomieszane w mojej instalacji Magento 2. W starych wersjach uruchomiłbym następujące polecenie, aby utworzyć foldery 755 i pliki 644:

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

Czy możesz dać mi znać, jakie są prawidłowe uprawnienia do plików i folderów dla Magento 2, ponieważ wydają się one różne? Ponadto, jeśli istnieją określone foldery lub pliki, które wymagałyby różnych uprawnień.

Neekoy
źródło
Wypróbuj uprawnienia 777, zanim wykonasz kopię zapasową
Magento 2
Program obsługi PHP mojego serwera to suPHP i tak naprawdę nie chcę przypisywać 777 do wszystkiego, ponieważ praktycznie otworzyłoby to moją stronę dla każdego. Czy można przypisać bardziej szczegółowe uprawnienia?
Neekoy
Magento ma uprawnienia do plików w folderach do 775, a do uprawnień do plików ustawiono na 644
Rishabh Rk Rai
Do Twojej wiadomości, jeśli magento 2 znajduje się w katalogu „domowym” var/cachei pub/staticpotrzebujesz zestawu bitów suid. Użyłem: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Odpowiedzi:

117

możesz polecić http://devdocs.magento.com/

Ważne rzeczy:

Właściciel systemu plików Magento: Musi mieć pełną kontrolę (odczyt / zapis / wykonanie) wszystkich plików i katalogów.

Nie może być użytkownikiem serwera WWW; powinien to być inny użytkownik.

Użytkownik serwera WWW musi mieć dostęp do zapisu do następujących plików i katalogów: var app / etc pub (i prawdopodobnie nowy w wersji 2.2.1 :) wygenerowany

Ponadto grupa serwera WWW musi być właścicielem systemu plików Magento, aby użytkownik Magento (należący do grupy) mógł udostępniać dostęp do plików użytkownikowi serwera WWW. (Dotyczy to plików utworzonych przez Magento Admin lub inne narzędzia internetowe).

Zalecamy ustawienie uprawnień w następujący sposób:

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.

Powinieneś ustawić zgodnie z zaleceniami poniżej.

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

Mam nadzieję, że to Ci pomoże.

denish vachhani
źródło
3
Działa tylko dla mnie \;, np .:find ./var -type d -exec chmod 777 {} \;
bpoiss
1
Ale to jest tryb programowania. W przypadku produkcji powinno to być tylko do odczytu grupowego - nie mam pojęcia, jak to powinno działać
Alex
3
Myślę, że musisz także chmod u+x bin/magentobyć w stanie wykonywać polecenia konsoli.
Volvox,
42
przyjaciele nie pozwalają przyjaciołom 777
Darren Felton
6
app / etc 777> Haha fajnie. Łatwo zhakować. Aplikacja / etc zawiera informacje o bazie danych
CompactCode
19

W niektórych rzadkich przypadkach nie można używać 770 i 660, jak mówi @MagenX, 755 i 644 mogą być również potrzebnymi uprawnieniami. (Myślę, że niektórzy użytkownicy Fast-CGI)

W takim przypadku uruchamiasz:

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

Wydaje się, że to naprawia, ale jeśli Magento wygeneruje nowe pliki lub katalogi, będą miały ponownie uprawnienia 770 i 660. Możesz edytować te domyślne wartości chmod w następujących plikach:

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

Po tych zmianach uruchom ponownie pierwsze polecenie, a następnie nowo wygenerowane pliki nie powinny już stanowić problemu.

Uwaga: Edytowanie takich plików nigdy nie jest dobrym pomysłem, ale podejrzewam, że te opcje chmod będą konfigurowalne w przyszłości, więc wybrałem prosty sposób.

Daniel van der Garde
źródło
1
Nie mogę znaleźć /lib/internal/Cm/Cache/Backend/File.php na
M231
@ snh_nl W nowszej wersji Magento nie ustawiają już uprawnień, jeśli tak, wygląda na to, że używają 775. Po nowej instalacji możesz po prostu uruchomić: find. -type f -exec chmod 664 {} \; odnaleźć . -type d -exec chmod 775 {} \; znajdź ./var -type d -exec chmod 777 {} \; znajdź ./pub/media -type d -exec chmod 777 {} \; znajdź ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento W katalogu głównym powinno być dobrze.
Daniel van der Garde
11

Możesz użyć metody zalecanej przez dokumentację Magento :

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 Gomes
źródło
Jak udzielić zgody na zapis do wygenerowanego folderu w systemie Windows? @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

Dla zestawu lokalnego rozwoju pubi varna 775 lub 777

Ethan L.
źródło
dlaczego? (Długość komentarza jest minimalna)
vitoriodachef 18.10.18
7

Jeśli używasz SELinux ̣ (np. CentOS), spróbuj:

sudo chcon -R -t httpd_sys_rw_content_t var

(oczywiście z folderu głównego magento)

HausO
źródło
6

W społeczności Magento polecam

Zalecamy ustawienie uprawnień w następujący sposób:

Wszystkie katalogi mają 770 uprawnień. 770 uprawnień daje pełną kontrolę (to znaczy, odczyt / zapis / wykonanie) właścicielowi i grupie, a także nikomu innemu.

Wszystkie pliki mają 660 uprawnień. 660 uprawnień oznacza, że ​​właściciel i grupa mogą czytać i pisać, ale inni użytkownicy nie mają uprawnień.

Aby uzyskać więcej informacji, zobacz ten link https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html

Magento 2
źródło
4

Umieść tę zawartość w folderze głównym, a następnie uruchom ją za pomocą konsoli.

Nie zapomnij chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/
Sheshgiri Anvekar
źródło
jak mogę umieścić ten kod? jako plik htacces lub php
matinict
Unikaj tego, to po prostu sprawia, że ​​twój katalog serwera WWW jest otwarty dla publiczności. zamiast tego przeczytaj devdocs dostarczone przez magento, aby odpowiednio zabezpieczyć wersję działającą.
themanwhoknowstheman
4

bez specjalnych uprawnień, po prostu upewnij się, że pliki należące do użytkownika, który uruchamia php lub w przypadku cPanel - użytkownik cpanel i ta sama grupa

więc twoje polecenie jest dobre:

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

po prostu zaktualizuj właściciela plików:

chown -R user:user *

gdzie userjest właściciel, userktóry prowadzi php.

zamiast za każdym razem zmieniać uprawnienia, zaloguj się / pracuj jako właściwy użytkownik, właściciel plików, z konta root na użytkownika:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd
MagenX
źródło
Jak udzielić zgody na zapis do wygenerowanego folderu w systemie Windows? @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

Również szczegółowe informacje są dostępne na stronie: http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html

Rushvi
źródło
5
Pytanie wzywa do
uzyskania porady
0

Rozwiązałem w ten sposób dla CentOS Linux 7.4.1708 na Plesk Onyx 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> .
Altravista
źródło
Należy unikać używania 777 do plików i katalogów. Otwiera Twój sklep na niepotrzebne ryzyko bezpieczeństwa. Zamiast tego przeczytaj dokumentację dostarczoną przez magento dla używanej wersji.
themanwhoknowstheman
0

Wykonaj te polecenia jako użytkownik root. Jeśli dałeś już 777 uprawnienia, przywróć je, używając dwóch pierwszych poleceń, kontynuuj z resztą.

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

Ustaw własność na użytkownika Magento i użytkownika sieci za pomocą

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

Uruchomienie tych poleceń ustawia uprawnienia do folderów i plików w katalogu głównym Magento oraz do tworzenia nowych plików w var, pub i wygenerowanych katalogach.

Nie uruchamiaj żadnych poleceń jako użytkownik root, ponieważ może to spowodować utworzenie nowych plików statycznych z prawami administratora, co może uniemożliwić użytkownikowi dostęp do takich plików, zmuszając Cię do udzielenia uprawnienia 777. W żadnym wypadku nie udzielaj uprawnień 777, jeśli więc proszę cofnij to do tyłu. Więc uruchom komendy Magento jako użytkownik Magento .

Raj Mohan R.
źródło