ubuntuusers.de

php exec Problem

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

oldmanriver

Anmeldungsdatum:
30. August 2015

Beiträge: 191

Hallo, ein anderer Rechner soll das Licht einschalten. Der Befehl erfolgt über einen Browser.

Folgende Zeile im php funktioniert, sprich lokales Licht einschalten

1
exec("sudo python relais5a.py");

Folgende Zeile funktioniert auf der Shell, schaltet am anderen Rechner das Licht an:

1
sudo ssh root@192.168.1.121 'bash -s' < /root/./lich1.sh

folgende php Zeile zeigt im log permission denied

1
exec("sudo ssh root@192.168.1.121 'bash -s' < /root/./lich1.sh");

Obwohl ich meine ich hätte da schon mal shell scripte am Laufen gehabt, alles vergessen, aber mein System ist so konfiguriert:

/etc/sudoers

www-data ALL=NOPASSWD:/var/sudowebscript.sh

/var/sudowebscript.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
#
# sudo web script allowing user www-data to run commands with root p$

case "$1" in
    sispmctl)
        sispmctl -o 1
    ;;
    *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;;
esac

exit 0

OMR

PS: Die roots sind Raspberry Pi mit GPIO

Bearbeitet von rklm:

Codeblöcke. Bitte nutze die Möglichkeiten zur Formatierung!

elostio

Avatar von elostio

Anmeldungsdatum:
2. Februar 2006

Beiträge: 424

Wohnort: Guayaquil

Warum führst du alles mit sudo aus?

Speziell seltsam fühlt es sich an dass du ssh mit sudo aufrufst - warum?

Soweit ich deine /etc/sudoers verstehe darf der Benutzer www-data den Befehl /var/sudowebscript.sh als superuser ohne passwortabfrafe ausführen und nicht ssh.

oldmanriver

(Themenstarter)

Anmeldungsdatum:
30. August 2015

Beiträge: 191

Ja, das mit dem sudo ist überflüssig. Hat sich halt da gehalten.

So, ich habe eine Lösung gefunden, einmal schlafen hilft doch hin und wieder.

Statt php lasse ich Python den Job tun, der hat keine Probleme damit.

exec("sudo python machlicht.py");

machlicht.py

import os
os.system("ssh root@192.168.1.121 'bash -s' < /root/./lich1.sh")

Naja, wenn Du schon genau hinsiehst und das hinterfragst, die angezeigte root Lösung von Apache2 hat leider nicht so funktioniert wie oben beschrieben um die lokalen Lichter via GPIO zu betätigen. Auch meine jetzige Lösung funktioniert so nicht.

Ich habe dann etwas gemacht was hier wieder bei etlichen Leuten Schnappatmung verursacht, aber immerhin gingen an meinem raspi danach die Lichter an und auch der remote Befehl klappt jetzt.

/etc/sudoers
www-data ALL=(root) NOPASSWD:ALL

OMR

Antworten |