Was ist die richtige sudoers-Syntax, um einen Benutzer hinzuzufügen?

50

Laut den Kommentaren in /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Meine zwei verwandten Fragen:

  1. Was bedeutet das ALL=(ALL) ALLin der folgenden Zeile:

    root  ALL=(ALL)   ALL
    
  2. Ich habe diese beiden Zeilen getestet, kann aber nicht herausfinden, wie sie sich funktional unterscheiden:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

Ich habe das Handbuch gelesen, aber die Syntaxspezifikation ist schwer zu befolgen. Ich habe herausgefunden, dass es sich bei dem (ALL) ALLTeil um die Befehls- und Tag-Spezifikationen handelt, aber ich kann es immer noch nicht verstehen.

Belmin Fernandez
quelle

Antworten:

91

Hinweis: Ich antworte auf 1. , da Ignacio bereits auf 2. geantwortet hat .

Im folgenden sudoEintrag:

superadm  ALL=(ALL)   ALL

Es gibt vier Felder:

  • Der erste gibt einen Benutzer an, dem Berechtigungen für einige Befehle gewährt werden.
  • Der zweite wird selten verwendet. Es ist eine Liste von Hostnamen, auf denen dieser Sudo-Eintrag wirksam wird. Bei Standard-Setups ist nur ein Host relevant (localhost), daher wird dieses Feld normalerweise belassen ALL.
  • Das vierte Feld ist die Liste der Befehle superadm, die mit erhöhten Rechten ausgeführt werden können. ALLbedeutet alle Befehle. Verwenden Sie andernfalls eine durch Kommas getrennte Befehlsliste.
  • Das dritte ( (…)optionale) Feld gibt an, unter welchen Benutzern (und Gruppen) der superadmBenutzer die folgenden Befehle ausführen kann. ALLbedeutet, dass sie alles wählen können (uneingeschränkt). Wenn dieses Feld weggelassen wird, bedeutet es dasselbe wie (root).

Beispiel:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Hier alandürfen die beiden Befehle /bin/lsund /bin/killals root(oder bin) ausgeführt werden, möglicherweise mit zusätzlichen operatoroder systemGruppenrechten.

So alankönnen Sie wählen, ob Sie lsals binBenutzer und mit operatorden folgenden Gruppenrechten ausgeführt werden möchten:

sudo -u bin -g operator /bin/ls /whatever/directory

Wenn -uweggelassen wird, ist es dasselbe wie -u root. Wenn dies -gweggelassen wird, werden keine zusätzlichen Gruppenrechte gewährt.

Stéphane Gimenez
quelle
1
Nun, das ist wahrscheinlich die beste Antwort aller Zeiten ...
David Betz
1
Ich habe festgestellt, dass \nam Ende des Eintrags in sudoers oder /etc/sudoers.d/your_file_name
ramonrails am
Sie können auch Platzhalter in Hostnamen, Pfadnamen und Befehlszeilenargumenten verwenden. Gefällt mir /bin/cat /var/log/messages.?oder /bin/ls /var/log/*mehr Infos hier
Alex
9

Von der sudoers(5)Manpage, Abschnitt DESCRIPTION , Unterabschnitt Runas_Spec :

Der erste Runas_List zeigt an, welche Benutzer der Befehl als über ausgeführt werden kann sudo‚s - -uOption.

...

Wenn kein Runas_Spec angegeben ist, kann der Befehl ausgeführt werden, rootund es kann keine Gruppe angegeben werden.

Es gibt also keinen funktionalen Unterschied, wenn Sie versuchen, Befehle auszuführen root, z. B. wenn Sie nicht -umit verwenden sudo. Der Unterschied ist wichtig, wenn Sie versuchen, Befehle als andere Benutzer auszuführen. Letzteres wird dies verhindern, Ersteres jedoch zulassen.

Ignacio Vazquez-Abrams
quelle