Permissões de gravação do Apache fora da pasta WWW

1

Eu tenho o seguinte sistema (Linux / CentOS):

  • usuário DEV
  • usuário APACHE

DEV está nos grupos: APACHE , DEV APACHE está em grupos: APACHE , DEV

O usuário APACHE executa o servidor apache.

Minha pasta WWW está em /home/dev/www/ Minha pasta de documentos está em /home/dev/docs Na minha pasta WWW existe um link simbólico que aponta para a pasta doc.

Meu aplicativo php precisa criar novas pastas dentro do doc foler. Os sinalizadores de permissões da pasta doc são rwxr-xr-x . E eu recebo permissão negada se eu tentar mkdir para essa pasta. Se eu alterar as permissões para rwxrwxr-x , tudo bem. Minha pergunta: isso é correto? Ou devo mudar o usuário que executa o apache?

    
por giuseppe 27.07.2014 / 13:54

1 resposta

1

Minha recomendação seria manter a propriedade dos arquivos em /home/dev/(www|docs) definido como DEV:DEV e permitir que o usuário APACHE grave nas pastas necessárias por meio de uma permissão de grupo.

Dessa forma, as pastas para as quais o APACHE precisa gravar terão permissões definidas como rwxrwxr-x , enquanto as pastas das quais ele precisa somente ler podem ter permissões definidas como rwxr-xr-x .

Há uma coisa extra a considerar neste cenário. Todos os arquivos / pastas criados pelo usuário APACHE serão de propriedade de APACHE:APACHE (supondo que o grupo padrão para APACHE user seja APACHE ). Por causa disso, talvez você não consiga gravar nesses arquivos / pastas com o usuário DEV , dependendo de qual umask está definido para APACHE user.

Para corrigir esse inconveniente, você pode definir o bit SGID na pasta para qual APACHE irá gravar. No seu caso:

chmod g+s /home/dev/docs

e defina o umask apropriado para APACHE user:

umask 0002

Dessa forma, todos os arquivos / pastas em /home/dev/docs criados por APACHE user terão o proprietário definido como APACHE:DEV e as permissões definidas como rwxrwxr-x para pastas e rw-rw-r-- para arquivos.

Observe que, embora seja uma solução aceitável para o ambiente de desenvolvimento, no servidor de produção, talvez você não queira que APACHE user tenha umask definido como 0002 .

    
por 27.07.2014 / 14:52