Permissões corretas para / var / www e wordpress

41

Eu configurei um servidor LAMP e tenho acesso via SSH e à página "funciona" de um navegador da web de dentro da minha rede (via endereço IP) e de fora usando dyndns.

Temos alguns projetos do Wordpress localizados em subdiretórios em / var / www / wordpress1 / var / www / wordpress2 etc. Não consigo acessar esses subdiretórios de um navegador para configurar o WP - ou (presumo) para ver o conteúdo em um navegador. Eu recebo um erro 403 Proibido no meu navegador.

Presumo que este seja um problema de permissões. Você pode me dizer as configurações adequadas para as permissões para:

  1. Permita que os desenvolvedores e eu possamos ler / escrever.
  2. para permitir que o WP seja configurado e faça sua parte
  3. Permita que os visitantes acessem os sites via web.

Também devo mencionar que as subpastas são na verdade simlinks para a pasta em outro disco rígido interno - acho que isso não fará diferença, mas achei que deveria divulgar.

total 12
drwxr-xr-x  2 root root 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root root 4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 root root   43 2012-07-11 20:45 admin_media ->     /root/django_src/django/contrib/admin/media
-rw-r--r--  1 root root  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 root root   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 root root   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Aqui está o resultado do uso chown -R www-data:www-data /var/www

total 12
drwxr-xr-x  2 www-data www-data 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root     root     4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 www-data www-data   43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media
-rw-r--r--  1 www-data www-data  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 www-data www-data   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 www-data www-data   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Ainda não consigo acessar via navegador.

dpbklyn
fonte
Por favor, publique a saída do comando ls -la /var/www.
12132 SirCharlo
por favor coloque essa informação na sua pergunta!
Jorge Castro
OK, demorou um segundo para me lembrar como postar código ...
dpbklyn
Ok, bem, tente #chown -R www-data:www-data /var/www
SirCharlo 12/07/12
2
Acho que seu problema agora é que você está usando links. O Apache não seguirá os links. O que você faria é mover esses arquivos para / var / www e configurar o apache para usar vitrualhosts. Veja help.ubuntu.com/10.04/serverguide/httpd.html Alternativas, se você deseja usar, /hdd/web/wordpressseria configurar o Apache (diretório raiz) corretamente. Você pode configurar o apache para usar links, mas eu não o aconselho. Veja também help.ubuntu.com/community/WordPress
Panther

Respostas:

81

Primeiro, você deve garantir que seu nome de usuário seja incluído no www-datagrupo. Caso contrário, você pode adicionar seu nome de usuário como www-datagrupo

sudo adduser $USER www-data

Depois disso, você deve alterar a propriedade de / var / www para seu nome de usuário

sudo chown $USER:www-data -R /var/www

Próxima etapa, para prática geral , você deve alterar a permissão para 755 (rwxr-xr-x), não recomendamos alterar a permissão para 777 por motivos de segurança

sudo chmod u=rwX,g=srX,o=rX -R /var/www

Relacionado à permissão específica para wordpress ou laravel ou outra estrutura, você pode ler a documentação, respectivamente.

Espero que ajude...

metamorfosear
fonte
1
não funcionou para mim, eu adiciono para uso #sudo chown www-data:www-data -R mywordpressdirectory/
Louis
Depois de alterar a propriedade, você também deve alterar a permissão. Você mudou sua permissão para 755?
metamorph
1
Ele fez com chmod. Ele está mudando a permissão para 755 com sticky bits (para manter os novos arquivos de propriedade de www-data.)
Zachary Dahan
A melhor explicação que pude encontrar, curta e doce. Obrigado.
Banago 7/09/16
1
Assim, você não poderá instalar / remover plugins / temas, etc. no painel de administração, porque o WordPress não terá permissão de gravação.
Igor Skoldin
3

Aparentemente, é assim que é recomendado no Guia do Servidor Ubuntu:

Capítulo 11. Servidores da Web.

1.4 Compartilhamento de permissão de gravação

Para que mais de um usuário consiga gravar no mesmo diretório, será necessário conceder permissão de gravação a um grupo que eles compartilham em comum. O exemplo a seguir concede permissão de gravação compartilhada para / var / www / html ao grupo "webmasters"

Eu uso www-data . Apenas substitua "webmasters" pelo seu grupo, certifique-se de adicionar o usuário ao grupo, é claro.

sudo chgrp -R webmasters /var/www/html
sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/html -type f -exec chmod g=rws "{}" \;

Acabei de testá-lo com o Dreamweaver na área de trabalho do mac e carregar e substituir arquivos, adicionar arquivos, etc., e ele mantém as permissões corretas com uma exceção: o usuário local se torna proprietário de novos arquivos junto com www-data, mas qualquer arquivo criado pela raiz no diretório O diretório html mantém sua propriedade como raiz, mas é editável pelo usuário local.

$ls -l
$-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html
$-rw-rwSr-- 1 root  www-data 11535 May 28 09:58 index.html

Espero que isso esclareça as coisas e ajude os cansados, porque eu sei que sempre estava cansado dessa situação, mas agora está claro para mim.

Ah, e eu recomendo o uso de sftp com chaves para acessar seu ftp, funciona muito bem para mim e não precisa de PureFTP ou qualquer outro método inseguro de entrega dos arquivos para o site. Existem alguns tutoriais no site da Digital Ocean sobre como proteger seu servidor com chaves ssh:

Como configurar a autenticação baseada em chave SSH em um servidor Linux

MagicCamera
fonte
1) que deixa os bits setgid nos arquivos. Parece estranho, não faz nada, abre portas para problemas de segurança se os usuários puderem tornar os arquivos executáveis ​​e executá-los. Mas se você estiver satisfeito com o setgid nos arquivos, substitua finds complexos por just sudo chmod -R g=srwX /var/www/html.
temoto 9/02/16
2) find -exec chmodgerará um programa separado para cada arquivo, que é demorado e coloca pressão desnecessária no sistema, se você tiver muitos arquivos. Solução: sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw. O xargs tentará alimentar o maior número possível de caminhos de arquivos para uma única instância do chmod.
temoto 9/02/16
0

Verifique se o Apache possui direitos de execução para /hdd/web/mediae /hdd/web/wordpress.

Corre:

chmod o+x /root /root/site /root/site/about

Além disso, o Apache deve ser configurado para permitir o acesso ao diretório no sistema de arquivos. Isso deve ser feito por um administrador do sistema, inserindo uma diretiva nos arquivos de configuração do apache (httpd.conf).

Como o diretório real está dentro da raiz da web, ele deve estar acessível, mas o FollowSymLinks pode não ter sido ativado para o diretório - isso também deve ser adicionado à diretiva.

Consulte http://httpd.apache.org/docs/2.0/mod/core.html#directory

jasmim
fonte
Obrigado a todos ... Decidi seguir o caminho de menor resistência ... removi os links simbólicos. Tudo funciona perfeitamente.
dpbklyn
0

Lendo o guia de instalação do Ubuntu .

chown -R www-data /usr/share/wordpress

Talvez seja mais fácil instalá-lo dessa maneira, em vez de tentar descompactar os arquivos no /var/www

https://help.ubuntu.com/community/WordPress ...

de qualquer maneira o wordpress roda no apache ... certo? se você quiser fazê-lo dessa maneira .. você mostra como @metamorph an e dá permissão no apache2 httpd.confassim:

<VirtualHost *:80>
        ServerName site
        ServerName site.domain
        DocumentRoot /srv/www/wordpress.site

        DirectoryIndex index.php

</VirtualHost>

e depois default-server.conf.

<Directory "/srv/www/wordpress.site">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

Talvez seja melhor fazer o passo a passo https://help.ubuntu.com/community/WordPress

maniat1k
fonte