fein abgestimmte Sudoer-Konfiguration (erlaubte Kommandozeilenargumente)


20

Gibt es eine einfache Möglichkeit, einem Benutzer das Ausführen zu ermöglichen (zum Beispiel)?

/usr/bin/pacman -S -u

als root, ohne ihn laufen zu lassen

/usr/bin/pacman -S -u some_package

?

Die Linie

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u

erlaubt beides, und

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u ""

scheint semantisch äquivalent zu sein.

Antworten:


27

Versuchen Sie für Ihren Fall Folgendes:

Cmnd_Alias PACMAN = /usr/bin/pacman -S -u, ! /usr/bin/pacman -S -u some_package
user ALL=(root) NOPASSWD: PACMAN

Sie können Shell-Glob-Muster wie [az], [0-9], * usw. in Ihrer sudoers-Datei verwenden, um Pakete auszuschließen, die einem bestimmten Muster entsprechen.


3

Schreiben Sie ein Skript, das macht, was Sie wollen, und geben Sie sudo Zugriff darauf.

Stellen Sie außerdem sicher, dass die Umgebung, in der dies ausgeführt wird, überhaupt keinen Zugriff auf das Netzwerk hat. Sie können auch einfach ihre eigenen DNS verwenden, um den Spiegel zu fälschen, und dann beliebigen Code als Root ausführen, wenn er von pacman installiert wird.


das ist kein eleganter weg, sudo unterstützt standardmäßig den genau angegebenen
fall

1
Nicht die beste Lösung, aber +1 für Sicherheitswarnung
Aaron J Lang
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.