PHP/Linux-Dateiberechtigungen

PHP/Linux-Dateiberechtigungen

Darf ich eine Frage zu den Dateiberechtigungen stellen? Ich habe einen Ubuntu-Server eingerichtet, auf dem Apache läuft. Ich habe ein einfaches PHP-Upload-Formular und kann Dateien wie folgt nach /var/www/site/uploads hochladen.

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

Gibt es eine Möglichkeit, Dateien hochzuladen und sie als

-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

damit ich sie sofort an das wartende/laufende Shell-Skript weiterleiten kann. Im Moment kann das wartende Skript (Verschieben, Prüfsummen, Umbenennen, Größe ändern usw.) nichts mit hochgeladenen Dateien mit Attributen von WWW-Daten machen. Wenn ich es nur als lokales Konto mache, wie z. B.

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

dann kann das Skript wie gewünscht ausgeführt werden. Ich bin für jeden Vorschlag dankbar, vielen Dank auch im Voraus.

Vielen Dank an alle, die mir geholfen haben, dass ich Fortschritte machen konnte.

Jetzt bin ich kurz davor, die Lösung zu finden und füge die Ausgabe hinzu

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

Wie kann ich die Berechtigung für hochgeladene Dateien wie „Test“ nur mit Unterschied in der mittleren Gruppe festlegen? Wie etwa adafruit_pi.png vs. Test. Welche Anweisung soll ich bitte in den PHP-Code einfügen?

Antwort1

PHP läuft als Webanwendung unter Apache und das ist der www-dataBenutzer, den Sie sehen.

Nach dem Hochladen können Sie den Besitzer und die Gruppe der Dateien wie folgt ändern:

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

Beachten Sie, dass der Webserver nach der Änderung der Berechtigungen nicht mehr in der Lage ist, in die Dateien zu schreiben, sie zu löschen oder zu verschieben.

Antwort2

Versuchen Sie, den Benutzer www-data zur Sandbox-Gruppe hinzuzufügen

Antwort3

Versuchen Sie, den Benutzer und die Gruppe für den Apache-Dienst zu ändern: Suchen Sie in der Apache-Konfigurationsdatei (ich glaube, in Ubuntu befindet sie sich in /etc/apache2/apache2.ini) und suchen Sie nach den Zeilen:

User www-data
Group www-data

und ändern Sie www-datazu sandbox.

Beachten Sie, dass der sandboxBenutzer über Lese-/Schreibberechtigungen für den Webroot-Ordner verfügen muss.

Ich hoffe es hilft.

HINWEIS: Dies sollte zu Testzwecken implementiert werden, für eine Produktionsumgebung ist es nicht empfehlenswert.

verwandte Informationen