Meu servidor Admin quer que eu defina permissões de gravação pública em um diretório

9

Sou relativamente novo no desenvolvimento da web, então, por favor, seja paciente.

Sou principalmente um desenvolvedor de iPhone, mas recentemente fiz um site para outra pessoa usando hospedagem compartilhada. Eu poderia escrever para arquivos em PHP no site bem, sem ter que pensar sobre permissões.

Estou no processo de implantar um serviço da web para um novo aplicativo que estou criando, mas não está indo bem. A diferença mais importante aqui é que estou usando o servidor de outra pessoa e tenho acesso FTP / DB.

Basicamente, eu tenho uma carga de arquivos PHP que compõem meu CMS, da seguinte forma:

mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php

Esses scripts então editam o banco de dados ou arquivos. Eles podem interagir com o banco de dados bem, no entanto, meus scripts não podem gravar no sistema de arquivos. Eles podem, por exemplo, tentar gravar nos seguintes arquivos:

mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt

Isso funcionou bem na minha instalação do MAMP (localmente), mas uma vez implantado no servidor, o PHP expelia erros toda vez que uma gravação era tentada ... algo como isto:

Could not open file "../data/img/someimage.png" for writing.

Então eu mandei um email para o cara que está rodando o servidor, e ele voltou dizendo:

Does it work with public permission? (777)

E, sim, mas eu fui muito cauteloso com o uso de permissões públicas, então o desativei imediatamente. Eu enviei um email dizendo "como posso fazer meus scripts PHP escrever usando permissões de usuário padrão", e ele disse:

Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, but I'm not worried about it.

Eu então enviei um e-mail dizendo "certamente isso é inseguro" ou algo assim, e ele respondeu com o seguinte:

the reality is that there are millions of website, including several that I manage that have 777 on various folders, it's just a way of life.

Alguém poderia me dar uma idéia de uma solução que eu poderia dar a ele? Ou o que posso fazer para evitar ter que usar o 777? Eu realmente não gosto da ideia de qualquer pasta no meu site / serviço ser publicamente gravável.

Eu agradeceria muito seu conselho, pois sei muito pouco sobre os servidores da Web.

    
por Alex Coplan 18.12.2011 / 19:40

2 respostas

13

Vamos dividi-lo :

Você precisa que o usuário execute o script para ler, executar e escrever no diretório, por isso deve ser:

7 = (r) ead, (w) rito, e (x) ecute

Outros usuários pertencentes ao mesmo grupo devem ser capazes de executar o arquivo php dentro do diretório, mas não escrever para ele (por razões óbvias); eles não precisam necessariamente ler os arquivos PHP. Portanto, precisamos fornecer apenas permissões de execução:

1 = e (x) ecute

O mesmo para o público. Na verdade, isso é tudo que você precisa para usuários externos que precisam visualizar arquivos estáticos e de php:

1 = e (x) ecute

Portanto, o mínimo deve ser:

711

Confirmei as configurações acima com minha própria configuração, por isso deve funcionar; no entanto, isso está sob o usuário da web padrão. Se você estiver fazendo o upload com um login diferente de www, os arquivos e diretórios provavelmente estarão sob um usuário diferente. Nesse caso, o usuário da Web padrão pode não conseguir ler ou gravar os arquivos que são de sua propriedade. Nesse ponto, você provavelmente precisará adicionar o usuário da web padrão ao seu grupo (o administrador de sistema precisará fazer isso) e, em seguida, conceder permissões de leitura, gravação e execução aos usuários pertencentes ao grupo:

771

E isso provavelmente funcionaria. Ou isso, ou fazer com que o sysadmin altere a propriedade do usuário e do grupo desses arquivos para o usuário padrão do servidor da Web (mas NÃO AS PERMISSÕES!). Se isso ainda não funcionar, um exemplo de saída das permissões (algo como "ls -la dentro do diretório") nos ajudaria a solucionar isso ainda mais. Dito isso, contanto que você só tenha que conceder permissões de execução ao público ( ou "outro"), você deve estar bem do ponto de vista de segurança.

    
por 18.12.2011 / 22:02
18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

Esse cara é um idiota e isso é um absurdo completo. Direitos de acesso não têm nada a ver com endereços IP ou resolução de domínio, ele está apenas soltando palavras.

Dada a qualidade desse "administrador", eu recomendaria hospedar seu site em outro lugar, pois é muito provável que o site seja administrado de maneira muito insegura e insegura. Apenas colocar 777 de permissões em algo para que funcione é um sinal claro de que ele não entende um pouco do que está fazendo.

Quais direitos de acesso são realmente necessários depende da maneira como o sistema é usado e configurado e é difícil dizer algo sem saber.

    
por 18.12.2011 / 19:58