Como permitir o acesso do apache a um arquivo, mas impedir que outros o visualizem?

2

Eu tenho várias pastas com instalações do Magento.

por exemplo,

www / magento1 www / magento2

Todos os arquivos / pastas dentro deles são de propriedade do root: magento1 e root: magento2, respectivamente.

Eu tenho 3755 perms para todas as pastas, 644 para todos os diretórios para começar. Isso impede que qualquer pessoa, exceto o root, grave em qualquer pasta ou arquivo.

Em seguida, adiciono as permissões de gravação de grupo para pastas / arquivos que os desenvolvedores devem poder gravar. Por exemplo. eles não podem gravar em arquivos principais, mas podem gravar em módulos / skins que não são essenciais.

Tudo bem. A única coisa que não está bem é que eu não quero que eles possam ler o nome de usuário / senha do banco de dados mysql em magento1 / app / etc / local.xml. Eu não quero que eles tenham acesso ao banco de dados, onde informações confidenciais são armazenadas. Eu também não quero que um programador desonesto exclua um monte de tabelas ou o que você tem.

Mas o apache precisa ter acesso de leitura ao mesmo arquivo.

Aqui está uma "solução" que não funciona: Remova as permissões de leitura do grupo, mas deixe-as para outras pessoas. Por quê? Porque isso evita que os desenvolvedores leiam o app / etc / local.xml, mas permite que eles leiam todos os outros.

O que eu faço?

EDITAR: Sim, devs = desenvolvedores e eles terão acesso SSH e FTP.     
por Buttle Butkus 14.09.2012 / 04:44

2 respostas

3

Assumindo que, como no Debian, o apache é executado como usuário www-data e group www-data, a solução é

chown www-data:www-data www/magento1/app/etc/local.xml
chmod 440 www/magento1/app/etc/local.xml

O usuário root sempre pode ler e gravar todos os arquivos.

    
por 17.09.2012 / 16:17
0

Assumindo desenvolvedores = desenvolvedores ...

O que não é explicado de que maneira os desenvolvedores estão acessando o sistema - ssh? ftp?

se for apenas o acesso ftp, você poderá excluir o arquivo de configuração da veiculação / exibição via ftp.

Como alternativa, você pode executar o apache sob determinado nome de usuário (geralmente é configurado para funcionar como ninguém, às vezes como conta de usuário). Se você permitir que "outros" / "mundo" o leiam, todos poderão lê-lo. Então você vai de outra maneira - torná-lo legível apenas para o usuário e definir a propriedade do usuário para o usuário do apache e fechar completamente o acesso do grupo e de outros. Desta forma, o apache fica feliz em lê-lo enquanto ninguém outro usuário pode (salvar o root). Você precisaria se imitar a esse usuário se quiser fazer uma intervenção em um arquivo. Por exemplo. su - username

    
por 14.09.2012 / 06:30