Sichere variante zum ausführen einer .sh Datei via PHP?

Aus gegebenem Anlass: Sichert eure Backupcodes wenn ihr die Zwei-Faktor-Authentifizierung aktiviert habt!

Infos dazu findet ihr nochmal hier

  • Moin,


    wusste nicht in welchen Bereich das am besten passt.

    Jedoch wollte ich über PHP eine SSH Verbindung aufbauen um eine Datei auszuführen.

    Die PHP und .sh Datei sind auf dem selben Server, wie kann ich das am besten realisieren ?

    Kann man eventuell den Benutzer so einschränken, dass der nur eine Datei ausführen darf ? Geschweige den Zugriff von anderen IP's verbieten bis auf eine ?

    Sollten bessere Methoden vorhanden sein, bin ich nicht abgeneigt diese anzuwenden.



    Wüsste nicht was ich genau Googlen könnte, wäre um hilfreiche Links (am besten Deutsch) sehr erfreut.


    Peace.

  • Also um sowas zu realisieren, je nachdem ob das Skript einen Wert zurückgibt oder nicht, kannst du das so machen:


    PHP
    1. $command = escapeshellcmd('bash test.sh');
    2. $output = shell_exec($command);
    3. echo $output;


    Kann man eventuell den Benutzer so einschränken, dass der nur eine Datei ausführen darf ?

    Kannst ja angeben, welche Datei nur ausgeführt werden darf und ob der User die Rechte dafür hat.


    Kannst du ja alles über PHP absichern, da das ja eh server site ist.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • muss aber trotzdem über ssh2_connect eine Verbindung aufbauen, richtig ?

    Wenn die PHP Datei auf dem selben Server liegt wie die .sh Datei, dann musst du das natürlich nicht, weil du bist ja schon auf dem Server :D


    Musst halt nur den richtigen Pfad dann angeben.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Aber der User der die Seite anzeigt, hat ja nicht die gleiche rechte wie ein normaler.

    Das funktioniert anders.


    Du startest ja deinen Webserver, und die rechte, die dieser Webserver hat, diese Rechte hat das PHP Skript.


    Das ist unabhängig vom User, der da iwas auf der Seite macht, es geht einzig und alleine um den Prozess, wie z.B. apache gestartet wurde. (also z.B. von welchem User dieser Prozess gestartet wurde. Wurde apache von einem root user gestartet, hat auch das PHP Skript root rechte)


    Wenn nicht genügend rechte vorhanden sind, um ein .sh Skript auszuführen, kannst du natürlich diese Rechte anpassen.

    Entweder über einen zusätzlichen command oder über eine separate ssh connection.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S