Ausführen des Rsync-Shell-Befehls aus einer PHP-Datei im Webbrowser

Ausführen des Rsync-Shell-Befehls aus einer PHP-Datei im Webbrowser

Zunächst wollen wir die Änderungen von einem System auf ein anderes System übertragen. Dazu haben wir ein Shell-Skript in synchfolders.shder Datei:

rsync -av --delete -e 'sshpass -p Wordpress@123 ssh -p 22' [email protected]:/var/www/html/prosync/wp-content/plugins/ /var/www/html/devsync/wp-content/plugins >> /var/www/html/devsync/wp-content/mysynclog.txt

und wir möchten dieses Shell-Skript in einer PHP-Datei ausführen, shell_exec()und während diese PHP-Datei von einem anderen Browser als dem rsync-Befehl ausgeführt wird, werden alle ausgeführt, aber der rsyncwird nicht ausgeführt. Wir haben das Material in SO gesucht und den Link gefundenhttps://stackoverflow.com/questions/30772816/php-exec-rsync-ssh-to-remote-server-not-working/30773063#30773063, wie hier gesagt, haben wir versucht, die PHP-Datei über die Befehlszeile auszuführen, und es funktioniert perfekt, aber nicht über den Browser. Warum? Bitte lassen Sie uns wissen, wo wir einen Fehler gemacht haben. Vielen Dank im Voraus

Antwort1

Generell gilt: In Skripten, die nicht von Ihrer üblichen interaktiven Shell ausgeführt werden, müssen Sie sicherstellen, dass Sie entwederabsolute Pfade verwenden(also /usr/bin/rsyncstatt rsync) oderRichten Sie die richtige Umgebung einmit einem guten Wert für $PATH


Als zusätzliche Verbesserung: Anstelle einer passwortbasierten Authentifizierung sollten Sie für die Verwendung in Skripten wirklich eine schlüsselbasierte SSH-Authentifizierung einrichten.

Wenn Sie keine Passwörter mehr, sondern Schlüssel verwenden, können Sie den SSH-Server sperren und sichern (die Deaktivierung der Passwortauthentifizierung stoppt Brute-Force-Angriffe) und, was noch wichtiger ist, Sie können Einschränkungen hinzufügen, was zulässig ist, wenn ein bestimmter Schlüssel zur Authentifizierung verwendet wird, was mit einem Passwort nicht möglich ist.

Sie können den in Ihrem Skript verwendeten Schlüssel einschränken, sodass er nur für rsync von einem bestimmten Host aus verwendet werden kann.

Selbst wenn Ihr Skript kompromittiert wird, wird nicht Ihr Root-Passwort gestohlen (das Ihnen die volle Kontrolle über Ihren Server gewährt), sondern nur ein privater Schlüssel, der eingeschränkten Zugriff gewährt, wenn er überhaupt verwendet werden kann.

verwandte Informationen