Permissões de arquivo do Apache e do Linux

2

Eu recentemente movi um site do Symfony 1.3.2 (um framework web PHP), de uma máquina windows para o Linux (Ubuntu 9.10).

Desde então, tive todos os tipos de problemas envolvendo permissão de arquivo (mesmo que o aplicativo seja executado sem nenhum desses problemas no Windows).

Eu executo o symfony fix-perms que aplicava uma máscara 777 ao diretório da web (presumivelmente, incluindo suas subpastas) - (como um aparte) eu acho que é uma brecha de segurança ... Eu queria entrar aqui para perguntar como definir corretamente as permissões.

Atualmente, ao tentar salvar um arquivo do meu site, estou recebendo o seguinte erro:

PHP Warning: imagejpeg () [0function.imagejpeg0]: Não é possível abrir o arquivo '/home/morpheous/work/webdev/frameworks/symfony/sites/project1/web/uploads/../images/thumbnail/959cd604cf6115014a3703bef5a50486a5520642.jpg 'para escrita: Permissão negada em / home / morpheous / work / webdev / frameworks / symfony / sites / project1 / apps / frontend / lib

Aqui estão as permissões nas pastas:

web
drwxr-xr-x 16 morpheous morpheous 4096 2010-02-24 21:01 web


web/uploads/../images
drwxr-xr-x 13 morpheous morpheous 12288 2010-04-09 15:25 images


web/uploads/../images/thumbnail
drwxr-xr-x 3 morpheous morpheous  4096 2010-02-24 20:44 thumbnail

Alguém pode gentilmente me dizer como definir as permissões para que meu site (presumivelmente rodando como o daemon Apache) possa gravar os arquivos no diretório requerido acima?

    
por user35402 22.04.2010 / 02:36

2 respostas

2

Para o Ubuntu, o usuário do apache e do PHP é www-data.

Execute sudo chown www-data:www-data web/uploads/ -R e veja se isso resolve o problema.

Também não use o 777 para as permissões de arquivo, pois Ignacio Vazquez-Abrams declarou "0444 ou 0664 para arquivos, e 0555 ou 0775 para diretórios"

    
por 22.04.2010 / 07:29
2

Acima de tudo, os arquivos que devem ser acessados pelo servidor da Web em leitura ou gravação geralmente devem pertencer ao usuário e ao grupo em que o servidor da Web está sendo executado como ( apache:apache ou nobody:nobody , não seguro sobre os valores exatos no Ubuntu).

A partir daí, o usuário deve ter r nos arquivos e rx nos diretórios, exceto onde as permissões de gravação são necessárias. O grupo geralmente deve corresponder às permissões do usuário. Todos os outros devem ter somente leitura. Isso se traduz em 0444 ou 0664 para arquivos e 0555 ou 0775 para diretórios.

É claro que você pode ter motivos para quebrar esse esquema em locais específicos, mas esses são os valores básicos que você deve ter.

    
por 22.04.2010 / 02:50