PHP mkdir () permissão negada

0

Eu tenho uma configuração de servidor com o Centos 5.6, o Apache 2.2.19 e o PHP 5.2.17. PHP está sendo tratado pelo suPHP.

No php.ini global, safe_mode = off e open_basedir = none

O Apache está configurado para ser executado como nobody na configuração do suPHP.

Eu tenho dois domínios configurados em: /home/user1/public_html e /home/user2/public_html

Os dois diretórios public_html têm permissões de 0750 com o grupo como nobody

Todos os arquivos / diretórios em cada diretório de usuários são de propriedade desse usuário e também têm o grupo definido para esse usuário.

Estou executando um script em /home/user1/public_html/scripts/functions.php , que está tentando criar um diretório em /home/user2/public_html/user_files (que tem permissões chmod definidas como 0757), mas estou recebendo um erro de permissão negada ...

Estou assumindo que isso tem a ver com o fato de que o PHP está sendo executado como nobody , mas não tenho certeza do que alterar para permitir que scripts na pasta de cada usuário gravem na pasta do outro usuário, a menos que eu tornar a pasta do usuário gravável por qualquer pessoa, o que não parece muito seguro ...

Alguém sabe onde estou indo errado?

EDITAR:

drwx--x--x    root.root      /home  
drwx-wx--x    user2.user2    /home/user2
drwxrwx---    user2.nobody   /home/user2/public_html 
drwxrwxrwx    user2.nobody   /home/user2/public_html/user_files
    
por Jon 05.07.2011 / 12:58

3 respostas

0

No final, criei um novo grupo contendo user1 e user2 e apenas alterei as propriedades do grupo nas pastas relevantes para permitir a gravação entre pastas.

    
por 05.07.2011 / 14:24
1

O diretório /home/user2/public_html/user_files é de propriedade de xxx:nobody e vem com as permissões 757 , correto?
757 significa que é lido / acessível por qualquer pessoa, mas o acesso de gravação é concedido apenas aos usuários que não estão Código de grupo%. Portanto, seu problema pode ser resolvido se você simplesmente alterar o grupo desse diretório ou, melhor ainda, alterar as permissões para nobody . Com 775 , o proprietário e o grupo têm permissões de gravação, para que possam criar mais arquivos / diretórios, mas ninguém mais pode gravar nesse diretório.

    
por 05.07.2011 / 13:13
1

Eu tive um problema semelhante no F15, e o SELinux foi o culpado no meu caso. Experimente:

chcon -R -h -t http_sys_rw_content_t /home/user2/public_html/user_files

Use o mesmo comando em qualquer outro diretório onde você queira que o Apache tenha acesso via R / W. Se funcionar, use semanage para tornar a mudança de contexto permanente entre as reinicializações.

    
por 05.07.2011 / 13:39