
Posso fazer uma pergunta sobre permissão de arquivo. Eu configurei o servidor Ubuntu onde o Apache começou a rodar. Eu tenho um formulário de upload de php simples e posso fazer upload de arquivos para /var/www/site/uploads da seguinte maneira.
sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 1736
drwxrwxrwx 2 www-data www-data 4096 Oct 18 02:53 ./
drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 00:42 ../
-rw-r--r-- 1 www-data www-data 145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 www-data www-data 166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 www-data www-data 1451489 Oct 18 02:53
6453_3d_landscape_hd_wallpapers_green.jpg
Existe alguma maneira de fazer upload de arquivos e eles aparecem como
-rw-r--r-- 1 sandbox sandbox 145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 sandbox sandbox 166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox sandbox 1451489 Oct 18 02:53
6453_3d_landscape_hd_wallpapers_green.jpg
para que eu pudesse imediatamente alimentá-los com script de shell em espera/execução. No momento, aguardando o script (mover, somas de verificação, renomear, redimensionar, etc.), incapaz de fazer qualquer coisa nos arquivos carregados com atributos de www-data. Se eu fizer apenas como conta local, como
sandbox@sandbox-virtual-machine:/var/www/site/uploads$touch testfile
então o script poderá ser executado como eu gostaria. Qualquer sugestão ficaria grata, obrigado antecipadamente também.
Obrigado a todos que me ajudaram, que consegui progredir.
Agora estou perto de resolver e anexar a saída
sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 388
drwxrwxrwx 2 www-data www-data 4096 Oct 18 04:22 ./
drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 04:17 ../
-rw-r--r-- 1 sandbox sandbox 166947 Oct 18 04:21 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox sandbox 219808 Oct 18 04:20 adafruit_pi.png
-rw-rw-r-- 1 sandbox sandbox 0 Oct 18 04:22 test
Como posso definir permissão para arquivos enviados como 'teste' apenas com diferença no grupo do meio. Como o teste adafruit_pi.png Vs. Qual declaração devo inserir no código php, por favor?
Responder1
O PHP está sendo executado como um webapp no Apache e esse é o www-data
usuário que você está vendo.
Após o upload você pode alterar o proprietário e o grupo dos arquivos com:
exec( 'chgrp sandbox 3*.jpg' );
exec( 'chown sandbox 3*.jpg' );
Esteja ciente de que após alterar as permissões, o servidor web não poderá gravar nos arquivos, nem excluí-los ou movê-los.
Responder2
Tente adicionar o usuário www-data ao grupo sandbox
Responder3
Tente alterar o usuário e o grupo do serviço apache: Pesquise no arquivo de configuração do apache (acho que no ubuntu está localizado em /etc/apache2/apache2.ini) e procure pelas linhas:
User www-data
Group www-data
e mude www-data
para sandbox
.
Observe que o sandbox
usuário deve ter permissões para leitura/gravação na pasta webroot.
Espero que ajude.
NOTA:Isso deve ser implementado para fins de teste, não sendo recomendável para um ambiente de produção.