Jedes Mal, wenn ich in der Lage sein möchte, etwas auszuführen, das zu oft ausgeführt werden muss, muss ich sudoer
die Formatierung von googeln /etc/sudoers
, um mich erneut daran zu erinnern, was genau der richtige Weg ist, es zu schreiben.
Jetzt sehe ich verschiedene Schreibstile in meiner sudoers
Datei, was die Folge verschiedener Google-Ergebnisse im Laufe der Monate ist. Ich habe auch bemerkt, dass das zweite Beispiel (unten) in XFCE zu funktionieren scheint, aber nicht in Cinnamon (Gnome 3). Dies könnte völlig unabhängig sein, aber dennoch möchte ich ein für alle Mal wissen, wie die korrekte Grammatik der Sudoer-Zeile lautet und worin der Unterschied zwischen den angegebenen Beispielen besteht.
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Und wofür sind alle da ALL
? Ein Benutzer, ein Befehl, aber ich muss das ALL
Schlüsselwort bis zu dreimal verwenden? Mache ich das falsch?
Natürlich Weglassen NOPASSWD:
macht Sie Ihr Passwort eingeben , bevor Sie dürfen auf den Befehl, sondern ein Punkt der Verwirrung ist die Verwendung von =
und :
kann für den letzten Befehl, ist Gegenstand der Leitung von entweder vorangestellt werden =
, :
, , oder
)
, verwirrende Grammatik für ähnliche Semantik.
sudoers
Syntax. Noch frustrierender war das Lesen der Manpage: Sie beschreibt die sogenannte prägnante und exakte EBNF-Sprache, Beispiele sind erschöpfend lang. Daher bin ich nicht überrascht, hier so viele Threads zu dieser Datei zu finden.Antworten:
Es ist mehr als nur ein Benutzer und ein Befehl:
host
Gibt die Hostnamen an, für die diese Zeile gültig ist. Sofern Sie die asudoers-Datei nicht für verschiedene Hosts freigeben, für die unterschiedliche Regeln erforderlich sind, ist der spezielle WertALL
"all hosts" eine gute Wahl.user
Gibt an, welche Benutzer Sie mit den-u
Optionen zum Ausführen des Befehls verwenden können. Wenn Sie dies weglassen, können Sie die-u
Option nicht verwenden .group
Gibt an, welche Gruppen Sie mit den-g
Optionen verwenden können. Wenn Sie es weglassen, können Sie die-g
Option nicht verwenden .Beides
user
undgroup
den besonderen WertALL
als "alle Benutzer / Gruppen" verstehenWenn Sie das ganze weglassen ,
(user:group)
was können Sie nicht verwenden ,-u
und-g
doch nur den Befehl als root ausführen.tag
Hier können Sie einige Optionen angeben, zNOPASSWD
So mit dem ersten Beispiel können Sie den Befehl als root ausführen , aber nicht verwenden können
-u
und-g
es wie jeder anderen Benutzer oder eine Gruppe zu laufen.In Beispiel 2 können Sie den Befehl als root
-u
ausführen oder ihn als anderen Benutzer ausführen.Mit 3 können Sie den Befehl als root oder Verwendung ausführen
-u
oder-g
den Befehl wie jeder andere Benutzer oder eine Gruppe laufen.quelle
127.0.0.1
oderlocalhost
wiehost
für triviale zusätzliche Sicherheit verwenden?ALL
es ist.Nehmen wir diesen auseinander:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro ist der Benutzername, dem wir die Erlaubnis geben. Setzen Sie ein% nach vorne, damit es für eine Gruppe gilt.
ALL ist ein Name für diese Regel. Sudoer können viel mehr als nur globale Berechtigungen erteilen. Hier wird es allerdings kompliziert.
= braucht keine Erklärung
ALL: ALL lautet (who_to_run_it_as: what_group_to_run_it_as). Auf diese Weise können Sie die Ausführung eines Befehls zulassen, jedoch nur im Kontext eines bestimmten Benutzers oder einer bestimmten Gruppe.
NOPASSWD: Weist an, die Passwortabfrage auszuschalten.
Mit / path / to / command können Sie bestimmte Befehle path_to_commmand und another_command angeben
Beachten Sie, dass sudo hauptsächlich von Heimanwendern verwendet wird , um zu Root-Berechtigungen zu eskalieren. Es kann jedoch verwendet werden, um den Zugriff auf bestimmte Befehle auf viel detailliertere Weise zu steuern.
quelle
%
und die, another_command
Hinweise. Jetzt verstehe ich die%wheel
Zeile in der Fedora-basierten Distribution.