Hallo,
ich stehe gerade mächtig auf dem Schlauch:
Bisher hat es -bis zu irgend einem update- normal funktioniert.
Ich habe im apache eine php Seite, die mir Infos zum aktuellen Raspi anzeigt. U.a. prüfe ich, ob der openvpn-Server läuft.
1. Ich habe in /var/www/skripte/GetInfos.sh ein skript, dass root ausführen darf.
2. Dann gibt es noch ein Skript in /var/www/skripte/start.sh, das ebenfalls Root aufrufen darf und in Konsquenz das Skript aus 1. aufruft.
3. in sudoers habe ich folgendne Eintrag: www-data ALL=NOPASSWD:/var/www/skripte/start.sh
(Der Umweg oben über das start.sh Skript ist, weil dort noch mehr Skripte als root ausgeführt werden sollen, die ich hier sammle, damit sudoers nicht zu unübersichtlich wird).
4. in
/var/www/html/index.php
<?php
$output = array();
$return_var = 0;
exec('sudo /var/www/skripte/start.sh 3', $output, $return_var);
=================================
In /var/www/skripte/start.sh
case "$1" in
3) #GetInfos
/var/www/skripte/GetInfos.sh
==================================
In /var/www/skripte/GetInfos.sh
gebe ich nach jeweiliger Prüfung mit "echo" ein Zeile zurück
Alles anzeigen
5. Rufe ich mit root oder als normaler Benutzer mit sudo das Skript
oder auch direkt das GetInfos.sh mit sudo auf
bekomme ich als Ausgabe:
root
1
[...]
(wobei die erste Zeile zu Testzwecken der aufrufende Benutzer "whoami" ist).
Die 1 sagt aus, der OpenVPN Server läuft, so sollte es sein.
Rufe ich nun im PHP die Variable $output[1] auf (zweite Zeile), hat diese den Wert "0" statt "1", dabei enthält $output[0] den Benutzer "root".
Das Skript wird jedoch augenscheinlich als ROOT ausgeführt (whoami), hat aber ein anderes Ergebnis, als wenn ich es über BASH aufrufe....
Es hat, wie gesagt, bereits über Jahre funktioniert?!
Wo ist mein Denkfehler???
Greets
Byte