2016-04-07 4 views
1

Ich versuche, Zeile /etc/ppp/chap-secret Datei über bash script einfügen, was mit php shell_exec laufen sollte.Permission Fehler durch Ausführen Bash-Skript über PHP shell_exec

Ich hoffe, dass ich auf dem richtigen Weg bin oder gibt es einen besseren Weg? , was meine Arbeit wie unten ist,

/var/www/test.php:

<?php echo shell_exec("cd /etc/ppp; bash test.sh"); ?> 

/etc/ppp/test.sh:

#!/bin/bash 
sed -i "/IP addresses/a client123* pw123123 192.168.0.101" chap-secrets 

I

ich dieses error auch www-data ALL=NOPASSWD: /etc/ppp/test.sh to sudoers. hinzugefügt:

sed: temporäre Datei kann nicht ./sedXym2Nn öffnen: Erlaubnis verweigert

von Terminal alles funktioniert gut, aber ich muss es von Admin Web via Klick.

Wie Fehler Berechtigungen beheben und diesen Prozess erhalten?

+0

Es ist äußerst schlecht, Ihrem Webserver Schreibrechte für Systemdateien zu gewähren. – tripleee

Antwort

0

Einen Web-Server-Zugriff auf Systemdateien zu gewähren, scheint sicher leichtsinnig, aber zumindest verwenden Sie ein Wrapper-Skript, um zu verhindern, dass der Server beliebige Befehle mit Super-Benutzerrechten ausführt. Das sagte:

Sie haben www-data Sudo Zugriff auf /etc/ppp/test.sh ohne Kennwort, aber Sie führen nicht den Befehl mit Sudo aus Ihrer shell_exec Funktion.

Aufruf shell_exec("cd /etc/ppp;sudobash test.sh"); sollte den Trick tun.