Ich richte meine Site ein und muss einige Dateien verschieben. Ich habe ein einfaches PHP-Skript erstellt, das Dinge wie mkdir(), copy() usw. beinhaltet, aber ich erhalte Berechtigungsfehler.
Nachdem ich die betroffenen Ordner auf 777 eingestellt habe, funktioniert alles, aber auf meiner alten Site war 755 eingestellt.
Wenn mein Benutzer in Plesk Johnnie ist und der Benutzer der Datei Johnnie ist (und die Gruppe psacln ist), sollte das PHP-Skript dann nicht Zugriff haben? Wenn nicht, wie muss ich den Benutzer einstellen, damit mein Browser Dateien verschieben kann?
Antwort1
Was meinen Sie mit Zugriff? - um die Dateiattribute anzuzeigen; - um die Datei zum Lesen zu öffnen; - um die Datei zum Schreiben zu öffnen; - um die Datei zum Lesen/Schreiben zu öffnen; - um die Datei zum Ausführen zu öffnen.
Bitte beachten Sie, dass der Benutzername in der PHP-Anwendung nicht mit dem Unix-Benutzer identisch ist, auch wenn die Namen gleich sind.
Bitte beachten Sie, dass Apache/PHP als Apache-, WWW-, WWW-Data-, Nobody...-Benutzer ausgeführt wird. Dies wird in der Apache-Konfiguration konfiguriert. Finden Sie dies mit:
egrep -r '^User|^Group' /etc/{apache*,http*}
Führen Sie vor jeder Änderung ein Backup durch.
Suchen Sie nach einer gemeinsamen Gruppe, zu der Ihr Benutzer und Ihr Apache-Benutzer gehören. Wenn nicht, erstellen Sie eine.
Ändern Sie die Gruppe der Dateien und Ordner in DocumentRoot in diese Gruppe:
chown -R myuser:commongroup /var/www/
Ändern Sie die SUID der Ordner, sodass neue Dateien dieser Gruppe gehören:
find /var/www/ -type d -print0|xargs -0r chmod g+rxs
chmod -R u+r,g+r,o= /var/www/
Gehen Sie für die Ordner und Dateien, für die Sie PHP Schreibzugriff gewähren möchten, wie folgt vor:
chmod g+w /var/www/folder/subfolder /var/www/folder/file.txt
Antwort2
Wenn Sie PHP über CGI oder Mod-PHP ohne zusätzliche Patches/Module zur Verwaltung von Berechtigungen verwenden, wird Ihr PHP-Skript wahrscheinlich mit dem Konto des Webservers ausgeführt. Dies ist häufig www-data, nobody oder ein anderes Nicht-Root-Konto.
Sie müssen wahrscheinlich den Benutzer, unter dem der Webserver ausgeführt wird, zur Gruppe hinzufügen oder eine Gruppe erstellen, die den Webserver und alle anderen Benutzer umfasst, die Zugriff benötigen.