Autorizzazioni per cartella / file Magento 2


61

Ho il sospetto che le autorizzazioni potrebbero essere state incasinate sulla mia installazione di Magento 2. Nelle vecchie versioni avrei eseguito il seguente comando per creare cartelle 755 e file 644:

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

Potete per favore fatemi sapere quali sono le autorizzazioni corrette per file e cartelle per Magento 2 poiché sembrano essere diverse? Inoltre, se ci sono alcune cartelle o file particolari che richiederebbero autorizzazioni diverse.


Prova l'autorizzazione 777 prima di eseguire il backup
Magento 2

Il gestore PHP del mio server è suPHP e non voglio davvero assegnare 777 a tutto poiché questo praticamente aprirebbe il mio sito Web a chiunque. Esistono autorizzazioni più specifiche che possono essere assegnate?
Neekoy,

Magento ha il permesso di file su cartelle su 775 e per il permesso di file impostato su 644
Rishabh Rk Rai

Cordiali saluti, se magento 2 si trova in una directory "home" var/cachee pub/staticnecessita di set di bit di suid. Ho usato: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K il

Risposte:


118

puoi fare riferimento a http://devdocs.magento.com/

Le cose importanti:

Il proprietario del file system Magento: deve avere il pieno controllo (lettura / scrittura / esecuzione) di tutti i file e le directory.

Non deve essere l'utente del web server; dovrebbe essere un utente diverso.

L'utente del server Web deve avere accesso in scrittura ai seguenti file e directory: var app / etc pub (e probabilmente nuovo in 2.2.1 :) generato

Inoltre, il gruppo del server Web deve possedere il file system Magento in modo che l'utente Magento (che è nel gruppo) possa condividere l'accesso ai file con l'utente del server web. (Ciò include i file creati dall'amministratore Magento o altre utilità basate sul Web.)

Si consiglia di impostare le autorizzazioni come segue:

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.

Si consiglia di impostare come indicato di seguito.

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

Spero che questo ti possa aiutare.


3
Funziona solo con me \;, ad esempio:find ./var -type d -exec chmod 777 {} \;
bpoiss,

1
Ma questo è per la modalità di sviluppo. Per la produzione dovrebbe essere di sola lettura di gruppo - non ho idea di come dovrebbe funzionare
Alex

3
Penso che anche tu debba chmod u+x bin/magentoessere in grado di eseguire i comandi della console.
Volvox,

43
gli amici non lasciano che gli amici 777
Darren Felton

6
app / etc 777> Haha bello. Hackable facile. app / etc contiene le informazioni del tuo db
CompactCode

19

In alcuni rari casi, non puoi usare 770 e 660, come dice @MagenX, anche 755 e 644 potrebbero essere l'autorizzazione di cui hai bisogno. (Suppongo che alcuni utenti di Fast-CGI)

Quindi in quel caso, esegui:

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

Ciò sembra risolverlo, ma se Magento genera nuovi file o directory, questi avranno nuovamente l'autorizzazione 770 e 660. È possibile modificare i valori chmod predefiniti nei seguenti file:

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

Dopo queste modifiche, eseguire nuovamente il primo comando e, successivamente, i file appena generati non dovrebbero più essere un problema.

Nota: modificare file come questo non è mai una buona idea, ma sospetto che queste opzioni di chmod saranno configurabili in futuro, quindi ho preso la via più semplice.


1
Impossibile trovare /lib/internal/Cm/Cache/Backend/File.php su M231
snh_nl

@snh_nl Nella versione più recente di Magento, se non lo fanno non impostano più le autorizzazioni, sembra che utilizzino 775. Dopo una nuova installazione puoi semplicemente eseguire: find. -type f -exec chmod 664 {} \; trova . -type 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 Nella radice e dovresti andare bene.
Daniel van der Garde,

11

Puoi usare il metodo come raccomandato dalla documentazione di 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

Come dare l'autorizzazione di scrittura alla cartella generata in 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

Per set di sviluppo locale pube varsu 775 o 777


perché? (C'è un minimo per la lunghezza di un commento)
vitoriodachef

7

Se stai usando SELinux ̣ (es. CentOS) prova:

sudo chcon -R -t httpd_sys_rw_content_t var

(ovviamente dalla cartella principale di Magento)


6

In Magento Community lo consiglio

Si consiglia di impostare le autorizzazioni come segue:

Tutte le directory hanno 770 autorizzazioni. Le autorizzazioni 770 danno il pieno controllo (ovvero lettura / scrittura / esecuzione) al proprietario e al gruppo e nessuna autorizzazione a nessun altro.

Tutti i file hanno 660 autorizzazioni. 660 autorizzazioni indicano che il proprietario e il gruppo possono leggere e scrivere ma altri utenti non dispongono di autorizzazioni.

Per ulteriori informazioni, consultare questo link https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html



4

Inserisci questo contenuto nella cartella principale, quindi eseguilo con la console.

Non dimenticare di chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/

come posso inserire questo codice? come file htacces o php
matinict

Evita questo, fondamentalmente sta aprendo la tua directory web server al pubblico. leggi invece i devdocs forniti da magento per proteggere correttamente la versione in esecuzione.
themanwhokststman

4

nessuna autorizzazione speciale, devi solo assicurarti che i file siano di proprietà dell'utente che esegue php o in caso di cPanel - utente cpanel e stesso gruppo

quindi il tuo comando è buono:

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

basta aggiornare il proprietario dei file:

chown -R user:user *

dov'è useril proprietario, userche gestisce php.

invece di modificare le autorizzazioni ogni volta, accedi / lavora come utente corretto, proprietario dei file, da root a utente:

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

Come dare l'autorizzazione di scrittura alla cartella generata in Windows? @MagenX
zus


0

ho risolto in questo modo per CentOS Linux 7.4.1708 su 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> .

Dovresti evitare di usare 777 su file e directory. Apre il tuo negozio a inutili rischi per la sicurezza. Leggi invece i documenti forniti da Magento per la versione in esecuzione.
themanwhokststman

0

Eseguire questi comandi come utente root. Se hai già dato il permesso 777 ripristinalo usando i primi due comandi altrimenti procedi con il resto.

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

Impostare la proprietà per l'utente Magento e l'utente Web utilizzando

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

L'esecuzione di questi comandi imposta l'autorizzazione per cartelle e file nella radice di Magento e per la creazione dei nuovi file in var, pub e directory generate.

Non eseguire alcun comando come utente root in quanto potrebbe causare la creazione di nuovi file statici con proprietà root che potrebbero impedire all'utente Web di accedere a tali file costringendoti a fornire l'autorizzazione 777. In ogni caso, non concedere l'autorizzazione 777 se quindi per favore ripristinalo. Quindi esegui i comandi Magento come utente Magento .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.