Права доступа к файлам PHP/Linux

Права доступа к файлам PHP/Linux

Могу ли я задать вопрос о разрешении файла? Я настроил сервер Ubuntu, на котором запустился Apache. У меня есть простая форма загрузки php, и я могу загрузить файл в /var/www/site/uploads следующим образом.

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

Есть ли возможность загрузить файлы и они будут отображаться как

-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

так что я мог бы сразу скормить их ожидающему/работающему скрипту оболочки. Прямо сейчас ожидающий скрипт (перемещение, контрольные суммы, переименование, изменение размера и т. д.) не может ничего сделать с загруженными файлами с атрибутами www-data. Если я просто сделаю это как локальная учетная запись, например

sandbox@sandbox-virtual-machine:/var/www/site/uploads$touch testfile

тогда скрипт сможет работать так, как я хочу. Буду благодарен за любые предложения, заранее спасибо.

Спасибо всем, кто помогал мне, и я смог добиться прогресса.

Теперь я близок к решению и прикреплю вывод

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

Как мне установить разрешение на загруженные файлы, например, 'test', только с разницей в средней группе. Например, adafruit_pi.png против test. Какое выражение мне вставить в код php, пожалуйста?

решение1

PHP работает как веб-приложение под управлением Apache, и это тот www-dataпользователь, которого вы видите.

После загрузки вы можете изменить владельца и группу файлов с помощью:

exec( 'chgrp sandbox 3*.jpg' );
exec( 'chown sandbox 3*.jpg' );

Имейте в виду, что после изменения разрешений веб-сервер не сможет записывать файлы, удалять или перемещать их.

решение2

Попробуйте добавить пользователя www-data в группу sandbox

решение3

Попробуйте изменить пользователя и группу для службы Apache: Найдите в файле конфигурации Apache (я думаю, в Ubuntu он находится в /etc/apache2/apache2.ini) и найдите строки:

User www-data
Group www-data

и измените www-dataна sandbox.

Обратите внимание, что sandboxпользователь должен иметь разрешения на чтение и запись в папке webroot.

Надеюсь, поможет.

ПРИМЕЧАНИЕ: Это следует реализовать в целях тестирования, не рекомендуется для производственной среды.

Связанный контент