wake-up-neo.com

Beim Aktualisieren von Wordpress 4.0 werden Sie nach dem FTP-Kennwort gefragt

Ich konnte Wordpress 4.0 auf meinem lokalen Computer aktualisieren und habe auch gerade einige Plugins auf dem Produktionscomputer aktualisiert. Wenn ich jedoch versuche, Wordpress 4.0 auf dem Produktionscomputer zu aktualisieren, werden meine FTP-Anmeldeinformationen abgefragt. Warum fragt es nach diesen, wenn es sie noch nie gebraucht hat?

Könnte CloudFlare etwas damit zu tun haben?

Ich habe folgendes gefunden http://codex.wordpress.org/Dashboard_Updates_Screen#Troubleshooter

Ich habe versucht, chown -R Apache:apache * für die Wordpress-Installation zu verwenden, aber es werden immer noch FTP-Anmeldeinformationen abgefragt. Ich möchte den FTP-Server nicht einrichten. Warum sollte der FTP-Server benötigt werden, wenn der Abruf ausgeführt wird?

2
Chloe

Ich musste auch den Besitzer des Root-Webverzeichnisses ändern.

chown Apache:apache .   # or chown Apache:apache /var/www/html

Edit by Otto: Chloe, da du mehr Informationen angefordert hast, als ich vernünftigerweise in einen Kommentar einfügen könnte, füge ich dies deiner Antwort hinzu. Ich hoffe das ist okay. Wenn nicht, können Sie es jederzeit zurücksetzen oder lassen Sie es mich wissen und ich werde es tun.

Der Grund, warum ich dies als Sicherheitsproblem bezeichnet habe, hat mit dem Besitz von Dateien, der Einschränkung von Berechtigungen und der Einschränkung des Zugriffs zu tun.

Unix-ähnliche Systeme enthalten das Konzept von "Eigentümern" und "Berechtigungen". Dateien gehören einem Benutzerkonto und verfügen über Berechtigungen, die steuern, ob sie von anderen Konten gelesen, geschrieben oder ausführbar sind. Dies ist inhärent eine Sicherheitsfunktion, um zu verhindern, dass andere Konten in Ihre Dateien schreiben oder dies möglicherweise zulassen.

Laufende Programme haben auch "Eigentümer". Diese Programme erben die Berechtigungsfunktionen ihres Besitzers. Wenn Sie ein Programm ausführen, kann es alles, was Sie tun können, aber es wird daran gehindert, alles zu tun, was Sie nicht können, da es Ihrem Benutzerkonto "gehört".

Wenn es um Webserver geht, erlauben Sie im Wesentlichen der Außenwelt, ein Programm auf Ihrem Computer auszuführen. Aus diesem Grund ist die Eigentümerschaft wichtig, und daher werden die meisten Webserver als "www" -Benutzer oder im allgemeinen Fall des Apache-Webservers als "Apache" -Benutzer ausgeführt.

Wenn jemand in der Lage ist, sich durch ein auf Ihrer Website ausgeführtes Programm zu hacken, erlangt er die Kontrolle über dieses Programm, wird jedoch weiterhin durch die Funktionen dieses Programms eingeschränkt. Wenn sie einen von "Apache" ausgeführten Prozess hacken, ist ihr Benutzer "Apache" und sie haben nur Zugriff als "Apache" -Benutzerkonto.

Daher ist es ein Sicherheitsproblem, wenn Ihre Dateien im Besitz von "Apache" sind, da Sie im Grunde sagen, dass jeder auf der Welt Eigentümer dieser Dateien ist. Jeder, der durch diese Tür hereinkommt, kann sie sehen, bearbeiten und modifizieren.

Wenn andererseits das Benutzerkonto, dem die Dateien gehörten, "user" und "Apache" war, hatte es zufällig die Berechtigung, die Dateien zu lesen, aber nicht in sie zu schreiben, dann konnte der Webserver seine Arbeit dennoch erledigen. Es könnte die Dateien lesen, die Skripte PHP ausführen, alles tun, was es tun soll ... aber die Dateien nicht ändern.

Aus diesem Grund fragt WordPress nach FTP-Zugangsdaten. Wenn es sich selbst aktualisiert, stellt es fest, dass die WP -Dateien "user" gehören, WordPress jedoch tatsächlich als "Apache" ausgeführt wird. Daher kann es nicht ordnungsgemäß aktualisiert werden, ohne den Besitzer zu ändern. Der "Apache" -Benutzer kann keine Dateien schreiben, die "user" gehören. Es hat diese Erlaubnis nicht. Noch wichtiger ist, dass WordPress neue Dateien erstellt und auch alte löscht. Wenn dies also unter "Apache" der Fall ist, werden die neuen Dateien "Apache" gehören, wenn sie "user" gehören sollten. Das Update wird absichtlich an diesem Punkt angehalten, da keine Dateien mit dem richtigen Eigentümer erstellt werden können.

Wenn Sie nach FTP fragen, gibt es einen zweiten Ansatz. Es kann über FTP eine Verbindung zu seinem eigenen Server herstellen und unter Verwendung dieser Anmeldeinformationen Dateien als der richtige Benutzer schreiben ... Nur einmal. Nach dem Trennen der Verbindung werden die Anmeldeinformationen vergessen. Rundum sicher.

Mit anderen Worten, wenn Sie FTP-Informationen eingeben, geben Sie WordPress-Sicherheitsinformationen, damit Sie die Dateien einmal ändern können. Indem Sie die Dateien stattdessen zu "Apache" machen, geben Sie WordPress die Möglichkeit, die Dateien jederzeit ohne zusätzliche Anmeldeinformationen zu ändern. Sie haben die Sicherheitsfunktion hier umgangen, wo WordPress die Dateien nach wie vor nicht ohne Ihre Anmeldeinformationen ändern konnte, jetzt ist dies möglich. Das ist ein Problem.

Möglicherweise wird der FTP-Dienst nicht normal ausgeführt. Möglicherweise verwenden Sie nur SSH. Das ist auch okay. In diesem Fall sollten Sie die Erweiterung PHP SSH2 zur Konfiguration PHP Ihres Servers hinzufügen. Wenn WordPress dies findet, haben Sie anstelle von nur FTP auch die Option für SFTP, das stattdessen die SSH-Verbindung verwendet, um die Dateien zu authentifizieren und zu kopieren. Dieselben Prinzipien gelten, es wird versucht, Dateien mit dem richtigen Eigentümer für sie zu schreiben, um Sicherheitsprobleme zu vermeiden.

Sicherheit ist keine Binärsache, sondern besteht aus Schichten. Wenn jemand unbefugten Zugriff erhält, kann eine ordnungsgemäße Konfiguration dazu beitragen, den möglichen Schaden zu begrenzen. Datei- und Prozessbesitz ist in Unix-Systemen ein recht geringes Sicherheitsniveau, aber es ist immer noch ein wichtiges.

4
Chloe

Führen Sie die folgenden Schritte aus, damit Sie wahrscheinlich alles aktualisieren können.

  1. Öffne wp-config.php und füge `hinzu

define('FS_METHOD','direct');

  1. Der letzte Schritt ist das Ändern des Eigentümers: Gruppe des Verzeichnisses, das Sie bereits erstellt haben. Kurz gesagt, wenn Sie Apache2 verwenden, handelt es sich bei der Gruppe um WWW-Daten und nicht um Apache. Also wäre es so

Sudo chown -R <user>:www-data <WordPress-directory>

Hoffe, es funktioniert.

1
negletios

Es gibt einen noch sichereren Ansatz zum Einrichten von Wordpress, bei dem keine Passwörter erforderlich sind: Verwenden Sie SFTP.

Grundsätzlich müssen Sie einige Einstellungen vornehmen und müssen als Wordpress-FTP-Benutzer und in seinem Ausgangsverzeichnis angemeldet sein.

Beginnen Sie mit der Erstellung eines PKI-Schlüsselpaars (keygen-ssh führt Sie durch den Vorgang. In diesem Beispiel wird davon ausgegangen, dass Sie alle Standardeinstellungen übernommen haben.):

keygen-ssh

Platzieren Sie die neuen Schlüssel dort, wo sie gebraucht werden:

cat ip_rsa.pub >> .ssh/authorized_keys
mv ip_rsa* .ssh/

Ändern Sie den Schutz (es ist unklar, warum Wordpress dies erfordert, aber es tut):

chmod 700 .ssh/
chmod 600 .ssh/*

Füge die folgenden Zeilen zu deiner wp-config.php hinzu:

define('FTP_Host', 'localhost');
define('FTP_USER', '«your user name goes here»');
define('FTP_PUBKEY', '«full path to user's home directory»/.ssh/wp_rsa.pub');
define('FTP_PRIKEY', '«full path to user's home directory»/.ssh/wp_rsa');

Stellen Sie sicher, dass Apache auf das Verzeichnis wp-content/zugreifen kann:

chmod 775 «full path to WordPress directory»/wp-content

Ich habe den gesamten Prozess ausführlich in einem Posting auf meinem Blog umrissen.

1

"Könnte CloudFlare etwas damit zu tun haben?"

CloudFlare überträgt keinen FTP-Datenverkehr und dies sollte in der Regel von Ihrem Hosting-Anbieter in Anspruch genommen werden.

0
damoncloudflare

Das Problem ist, dass Ihr Server ein anderes PHP-Protokoll ausführt als das, das von WordPress verwendet wird. Ich weiß nicht, wie das passiert. Sie können das PHP -Protokoll überprüfen, indem Sie in phpinfo () nach einer Zeilen-SERVER-API suchen. Oder wenn Sie cPanel auf Ihrem Hosting haben, können Sie sehen, wie Sie suPHP in cPanel aktivieren .

Sie umgehen das Problem mit den FTP-Details in der Datei wp-config.php wie folgt:

define('FTP_USER', 'username');
define('FTP_PASS', 'password');
define('FTP_Host', 'ftp.example.org:21');

Sie können bei Bedarf auch FTP_SSL, FTP_BASE, FTP_CONTENT_DIR und FS_METHOD definieren.

0
Mladen Petrovic