permissões de PHP e linux

1

Hell0

Nós (nossa empresa) usamos um CMS para vários sites que criamos. Nós encontramos este problema em particular várias vezes agora e não podemos pensar em uma solução para isso.

Aqui está a descrição do problema: Neste cms, é possível criar galerias de imagens. Quando você cria uma pasta para galeria via CMS, a pasta está sendo criada pelo usuário www e suas permissões são definidas como 0666. Quando o usuário envia fotos para esta galeria usando a visualização do editor, as imagens são carregadas na pasta criada anteriormente e cortadas nos tamanhos necessários. As minhocas e outras pastas são criadas para armazenar imagens de tamanhos diferentes.

Se você criar uma pasta para a galeria via ftp, o dono da galeria será o usuário ftp. Se você definir manualmente as permissões para 0666 e carregar os arquivos com as permissões corretas, tudo parecerá bem. Agora, na exibição pública, se você escolher essa pasta criada anteriormente como sua pasta de galeria, o cms falhará ao criar o subdiretório de minúsculas (e outros subdiretórios necessários também). A única diferença entre as pastas é o proprietário das pastas.

Agora eu estou tentando colocar as mãos neste log php contas de hospedagem. Eu acho que vou ter mais informações então.

Alan

    
por Zayatzz 19.08.2009 / 14:20

5 respostas

2

Você precisa de permissão de execução para entrar em um diretório no Linux. Então você precisa definir a permissão para 7 (rwx) para o usuário da web para permitir que ele crie subdiretórios.

Na verdade, para criar subdiretórios, um usuário só precisa de privilégios wx em um diretório. Para poder listar totalmente o conteúdo do diretório, um usuário precisa de privilégios de rx. Para fazer um cd em um diretório, você definitivamente precisa de x.

    
por 19.08.2009 / 14:32
0

Eu tentaria adicionar o apache e o usuário ftp ao mesmo grupo (geralmente www-data), isso provavelmente resolveria isso

    
por 19.08.2009 / 14:27
0

Para fazer isso funcionar, você terá que compartilhar um grupo entre o usuário da WWW e o usuário de FTP, algo como contentusers . Então você terá que mudar o grupo da pasta para o novo grupo contentusers e definir o bit "SetGID" no diretório para (veja mais link ). Novos arquivos serão criados com o grupo adequado.

    
por 19.08.2009 / 14:27
0

0666 são permissões muito ruins para diretórios, pois você precisa do --x--x--x bit para permitir que alguém mude para esse diretório. 0777 seria mais apropriado (além do fato de que 0777 é apropriado apenas para um diretório temporário e, mesmo assim, deve ser usado em 2777 para esse bit pegajoso).

    
por 19.08.2009 / 14:33
0

Eu consertei um problema parecido com o software collabtive de gerenciamento de projetos, você só precisa encontrar a classe com um método que crie as pastas ... isso pode ser fácil se o código for bem comentado ...

bool mkdir  ( string $pathname  [, int $mode= 0777  [, bool $recursive= false  [, resource $context  ]]] )

Como você pode ver nesta explicação simples do método make dir (encontrado em www.php.net ), quando você o encontrar , você só precisa alterar o $ mode var em seu valor desejado ...

    
por 19.08.2009 / 14:33