
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-data
Benutzer, 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-data
zu sandbox
.
Beachten Sie, dass der sandbox
Benutzer ü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.