Permissões de usuários / grupos, como eles funcionam?

1

Estou configurando meu site e preciso mover alguns arquivos. Eu criei um script PHP simples que envolvia coisas como mkdir (), copy () etc ... mas estou recebendo erros de permissão.

Depois de configurar as pastas afetadas para o 777 tudo funciona, mas no meu site antigo eu estava definido 755.

Se meu usuário no Plesk for Johnnie, e o usuário no arquivo for Johnnie (e o grupo for psacln), o script PHP não deve ter acesso? Se não, o que eu preciso para definir o usuário quanto ao meu navegador para poder mover arquivos?

    
por johnnietheblack 22.01.2010 / 00:00

2 respostas

1

O que você quer dizer com acesso? - para ver os atributos do arquivo; - abrir o arquivo para leitura; - abrir o arquivo para escrita; - para abrir o arquivo para leitura / gravação; - para abrir o arquivo para execução.

Por favor, note que o nome de usuário na aplicação PHP não é o mesmo que o usuário Unix, mesmo se eles tiverem o mesmo nome.

Por favor, tome nota que o apache / php está executando como apache, www, www-data, ninguém ... usuário. Isso é configurado na configuração do apache. Encontre isto com:

egrep -r '^User|^Group' /etc/{apache*,http*}

Antes de qualquer alteração, execute um backup.

Encontre um grupo comum do qual o usuário e o usuário do apache fazem parte. Se não criar um.

Altere o grupo de arquivos e pastas que você tem no DocumentRoot para este grupo:

chown -R myuser:commongroup /var/www/

Altere o SUID das pastas para que novos arquivos pertençam a esse grupo:

find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/

Para as pastas e arquivos que você quer dar acesso ao PHP para escrever:

chmod g+w /var/www/folder/subfolder   /var/www/folder/file.txt
    
por 22.01.2010 / 00:59
0

Se você estiver usando php via cgi ou mod-php sem patches / módulos adicionais para lidar com permissões, então seu script php provavelmente está sendo executado com a conta do servidor web. Isso é freqüentemente www-data, nobody ou alguma outra conta não-root.

Você provavelmente precisará adicionar o usuário que o servidor da Web está executando ao grupo ou criar um grupo que inclua o servidor da Web e quaisquer outros usuários que precisem de acesso.

    
por 22.01.2010 / 00:53