Ausführen von shell-script aus einem PHP-Skript

Möchte ich ausführen eines Bash-Skript auf dem system vorhanden, aus einem PHP-Skript. Ich habe zwei scripts auf dem system vorhanden. Einer von Ihnen ist ein PHP-script aufgerufen client.php anwesend /var/www/html und der andere ist ein Bash-Skript namens testscript anwesend /home/testuser.

Meine client.php Skript sieht wie

<?php
  $message=shell_exec("/home/testuser/testscript 2>&1");
  print_r($message);
?>  

Meine Testskripts sieht aus wie

#!/bin/bash
echo "Testscript run succesful"

Wenn ich den folgenden Code im terminal

php client.php

Bekomme ich die folgende Ausgabe auf dem terminal

Testscript run successful

Aber wenn ich öffnen Sie die Seite, auf

http://serverdomain/client.php

Bekomme ich die folgende Ausgabe

sh: /home/testuser/testscript: Permission denied 

Ich bekomme diese Fehlermeldung auch, nachdem ich chmod +x Testskripts.

Wie bekomme ich es auf Arbeit aus dem browser? Bitte helfen Sie.

  • Wie wäre read Erlaubnis? Execute Erlaubnis ist nutzlos ohne read Berechtigung.
  • Apache ist nicht gehen zu müssen, um Berechtigungen zu erreichen in Ihrem home-Verzeichnis. Noch sollte Sie jemals wirklich wollen, es zu. Denken Sie daran, dass es nicht genug Rechte für das Skript. Sie haben Zugriff auf die Verzeichnisse, die als gut. z.B. wenn ich ein "frei nehmen" - Zeitung Halter im a bank vault, niemand kann nehmen Sie die Papiere, auch wenn Sie kostenlos sind.
  • Ich hatte vergessen den Pfad auf die Berechtigungen. Und eine gute Analogie.
  • ich habe ls -l und bekam folgende Ausgabe: -rwxr-xr-x 1 apache apache 236 Jun 17 14:05 Testskripts. Also wie mache ich es? Wo sollte ich das Skript, so dass es ausgeführt werden kann, indem das php-Skript vom browser als auch von der bash-Skript als root ausführen.
  • das Skript ist nicht das problem. es ist Ihr home-Verzeichnis. kann der apache nicht erreichen, in es. geben Sie nicht apache die Berechtigung, dies zu tun. verschieben Sie das Skript irgendwo auf dem apache KANN es bekommen.
  • ich will die Testskripts root-Rechte. also ich kann mich nicht bewegen es in das Verzeichnis /var/www/html richtig?
  • Siehe meine Antwort. unabhängig davon, wo es langgeht. root kann alles tun, und alles, auch wenn root nicht der Eigentümer ist.
  • google für visudo NOPASSWD
  • Sie müssen grand sudo Berechtigungen auf Ihrem webserver auf, das Skript. Oder wickeln Sie das Skript in ein suid-binary. Aber so oder so, SEHR SEHR sehr sehr SEHR vorsichtig mit diesem. Rufen Sie das Skript falsch, pass um einige Daten falsch, und Sie haben remote-Benutzer mit root-shell auf Ihrem server, und der boom geht Ihrem server.
  • Das ist als schlechte Idee. 🙂 Einfach tun es nicht. Echtes Sicherheitsrisiko.
  • ich möchte das php das script ausführen, und führen Sie es als root aus. Wie kann ich sonst noch tun?
  • Eine andere Methode ist, läuft ein daemon, mit dem richtigen Berechtigungen, die nicht von außen erreichbar der server, und hört auf sehr spezifische Whitelist lokale Anfragen nur. Immer noch sehr vorsichtig, aber viel besser, dann geben die webserver diese Privilegien.
  • Statt #!/bin/bash sollten Sie verwenden Sie Posix -#!/usr/bin/env bash. Sie suchen Bash in anderen Orten, wie /usr/local/bin falls vorhanden und auf-Pfad.

InformationsquelleAutor nmadhok | 2013-06-17
Schreibe einen Kommentar