%20NOPASSWD%3A%20%2FPfad%2Fzu%2Fshell.sh%20funktioniert%20nicht.png)
Ich versuche, eine IPtables-Verwaltung über eine Weboberfläche einzurichten.
Eine Datei erstellttest.php
$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;
Habe /usr/bin/iptables.sh NOPASSWD gegeben, damit ich die Datei mit sudo über Apache ausführen kann, ohne ein Passwort zu verwenden
sudo iptables -L
sudoers-Datei:
apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh
Aber ich bekomme immer noch eine Fehlermeldung
Wir gehen davon aus, dass Sie die üblichen Vorträge vom lokalen Systemadministrator erhalten haben. Normalerweise läuft es auf diese drei Dinge hinaus: #1) Respektieren Sie die Privatsphäre anderer. #2) Denken Sie nach, bevor Sie tippen. #3) Mit viel Macht geht viel Verantwortung einher. sudo: Zum Lesen des Passworts ist ein Terminal erforderlich. Verwenden Sie entweder die Option -S, um von der Standardeingabe zu lesen, oder konfigurieren Sie einen Askpass-Helfer {"mode":"full","isActive":false}
Wenn ich jedoch
apache ALL=(root) NOPASSWD: ALL
Alles funktioniert einwandfrei.
Ich habe mein Verzeichnis noch einmal überprüft und den genauen Pfad verwendet
[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh
Ich habe hier absolut keine Ahnung, kann mir jemand weiterhelfen? :'(
Antwort1
Der von Ihnen aufgerufene Befehl sudo
muss mit dem Inhalt der sudoers
Datei übereinstimmen. In Ihrem Fall stimmt dies jedoch nicht überein.
Du hast versucht wegzulaufen bash /usr/bin/iptables.sh
, aber sudoers
dir wird nur das Weglaufen erlaubt /usr/bin/iptables.sh
.
Antwort2
Versuchen Sie es mit sudo, da /usr/bin/iptables.sh
auf die Root-Root verwiesen wird.
$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;