shellscript per PHP ausführen

K

knumskull

Foren As
Hallo,

ich möchte ein Shellscript, welches über PHP aufgerufen wird, ausführen. Mein erster Ansatz war
PHP:
$cmd_output = exec('/bin/bash shellscript.sh ' . $params . ' 2>&1');


Das script selber
Code:
#!/bin/bash
# echo "Welcome to the create-user-script"
GROUP=$1
GID=$2
GROUP_ROOT=$3

mkdir -p ${GROUP_ROOT}
echo "`date` Group: ${GROUP}, GID: ${GID}, pwd: ${GROUP_ROOT}, user: ${USER}, pwd: $PWD" >> /tmp/example.txt

exit 0

Die führt aber nur dazu, das ich eine Meldung bekomme, das ich keinen Zugriff habe, diese Funktion auszuführen.
Ergibt ja auch sinn, da ich als Benutzer apache in einem Verzeichnis eines anderen Benutzers ein Verzeichnis anlegen möchte.

Ich habe ebenso versucht das ganze mit SUDO zu lösen, allerdings ohne Erfolg. Bei Sudo bekomme ich folgende Ausgabe:

output: sudo: sorry, you must have a tty to run sudo

Die Befehlszeile sieht folgendermaßen aus.
PHP:
$cmd_output = exec('sudo /bin/bash shellscript.sh ' . $params . ' 2>&1');

ich bin für jeden Tipp dankbar.

*EDIT*
anstelle von exec() habe ich auch schon shell_exec() probiert.Klappt ebenso wenig.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Einen Ansatz habe ich gefunden.

ich habe die Zeile Default requiretty
in der Datei sudoers auskommentiert. Dadurch kommt die Fehlermeldung nicht mehr.

Allerdings kommt jetzt eine Passwortabfrage, obwohl ich in der sudoers folgenden Eintrag stehen habe

Code:
apache  ALL= NOPASSWD: /bin/mkdir
 
Zuletzt bearbeitet:
Klappt es, wenn Du auch im mkdir mit vollem Pfad angibst (/bin/mkdir)?
 
gelöst

So, ich habe es jetzt geschafft. Es war ein Denkfehler meinerseits.

das Script wird als user 'apache' ausgeführt, allerdings das Verzeichnis wird in einem Verzeichnis von Benutzer 'ftp' angelegt. Das kann hinten und vorne nicht funktionieren.

folgender Eintrag in der sudoers und kleine Abänderung im Script führt zum Erfolg.

/etc/sudoers
Code:
apache  ALL= (ftp) NOPASSWD: /bin/mkdir

Script:
Code:
sudo -u ftp /bin/mkdir -p ${GROUP_ROOT}

@rikola Das kommt noch hinzu. Also so wie man es im suoders-file angibt, sollte man es auch aufrufen

so long
 
Wie sieht denn der Sudo Aufruf im Shellskript aus? Apache ist auch der korrekte User?
 

Ähnliche Themen

chown Befehl in einem Script

Zeile für Zeile auslesen und Befehl ausführen

Aura for PHP Konfigurationsproblem

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben