Shell_exec als root?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Shell_exec als root?

    Gruetzi Mitenand aus der Schweiz :-)

    Der Titel entspricht nicht umbedingt dem was ich machen will, aber ich versueche es kurz zu erklären.

    Wenn ich ein PHP-Script laufen lasse und ich Shell Operationen ausführe, mache ich das mit dem User, Apache.
    Um mein Script nun zu vervollständigen muss ich einen aktiven dienst (vmpsd) restarten. Das wollte ich eigentlich mit einem Shell_exec lösen, nur leider hat der User apache keine berechtigungen dies zu machen. Welche möglichkeiten gäbe es das Script unter einem anderen User laufen zu lassen? Und wie müsste ich diesen User erfassen?
    Ich hab das ganze auch mit sudoers probiert, aber ich mach irgendwas falsch? Falls Ihr noch zusatz informationen braucht, sagt das bitte (bin noch nicht so lange im PHP bussiness ;-))

    Danke im voraus, Gruss Carlos

  • #2
    Kennst du sudo?

    Damit lassen sich Scripte/Befehle als andere benutzer ausführen

    Kommentar


    • #3
      Danke das du's erwähnst, ich habe es bereits mit sudo probiert.
      Eintrag im visudo:
      apache localhost=NOPASSWD:/sbin/service vmpsd restart
      apache localhost=NOPASSWD:/sbin/service vmpsd status
      apache localhost=NOPASSWD:/sbin/service vmpsd stop
      apache localhost=NOPASSWD:/sbin/service vmpsd start


      Mein Shell_exec sieht folgendermassen aus:


      PHP-Code:
      $output shell_exec('sudo service vmpsd stop');
      echo 
      $output
      Ich habe einen echo eingebunden um zu sehen ob es überhaupt funktioniert. Leider gibt mir dieser seitdem ich irgendwas probiert habe mit den berechtigungen keinen output, ansonsten, beim restart, kam die meldung:
      Shutting down VLAN Management Policy Server (vmpsd): [ failed ]
      Starting VLAN Management Policy Server (vmpsd): [ failed ]

      und ich vermute das es mit den Berechtigungen zusammenhängt.
      Vielleicht rufe ich auch mein Shell_exec falsch auf? oder die eintragungen im Sudo sind falsch? währe froh wenn mir jemand weiterhelfen könnte.

      Gruss und Danke!

      Kommentar


      • #4
        Die Sache ist gelöst

        Mein sudoers sieht folgendermassen aus (visudo):

        apache ALL=(root) NOPASSWD: /sbin/service vmpsd stop
        apache ALL=(root) NOPASSWD: /sbin/service vmpsd start
        apache ALL=(root) NOPASSWD: /sbin/service vmpsd restart

        PHP-Code:
        shell_exec('usr/bin/sudo /sbin/service vmpsd restart'); 
        Somit funktioniert der restart mit sudo als user apache. Ich hoffe ich kann euch damit helfen, da ich sonst kaum informationen über sudoers im Detail gefunden habe.

        Gruss

        Kommentar

        Lädt...
        X