Ich habe also ein Skript, das in meinem Apache2-HTML-Ordner abgelegt ist und von einem HTTP-Post ausgeführt werden soll. Das Skript erfordert Root (ich weiß, dass das überhaupt nicht sicher ist, ignorieren Sie das bitte), also habe ich den Benutzer www-data in der sudoers-Datei auf gesetzt www-data ALL=(ALL) NOPASSWD: ALL
. Das Ausführen des Skripts funktioniert ziemlich gut, außer beim Mounten eines cif-Dateisystems.
Das Skript wird von PHP ausgeführt:
exec("sudo ./miniosetup $folder $address $path $User $Pass $S3User $S3Pass $Port");
Das Skript soll folgendermaßen gemountet werden:
ipadress=$(host $address | cut -d' ' -f4 | head -n 1)
echo "$ipadress $minuname $minpwd" >> log_mount
echo "mount -v -t cifs //$address/$usePath/ /mnt/$filesystemname/ -o username=$username,password=$password" >> log_mount
sudo mount -v -t cifs //$address/$usePath/ /mnt/$filesystemname/ -o username=$username,password=$password >> log_mount
if [ ! $? -eq 0 ]
then
echo "mount -v -t cifs //$ipadress/$usePath/ /mnt/$filesystemname/ -o username=$username,password=$passwords" >> log_mount
sudo mount -v -t cifs //$ipadress/$usePath/ /mnt/$filesystemname/ -o username=$username,password=$password >> log_mount
fi
Die log_mount-Datei sieht folgendermaßen aus:
192.168.0.5 testingUsr testingTest
mount -v -t cifs //srv01/netstorage/testminio/ /mnt/testingTester/ -o username=FILESYSTEMUSERNAME,password=FILESYSTEMPASSWORD
Wenn ich es jedoch ausführe, mount
wird es nie angezeigt. Auch das Dateisystem wird nicht gemountet /mnt/testingTester/
. Wenn ich das Skript manuell mit denselben Parametern ausführe, funktioniert alles einwandfrei. Ich bin für jede Idee dankbar, da mir langsam die Ideen ausgehen.
EDIT: sudo funktioniert, sonst würde das Skript nur "Bitte als Root ausführen" ausgeben, da die dritte Zeileif [ "$EUID" -ne 0 ]; then echo "Please run as root" exit; fi
BEARBEITEN: Ich habe gedacht, dass Apache2 möglicherweise in einer Art Sanbox läuft. Kann das jemand bestätigen oder verneinen?