O PHP pode gravar em um diretório sem 0777?

1

Estou criando um criador de sites e tenho o arquivo render.php , que precisa gravar nos diretórios dos usuários. Eu não quero dar a cada um dos diretórios dos usuários 0777, mas eu ainda preciso ser capaz de escrever para eles. Existe uma maneira de fazer isso?

Até agora eu tenho:

  • render (dir) ... 0777
  • render.php ... 777 Escritospara >
  • users (dir) ....... 0777
  • index.php ..... 777

Eu quero mudar isso para permitir que o acesso render.php altere os arquivos dos usuários, mas não permita que os próprios arquivos executem o código.

    
por Riiich 04.03.2013 / 21:37

3 respostas

1

Se eu entendi bem, acho que este procedimento deve dar o que você quer.

  1. Crie um grupo renderusers para o diretório do usuário: groupadd renderusers
  2. Altere o grupo do diretório user para os usuários de renderização: chgrp renderusers user
  3. Adicione o usuário do seu processo do apache (apache ou www-data) a este grupo: usermod -G rendergroup -a apache
  4. Altere as permissões do diretório user para incluir set group ID , para que o grupo renderusers possa gravar e alterar arquivos e cada arquivo recém-criado pertencerá ao grupo renderusers neste diretório: chmod -R 2770 user
  5. Reinicie o apache para que ele reconheça seu novo grupo suplementar

Eu suponho que você esteja executando o php como um módulo DSO e não via cgi.

    
por 05.03.2013 / 10:26
0

Eu não estou suficientemente familiarizado com o Apache para orientá-lo no procedimento de configuração do website, mas posso sugerir uma resposta no nível de permissões do Unix:

  • Defina um novo grupo (por exemplo, riiich_app ),
  • faça chgrp riiich_app e chmod 775 em cada um dos diretórios dos usuários (e diga-lhes para não mudar isso), e então
  • configure seu servidor da web para executar seu render.php no grupo riiich_app .
por 04.03.2013 / 22:58
-7

Você pode atribuir ao usuário do seu servidor da web as permissões 0777. No caso do Apache2, isso é www-data. Não sei exatamente como fazer isso com chmod, mas você pode chown www-data 777 .

    
por 04.03.2013 / 21:41