Eu sou relativamente novo em desenvolvimento web, então, seja paciente.
Sou basicamente um desenvolvedor de iPhone, mas recentemente criei um site para outra pessoa usando hospedagem compartilhada. Eu poderia escrever bem em arquivos em PHP nesse site, sem ter que pensar em permissões.
Estou no processo de implantação de um serviço da Web para um novo aplicativo que estou criando, mas não está realmente indo bem. A diferença mais importante aqui é que estou usando o servidor de outra pessoa e apenas tenho acesso FTP / DB.
Basicamente, eu tenho uma carga de arquivos PHP que compõem meu CMS, assim:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Esses scripts editam o banco de dados ou os arquivos. Eles podem interagir com o banco de dados, 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 gerava erros toda vez que uma gravação era tentada ... algo como isto:
Não foi possível abrir o arquivo "../data/img/someimage.png" para gravação.
Então, enviei um email para o cara que está executando o servidor e ele voltou dizendo:
Funciona com permissão pública? (777)
E foi o que aconteceu - mas eu fui muito cauteloso ao usar permissões públicas, então desabilitei imediatamente. Enviei um e-mail a ele dizendo "como posso escrever meus scripts PHP usando permissões de usuário padrão" e ele disse:
Deixe como público, tudo ficará bem
Eu acho que é um conflito de ip em algum lugar na resolução do domínio, mas não estou preocupado com isso.
Enviei-lhe um e-mail dizendo "certamente isso é inseguro" ou algo parecido, e ele respondeu com o seguinte:
a realidade é que existem milhões de sites, incluindo vários que eu administro e que têm 777 em várias pastas, é apenas um modo de vida.
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 o uso do 777? Realmente não gosto que a ideia de qualquer pasta no meu site / serviço seja publicamente gravável.
Eu gostaria muito de receber seus conselhos, pois sei muito pouco sobre servidores da web.
fonte
Respostas:
Vamos dividir :
Você precisa que o usuário que executa o script leia, execute e escreva no diretório, portanto, deve ser:
7 = (r) ead, (w) rito, e (x) ecuto
Outros usuários pertencentes ao mesmo grupo devem ser capazes de executar o arquivo php dentro do diretório, mas não gravá-lo (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) ecuto
O mesmo para o público. De fato, é tudo o que você precisa para usuários externos que precisam exibir arquivos estáticos e php:
1 = e (x) ecuto
Portanto, o mínimo necessário deve ser:
711
Confirmei as configurações acima com minha própria configuração, portanto, deve funcionar; no entanto, isso está no usuário da web padrão. Se você estiver carregando com um login diferente de www, os arquivos e diretórios provavelmente estariam com um usuário diferente. Nesse caso, o usuário da web padrão pode não conseguir ler ou gravar os arquivos pertencentes a você. Nesse ponto, você provavelmente precisará adicionar o usuário da web padrão ao seu grupo (o sysadmin 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 o sysadmin altera 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 esse problema ainda mais. ou "outro"), você deve ficar bem do ponto de vista da segurança.
fonte
/data
pasta - esta pasta contém scripts PHP que compõem o meu serviço JSON web, e um monte de imagens usadas para o conteúdo transmitido no serviço web (em uma/data/img
pasta)Esse cara é um idiota e isso é um absurdo completo. Os direitos de acesso não têm nada a ver com endereço IP ou resolução de domínio, ele está apenas soltando palavras.
Dada a qualidade desse "administrador", eu recomendaria hospedar seu site em outro local, pois é muito provável que o site seja administrado de maneira muito precária e insegura. Apenas colocar
777
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 dependem da maneira como o sistema é usado e configurado e é meio difícil dizer uma coisa sem saber disso.
fonte
www-data
com700
permissões, mas isso provavelmente não vai funcionar no seu caso.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
grupo, você precisará alterar usuários / grupos após a transferência ou usar777
permissões. Mas isso não faz sentido, não podemos ajudá-lo dessa maneira.