Lösung 1:
So funktioniert das:Wenn Sie sich über FTP/SSH anmelden und Dateien hochladen, werden diese mit Ihren Berechtigungen erstellt. Wahrscheinlich ist Ihr Webroot weltweit beschreibbar (0777), das ist unsicher - jeder Benutzer im System kann dort etwas schreiben. PHP läuft mit unterschiedlichen Benutzerrechten (sie werden in der PHP-FPM-Konfiguration angegeben, nicht in der nginx-Konfiguration), und da das Verzeichnis weltweit beschreibbar ist, kann der PHP-Benutzer (www-data) auch dort schreiben. Eigentümer dieser Datei ist jedoch www-data, nicht Ihr Konto. Sie sind 2 unterschiedliche Konten in der Dateisystem-Berechtigungsebene.
Ich schlage vor, dass Sie einen dedizierten Benutzer mit möglichst geringen Berechtigungen erstellen, der das Webroot-Verzeichnis besitzt und für den FTP/SSH-Upload verwendet wird UND php ausführen würde. Sie sollten die PHP-FPM-Konfiguration ändern, im Worker-Bereich gibt es Benutzereintrag und NGINX-Konfiguration, so können Sie Ihre Website-Dateien nicht-weltlesbar und sicherer machen.
Führen Sie PHP nicht mit privilegierten Benutzern (Sudo-Fähigkeiten, Schreibrechte außerhalb von Docroot) aus, da dies zu einer Gefährdung der Serversicherheit führen könnte.
Lösung 2:
Der www-data
Benutzer &Gruppe sind ziemlich Standard. Auf anderen Systemen kann es www oder web sein, aber die Idee ist dieselbe:Führen Sie die Webdienste mit einem dedizierten Konto aus. Wenn Ihr Webserver kompromittiert wird, kann der Angreifer daher nur auf die Dateien zugreifen, denen dieses Konto gewährt wurde .
Wenn ein Benutzer die Webdienste verwalten muss, sollten Sie den Benutzer der entsprechenden Gruppe (www-data) hinzufügen oder ihm erlauben, mit su (oder sudo) an den entsprechenden Benutzer (immer noch www-data) zu senden.