As permissões para arquivos recém-criados são definidas por umask
Alterei a propriedade do meu arquivo localhost em /var/www/
e suas subpastas e concedeu-lhe a permissão 777. No entanto, sempre que eu adiciono uma nova pasta nela, a nova pasta não recebe automaticamente essa permissão. Como posso dar uma permissão à pasta 777 para sempre, de forma que, se eu adicionar uma nova pasta ou arquivo, ela receba a mesma permissão?
As permissões para arquivos recém-criados são definidas por umask
Você pode usar a opção recursiva a qualquer momento.
sudo chown -R username /var/www
Como outros já mencionaram , dar 777 permissões em /var/www
é uma péssima ideia, especialmente na produção.
Uma solução melhor seria dar permissões de gravação apenas aos usuários que precisam modificar os arquivos. Uma das maneiras de fazer isso é:
crie um novo grupo
adicione o (s) usuário (s) que precisa modificar os dados em /var/www
para esse grupo
altere recursivamente a propriedade de /var/www
para esse grupo
defina umask
on /var/www
para que todos os arquivos recém-criados sejam de propriedade do grupo que criamos.
Outra opção seria usar a ACL, novamente, para conceder permissões de gravação apenas aos usuários que precisam delas.
Aqui estão instruções detalhadas sobre serverfault .
Geralmente, o servidor da Web ou outros serviços de rede ou contas de usuário do sistema não devem ter permissões de gravação para os arquivos servidos pelo servidor da Web, pois isso abre uma possibilidade de execução arbitrária de código.
Você deve editar /etc/apache/envvars
como root com o editor de sua escolha.
Exemplo: ALT + F2
gksudo gedit /etc/apache2/envvars
Vá até o final do arquivo e adicione uma linha umask XXX
.
Onde umask é o oposto binário do valor de permissões desejado.
Para 774 isso seria 003. Para 777 idéia ruim seria 000.
Salvar.
Reinicie o apache.
Exemplo: sudo apache2ctl restart
Isso afetará apenas os arquivos / pastas que foram criados recentemente pelo usuário do apache.
Nota adicional, ler e escrever é 6 no usuário, grupo ou qualquer pessoa.
Além disso, uma solução "out of the box" é configurar o servidor http para usar uma pasta diferente. Se você usa o Apache, simplesmente edite os arquivos de configuração. Desta forma, você não precisa alterar permissões para / var / www, o que pode ser uma má ideia (possíveis problemas de segurança).
E umask é a resposta para a sua pergunta. Ele pode ser usado para restringir privilégios padrão para pastas e arquivos recém-criados. E os desenvolvedores de distribuição tendem a usá-lo para restringir o acesso a algumas pastas do sistema.
Acho que você quer ter acesso de gravação a /var/www
para modificar arquivos e diretórios. Acho que a melhor solução é instalar apache2-mpm-itk
e no arquivo de configuração do host virtual adicionar /etc/apache2/sites-available/default
:
<IfModule mpm_itk_module>
AssignUserId your-username your-group
</IfModule>
e execute chown your-username\: /var/www -Rv
desta forma o apache para esse host virtual será executado com seu UID / GID e você poderá editar arquivos. Mesmo arquivos criados pelo PHP terão seu UID / GID
Tags permissions