Ich möchte einem bestimmten Benutzer erlauben, /sbin/iptables
nur Sudo zu können .
Ich habe ein Bash-Skript, das iptables konfiguriert. Das Problem ist, dass die Konfiguration /sbin/iptables
als sudoable nicht ausreicht - das Skript selbst muss auch sudoable sein.
Das Problem ist, dass diese Datei vom Benutzer bearbeitet werden kann (er kann dort die Konfiguration ändern), sodass er jeden Befehl als root ausführen kann.
Was ist der richtige Ansatz für dieses Problem?
shell-script
permissions
sudo
iTayb
quelle
quelle
/etc/sudoers
und hinzufügenusername ALL=/sbin/iptables /sbin/whatever
?Antworten:
Ich kann zwei Methoden sehen:
Lassen Sie den Benutzer zu verwenden ,
/sbin/iptables
durchsudo
ohne Einschränkung (das ist etwas gefährlich, das bedeutet Sie den Benutzer irgendwie vertrauen), und führen Sie das Skript mit den Berechtigungen des Benutzers. Das Skript wirdsudo
jedes Mal aufgerufen, wenn/sbin/iptables
es benötigt wird. Dies setzt voraus, dass die Skriptausführung schnell erfolgt, da eventuell in regelmäßigen Abständen eine Kennworteingabe erforderlich sein wird¹./sbin/iptables
ist es gefährlich , dem Benutzer die uneingeschränkte Verwendung zu ermöglichen.Erlauben Sie dem Benutzer, nur das Skript aufzurufen
sudo
./sbin/iptables
wird durch das Skript eingeschränkt.Zu dem von Ihnen erwähnten Problem: Wenn das Skript beispielsweise im Besitz von ist
root
und über die üblichen Berechtigungen verfügt:rwxr-xr-x
Andere Benutzer können es nicht ändern, sondern nur ausführen (eventuellsudo
bis, um weitere Berechtigungen zu erhalten).Achten Sie bei Lösung 2 und bei Shell-Skripten (im Vergleich zu robusteren Binärdateien / Programmen) auf Umgebungsvariablen und die verschiedenen externen Faktoren, die die Ausführung Ihres Skripts ändern können. Überprüfen Sie, ob Ihre Sudo-Konfiguration die Definition jeder potenziell schädlichen Variablen ordnungsgemäß zurücksetzt.
-
1. Tatsächlich
sudo
kann bei Bedarf mit konfiguriertNOPASSWD
werden.quelle
Aus Wikipedia:
Versuchen Sie so etwas
Ich könnte Zypper starten, ohne eine Wurzel zu sein, was ich vorher nicht konnte.
Sei vorsichtig mit setuid und setgid! Einige Buchzitate:
quelle
Sie können versuchen, den Gruppeneigentümer der Datei zu ändern und Ihren Benutzer zu dieser Gruppe hinzuzufügen. Dann könnten Sie
chmod
der Datei Gruppenberechtigungen zuweisen, mit denen Sie tun können, was Sie brauchen.Es ist eine abgehackte Lösung, aber es würde funktionieren.
quelle
/sbin/iptables
. Fügen Sie Ihren Benutzer dieser Gruppe hinzu.chmod
/sbin/iptables
damit die Gruppe die Datei ausführen kann. Das würde funktionieren, nicht wahr?Stellen Sie sicher, dass Sie (oder ein geeignetes Konto) der Eigentümer der Datei sind, und machen Sie die Datei nur für Sie beschreibbar, nicht für die Gruppe. Ihre Berechtigungen wären also ungefähr 750, vorausgesetzt, Ihr Benutzer gehört zur richtigen Gruppe.
Wenn sie die Datei ausführen, aber nicht schreiben können, können Sie diesen Befehl sicher zu ihrer Sudo-Liste hinzufügen.
quelle