Ich versuche, ein Bash-Skript später in PHP zu starten, damit ich es in visudo erlaubt.Starten Sie ein Bash-Skript später in PHP
www-data ALL = (root) NOPASSWD: /sbin/iptables
www-data ALL = (root) NOPASSWD: /usr/bin/at
Das Skript removeuserIP
nur sudo iptables
tun ist ... und arbeitet:
#!/bin/bash
sudo iptables -t nat -D PREROUTING -s $1 -j ACCEPT;
sudo iptables -D FORWARD -s $1 -j ACCEPT;
und im PHP-Code, ich diese Zeile hinzu:
$msg=exec("echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes");
aber das Problem ist, Es startet gerade das Skript. Ich habe /log/var/auth.log
eingecheckt und in der Tat, es startet jetzt den Befehl.
Ich versuchte es in einem Terminal direkt und es war kein Problem, es beginnt später (mit einem Argument, natürlich):
echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes
Ich habe auch versucht, es so in einem Terminal zu tun, aber diese auch funktioniert nicht, weil es nicht versteht gibt es ein Argument für die Datei:
sudo at now +1 minutes -f /var/www/scripts/removeuserIP 172.24.1.115
ich verstehe wirklich nicht, warum es jetzt sogar beginnt, wenn es 1 Minute beginnen sollte später und jetzt nicht mehr.
Versuchen Sie 'exec ('echo'/var/www/scripts/removeuserIP $ ipadresse" | jetzt + 1 Minuten '); '(notieren Sie die Anführungszeichen). Dies könnte helfen, obwohl ich mir nicht sicher bin. Wenn ja, poste ich es als Antwort. –
Www-Daten in sudoers zu setzen ist eine der schlechtesten Ideen. –
Ich habe versucht, wie Sie sagten, und es funktioniert immer noch nicht. Ich habe nur das Protokoll überprüft und es scheint, dass es keine Berechtigung hat, um zu verwenden, sah es in/var/log/apache2 Ich versuchte sogar in visudo: www-Daten ALL = (alle) NOPASSWD: ALL und es sagt immer noch nein Erlaubnis zur Verwendung bei. Warum ist es eine der schlechtesten Idee? Irgendein anderer Vorschlag, etwas Sichereres zu tun? Um ehrlich zu sein, ich bin ein Anfänger mit Apache2/PHP, also bin ich nicht überrascht von Ihrer Antwort. – Peter