Permissões de pasta / arquivo do Magento 2

61

Eu suspeito que as permissões possam ter sido confusas na minha instalação do Magento 2. Nas versões antigas, eu executava o seguinte comando para criar as pastas 755 e os arquivos 644:

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

Você pode me informar quais são as permissões corretas de arquivo e pasta para o Magento 2, pois elas parecem diferentes? Além disso, se houver algumas pastas ou arquivos específicos que precisem de permissões diferentes.

Neekoy
fonte
Tente a permissão 777 antes disso, faça backup
Magento 2
O manipulador PHP do meu servidor é suPHP e eu realmente não quero atribuir 777 a tudo, pois isso praticamente abriria meu site para qualquer pessoa. Existem permissões mais específicas que podem ser atribuídas?
Neekoy
Magento tem a permissão de arquivos em pastas para 775 e para a permissão de arquivos definido para 644
Rishabh Rk Rai
Para sua informação, se o magento 2 estiver em um diretório "home" var/cachee pub/staticprecisar de um conjunto de bits suid. Eu usei: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Respostas:

118

você pode consultar http://devdocs.magento.com/

As coisas importantes:

O proprietário do sistema de arquivos Magento: deve ter controle total (leitura / gravação / execução) de todos os arquivos e diretórios.

Não deve ser o usuário do servidor da web; deve ser um usuário diferente.

O usuário do servidor da web deve ter acesso de gravação aos seguintes arquivos e diretórios: var app / etc pub (e provavelmente novo no 2.2.1 :) gerado

Além disso, o grupo do servidor da web deve possuir o sistema de arquivos Magento para que o usuário do Magento (que está no grupo) possa compartilhar o acesso aos arquivos com o usuário do servidor da web. (Isso inclui arquivos criados pelo Magento Admin ou outros utilitários baseados na Web.)

Recomendamos definir as permissões da seguinte maneira:

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.

Você deve definir como recomendado abaixo.

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

Eu espero que isso te ajude.

negar vachhani
fonte
3
Ele só funciona para mim com \;, por exemplo:find ./var -type d -exec chmod 777 {} \;
bpoiss 11/01
1
Mas isso é para o modo de desenvolvimento. Para a produção deve ser grupo de somente leitura - sem idéia de como isso deve funcionar
Alex
3
Eu acho que você também precisa chmod u+x bin/magentoexecutar comandos do console.
precisa
42
amigos não deixam amigos 777
Darren Felton
6
app / etc 777> Haha legal. Hackable fácil. app / etc contém as informações db
CompactCode
19

Em alguns casos raros, você não pode usar 770 e 660, como o @MagenX diz, 755 e 644 também podem ser a permissão necessária. (Alguns usuários de Fast-CGI, eu acho)

Então, nesse caso, você executa:

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

Isso parece corrigi-lo, mas se o Magento gerar novos arquivos ou diretórios, eles terão a permissão 770 e 660 novamente. Você pode editar esses valores chmod padrão nos seguintes arquivos:

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

Após essas alterações, execute o primeiro comando novamente e, depois disso, os arquivos recém-gerados não deverão mais ser um problema.

Nota: Editar arquivos como esse nunca é uma boa ideia, mas eu suspeito que essas opções chmod serão configuráveis ​​no futuro, então tomei o caminho mais fácil.

Daniel van der Garde
fonte
1
Não é possível encontrar /lib/internal/Cm/Cache/Backend/File.php no M231
snh_nl
@snh_nl Na versão mais recente do Magento, eles não definem mais a permissão, se o fizerem, parece que usam o 775. Após uma nova instalação, você pode simplesmente executar: find. -tipo f -exec chmod 664 {} \; encontrar . -tipo d -exec chmod 775 {} \; encontre ./var -type d -exec chmod 777 {} \; encontre ./pub/media -type d -exec chmod 777 {} \; encontre ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento Na raiz e você deve estar bem.
Daniel van der Garde
11

Você pode usar o método como a documentação do Magento recomenda:

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
fonte
Como conceder permissão de gravação para a pasta gerada no Windows? @Rafael Corrêa Gomes
zus 15/12/18
8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

Para conjunto de desenvolvimento local pube varpara 775 ou 777

Ethan L.
fonte
porque? (Há mínimo a um comprimento comentário)
vitoriodachef
7

Se você estiver usando o SELinux® (por exemplo, CentOS), tente:

sudo chcon -R -t httpd_sys_rw_content_t var

(da pasta raiz do magento, é claro)

HausO
fonte
6

Na comunidade Magento, recomendo

Recomendamos definir as permissões da seguinte maneira:

Todos os diretórios têm 770 permissões. As permissões 770 fornecem controle total (isto é, leitura / gravação / execução) ao proprietário e ao grupo e nenhuma permissão a mais ninguém.

Todos os arquivos têm 660 permissões. 660 permissões significam que o proprietário e o grupo podem ler e gravar, mas outros usuários não têm permissões.

Para mais informações, consulte este link https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html

Magento 2
fonte
4

Coloque esse conteúdo dentro da pasta raiz e execute-o com o console.

Não esqueça chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/
Sheshgiri Anvekar
fonte
como posso colocar esse código? como htacces ou arquivo php
matinict
Evite isso, está basicamente tornando o diretório do servidor da web aberto ao público. em vez disso, leia os devdocs fornecidos pelo magento para proteger adequadamente a versão que você está executando.
themanwhoknowstheman
4

sem permissões especiais, verifique se os arquivos pertencentes ao usuário que executa php ou no caso de cPanel - usuário cpanel e mesmo grupo

então seu comando é bom:

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

basta atualizar o proprietário dos arquivos:

chown -R user:user *

Onde userestá o proprietário, userque executa o php.

em vez de alterar as permissões sempre, faça login / trabalhe como usuário adequado, proprietário dos arquivos, da raiz ao usuário:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd
MagenX
fonte
Como conceder permissão de gravação para a pasta gerada no Windows? @MagenX
zus 15/12
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

Informações também detalhadas estão disponíveis em http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html

Rushvi
fonte
5
Pergunta pede conselhos sobre Magento 2
Flipmedia
0

resolvi desta maneira para o CentOS Linux 7.4.1708 no 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
fonte
Você deve evitar o uso do 777 em arquivos e diretórios. Isso abre sua loja a riscos de segurança desnecessários. Em vez disso, leia os documentos fornecidos pelo magento para a versão que você está executando.
themanwhoknowstheman
0

Execute esses comandos como um usuário root. Se você já tiver concedido a permissão 777, reverta-a usando os dois primeiros comandos, continue com o restante.

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

Defina a propriedade como usuário Magento e usuário da Web usando

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

A execução desses comandos define a permissão para pastas e arquivos na raiz do Magento e para a criação de novos arquivos nos diretórios var, pub e gerados.

Não execute nenhum comando como usuário root, pois isso pode causar a criação de novos arquivos estáticos com propriedade de root, o que pode impedir o usuário da web de acessar esses arquivos, forçando-o a fornecer permissão 777. Em qualquer caso, não dê permissão 777 se Então, por favor, reverta-o novamente.Então, execute os comandos do Magento como usuário do Magento .

Raj Mohan R
fonte