CENTOS Apache ALL = (root) NOPASSWD: /Pfad/zu/shell.sh funktioniert nicht

CENTOS Apache ALL = (root) NOPASSWD: /Pfad/zu/shell.sh funktioniert nicht

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 sudomuss mit dem Inhalt der sudoersDatei übereinstimmen. In Ihrem Fall stimmt dies jedoch nicht überein.

Du hast versucht wegzulaufen bash /usr/bin/iptables.sh, aber sudoersdir wird nur das Weglaufen erlaubt /usr/bin/iptables.sh.

Antwort2

Versuchen Sie es mit sudo, da /usr/bin/iptables.shauf die Root-Root verwiesen wird.

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;

verwandte Informationen