por que eu tenho que definir permissões para 777 para ser gravável

0

Na minha versão mais recente do ubuntu install na pasta public_html, tenho que configurar as permissões de pasta para 777 para que o script seja salvo em determinados locais nos documentos públicos de html. Por que isso acontece?

Eu estava com a impressão de que 755 estava / deveria estar ok para leitura e em contas de hospedagem compartilhada que normalmente é o caso, mas no meu sistema vps eu preciso fazer as pastas 777 para fazer o script funcionar.

o script é phpmydirectory, mas esse problema é verdadeiro para todos os scripts que eu possa instalar no vps.

Existe uma maneira de tornar as pastas 755 e graváveis, pois acredito que o 777 é um problema de segurança?

Alguma dica apreciada, obrigado.

    
por Hawk007 03.12.2016 / 16:07

1 resposta

1

Estou tentando adivinhar: o usuário que está executando o script não parece ter as permissões necessárias.

Por exemplo, se um script php executado pelo servidor web apache for usado para fazer upload de arquivos para um determinado subdiretório, esse subdiretório deverá estar disponível para acesso de leitura / gravação ao usuário do apache (normalmente "apache" ou "www-data"). ").

[edit]: quando você executa um servidor web, como o apache, por exemplo, somente o processo pai é executado como "root", um processo filho (que é o que você realmente quer executar scripts php) geralmente é executado com " www-data "uid em plataformas ubuntu / debian.

ps auwx | grep apache | grep -v grep
root      1606  0.0  0.0  63520  3020 ?        Ss   déc.01   0:16 /usr/sbin/apache2 -k start
www-data 22325  0.0  0.0 352676  4232 ?        Sl   06:25   0:02 /usr/sbin/apache2 -k start
www-data 22326  0.0  0.0 352676  4228 ?        Sl   06:25   0:02 /usr/sbin/apache2 -k start

e isso explica por que não é possível gravar em seu subdiretório específico em seu public_html, se esse subdiretório específico não pertencer a esse usuário ou grupo "www-data".

Para corrigir isso, por exemplo, você pode definir o atributo "group" do seu subdiretório como "www-data" e definir permissão de gravação para esse grupo:

sudo chgrp -R www-data ./public_html/my_files
sudo chmod -R g+w  ./public_html/my_files

aviso: Ao fazer isso, você altera recursivamente o atributo de grupo de ./public_html/my_files para www-data e permite acesso de gravação a usuários pertencentes ao grupo www-data, permitindo assim que o apache (sobre) grave arquivos em essa pasta.

    
por the_dude 03.12.2016 / 17:12