RedHat [PHP] exec() unter Plesk auf CentOS

j4cKiE
Hi!

Ich hoffe, hier findet sich ein Linux-Profi, der mir Folgendes lösen kann.

Zur Config:
Auf meinem CentOS-5-Server läuft Plesk 9. Der Benutzer für das httpdocs-Verzeichnis heißt "j4ckie", die Gruppe dafür lautet "psacln". Der reine Apache-User heißt "apache" in der Gruppe "apache". "apache" wird aber von Plesk aus nicht eingestellt - man kann es jedoch per chown ändern.

In einem Ordner im httpdocs-Verzeichnis von "j4ckie" habe ich ein Shell-Script liegen:
code:
1:
2:
#!/bin/sh
/etc/init.d/dienst start


Dieses Script rufe ich in einer test.php auf:
code:
1:
exec("sudo /pfad/zur/datei.sh");


Rufe ich in PuTTy per php test.php die Datei auf, funktioniert das Script einwandfrei. Rufe ich jedoch die test.php im Browser auf, funktioniert es nicht.

Deshalb meine Fragen:
- Welche Datei braucht welchen Besitzer und welche Berechtigungen?
- Was muss in die /etc/sudoers eingetragen werden, damit ich die Datei per sudo aus dem Browser heraus aufrufen darf?
- Muss sonst noch etwas beachtet/eingestellt werden?

Google konnte mir leider nicht weiterhelfen.

Danke für eure Hilfe!

Gruß,
Martin
oziris
Zitat:
Original von j4cKiE
- Muss sonst noch etwas beachtet/eingestellt werden?

Es könnte sein, dass das Init-Script etwas beinhaltet, dass ein Terminal/TTY erfordert.
Zitat:
Original von j4cKiE
Google konnte mir leider nicht weiterhelfen.
Es ist zwar nicht der beste Weg, aber mit Google kannst Du acuh die man-Pages für sudo finden.

Wenn Du testen willst, mit welchem Benutzer der Befehl ausgeführt wird, kannst Du den Befehl durch sowas wie z.B. "exec('id >test/id')" ersetzen.
Außerdem empfehle ich Dir einen Blick auf die optionalen Parameter von exec() zu werfen, dort kannst Du nämlich Hinweise auf die Ursache finden.