Peter Pan: Session variablen an Shellscript übergeben

Hallo @all

Ich schreibe gerade eine Userverwaltung die htaccess nutzt.
Um die Sicherheit der htpasswd sicherzustellen würde ich gerne ein shellscript (php) einsetzten um über sudo die rechte zuzuweisen.
Mein shellscript läuft auch schon nur trägt es den benutzter namen und das kennwort nicht ein.
(es wird immer ein leerer name und ein leeres "" password verschlüßelt in die htpasswd eingetragen.)
Den fehler habe ich schongefunden die variablen sind leer.

jetzt meine frage: wie bekomme ich es hin das das shellscript auf die sessionwerte zugreifen kann oder ich die benötigten werte mit übergeben kann?

das shellscript wird über
$meldung=shell_exec("/var/www/sbin/useradd.php 2>&1");
aufgerufen.
in $meldung sind die rückgabe werte.

über jede hilfe dankbar
Peter Pan

  1. Holladiewaldfee,

    das shellscript wird über
    $meldung=shell_exec("/var/www/sbin/useradd.php 2>&1");
    aufgerufen.

    Du kannst z.B. den Aufruf abändern:
    shell_exec("/var/www/sbin/useradd.php session=".serialize($_SESSION)." 2>&1");

    Kann sein, daß Du den serialisierten Wert noch irgendwie codieren mußt, um die Shell nicht zu verwirren.

    In Deinem Script frägst Du die Parameter mit $argc und dem Array $argv ab. In diesem Fall müsstest Du mit

    $_SESSION = unserialize($argv[1]);

    die Session-Variablen wieder herbekommen. Wenn Du den Kram codiert hast mußt Du ihn natürlich vor dem unserialize wieder dekodieren.

    Ciao,

    Harry

    --
      Die ideale Zeit für Firntouren:
      http://harry.ilo.de/projekte/berge/
    1. Hallo Harry und erst einmal danke für die schnelle hilfe.

      das shellscript wird über
      $meldung=shell_exec("/var/www/sbin/useradd.php 2>&1");
      aufgerufen.

      Du kannst z.B. den Aufruf abändern:
      shell_exec("/var/www/sbin/useradd.php session=".serialize($_SESSION)." 2>&1");

      ok was serialize macht ist klar und was unserialize macht auch.

      string serialize ( mixed value)
      bei dir ja session=serialize($_SESSION)

      Kann sein, daß Du den serialisierten Wert noch irgendwie codieren mußt, um die Shell nicht zu verwirren.

      In Deinem Script frägst Du die Parameter mit $argc und dem Array $argv ab. In diesem Fall müsstest Du mit

      $_SESSION = unserialize($argv[1]);

      wenn ich das mache erhalte ich keine ausgabe mehr von meinem script.
      und es wird auch nichts mehr in die htpasswd geschrieben.
      die variablen $argc und das array $argv sind leer.

      die Session-Variablen wieder herbekommen. Wenn Du den Kram codiert hast mußt Du ihn natürlich vor dem unserialize wieder dekodieren.

      »»
      nein die daten sind nicht codiert.

      wenn du noch eine idee haben solltest würde ich mich freuen sonst muß ich das wohl oder übel in perl schreiben,
      oder eine andere txt datei wo der name und password gespeichert sind,
      und von dem script gelesen verarbeitet und gelöscht wird.

      Ciao,

      Harry

      Peter Pan

      1. Holladiewaldfee,

        wenn ich das mache erhalte ich keine ausgabe mehr von meinem script.

        Mäh?
        Gibt's auch'n Grund dafür?

        und es wird auch nichts mehr in die htpasswd geschrieben.
        die variablen $argc und das array $argv sind leer.

        Schonmal in die php.ini geschaut, ob da register_argv_argc (oder so ähnlich) aktiviert ist?

        die Session-Variablen wieder herbekommen. Wenn Du den Kram codiert hast mußt Du ihn natürlich vor dem unserialize wieder dekodieren.
        »»
        nein die daten sind nicht codiert.

        Ich meinte, es kann sein, daß Du die Daten codieren mußt, weil im serialisierten String evtl. Zeichen drin sind, die die Shell beim Aufruf Deines Skriptes etwas durcheinander bringen können.

        Also etwas in der Art
        shell_exec('blubb.php session='.codier_mich(serialize($_SESSION)).' 2>&1');

        Und dann
        $_SESSION = unserialize(decodiert_mich($argv[1]));

        Weißt scho ;)

        Es kann gut sein, daß Dein Script deswegen rumspinnt.

        Ciao,

        Harry

        --
          Die ideale Zeit für Firntouren:
          http://harry.ilo.de/projekte/berge/
        1. Hallo again

          wenn ich das mache erhalte ich keine ausgabe mehr von meinem script.

          Mäh?
          Gibt's auch'n Grund dafür?

          Das weiß ich leider nicht.

          Schonmal in die php.ini geschaut, ob da register_argv_argc (oder so ähnlich) aktiviert ist?

          Ja ist aktiviert

          Es kann gut sein, daß Dein Script deswegen rumspinnt.

          denke ich nicht habe aber jetzt einen hilfreichen tip bekommen mit dem es geht.

          $meldung=shell_exec("/var/www/sbin/useradd.php ($_SESSION[var1]) ($_SESSION[var2]) 2>&1");

          somit bekomme ich die werte übergeben.
          $_SERVER[argv] liefert dann auch die werte zurück.

          Danke für deine hilfe
          pETER