Como tornar a pasta sempre gravável pelo apache?

0

Eu quero fazer uma pasta sempre gravável pelo PHP.

Eu mudei a permissão da pasta para 777, mas o conteúdo da pasta é carregado por um usuário ftp, então toda vez que eu executo novamente o script eu recebo isso:

Warning: file_get_contents(/var/www/html/.../file.txt): failed to open stream: Permission denied in /var/www/html/.../autoimport.php on line 25

O mesmo está acontecendo comigo neste script, onde mostro o conteúdo do error.log. Eu mudei para 777, mas quando é gerado novamente eu perdi o acesso novamente.

Warning: fopen(/var/log/apache2/error.log): failed to open stream: Permission denied in /var/www/html/admin/errorlog.php on line 48
Could not get lines from file - /var/log/apache2/error.log
    
por user1532587 20.11.2014 / 18:52

1 resposta

1

A maneira como normalmente faço isso em minhas configurações de servidor é criar um grupo para o site, depois usar uma combinação de setgid e umask para garantir que os arquivos permaneçam graváveis pelos aplicativos desejados. Guia passo a passo abaixo:

1 / Crie um novo grupo para o seu site:

$ sudo groupadd web-grp

2 / Adicione o usuário que o servidor da Web executa ao grupo:

$ sudo gpasswd -a www-data web-grp

3 / chown os diretórios e arquivos que você deseja que o servidor tenha acesso:

$ sudo chown -R :web-grp /path/to/website

4 / Defina o bit gid e outras permissões nesses diretórios:

$ sudo chmod -R ug+rw /path/to/website
$ find /path/to/website -type d -exec chmod g+xs {} \;

5 / Defina a umask do seu programa de ftp para 002 . Isso vai depender do seu cliente ftp e do servidor, procure por aí para descobrir como fazer isso para sua configuração particular.

6 / Reinicie seu servidor da web para obter a nova permissão de grupo:

$ sudo service apache2 restart

O interessante aqui é que o setgid bit nesses diretórios fará com que novos arquivos criados nos diretórios tenham o mesmo grupo por padrão. Isso significa que você não precisa de 777 de permissões, o que significa que você tem mais segurança, além de um sistema que deve continuar a funcionar.

A parte umask também é importante. Novos arquivos terão os bits de permissão no umask retirado, portanto, se o seu umask for 022 , os novos arquivos não poderão ser gravados em grupo, e as coisas não funcionarão muito bem.

Eu tenho usado essa configuração com muito sucesso há alguns anos.

    
por 08.02.2015 / 02:04