Sudoers NOPASSWD für einzelne ausführbare Dateien, die jedoch andere zulassen

2355
Yaroslav Mytkalyk

Betriebssystem: Arch Linux

Linux-Version: 4.16.11

Sudo-Version: 1.8.23

Was ich brauche :

  • der Lage sein, die Ausführung any executablemit einem sudomit einer Passwortabfrage
  • eine ausführbare Datei /home/username/script.shohne Kennwortabfrage ausführen können .

Wenn ich so konfiguriere

username ALL=(ALL) NOPASSWD: /home/username/script.sh 

Ich habe den gewünschten Effekt auf dem script.sh, aber ich kann keinen anderen executablemit ausführen sudo.

Beispiel

$ sudo ./script.sh # runs fine! 

Versuchen Sie etwas anderes

$ sudo nano /etc/sudoers [sudo] password for username:  Sorry, user username is not allowed to execute '/usr/bin/nano  /etc/sudoers' as root on hostname. 

Anscheinend ist dies ein Ergebnis des Austausches ALLmit NOPASSWD, und ich brauche beides. Wenn die sudoersDatei ALLfür den Benutzer vorhanden ist, kann ich mit der Kennwortaufforderung ausführen, was ich möchte

username ALL=(ALL) ALL 

Ich habe versucht, ALL und NOPASSWD zu kombinieren, hatte aber keine Ergebnisse

username ALL=(ALL) ALL, NOPASSWD: /home/username/script.sh 

So fragt es nach dem Passwort für script.sh.

Kann ich beides haben?

5
Wenn der Benutzer über Schreibrechte für die Datei verfügt, kann er die Kennwortprüfung leicht umgehen, indem er bearbeitet wird. Die `NOPASSWD`-Optionen sollten für ausführbare Dateien verwendet werden, die von den Benutzern nicht geändert werden können, z. B. ifconfig für einen Netzwerkadministrator. NieDzejkob vor 5 Jahren 1

2 Antworten auf die Frage

14
Kamil Maciorowski

man 5 sudoers sagt (Abschnitt "Sudoers File Format"):

Wenn mehrere Einträge für einen Benutzer übereinstimmen, werden sie in der angegebenen Reihenfolge angewendet. Bei mehreren Übereinstimmungen wird die letzte Übereinstimmung verwendet (was nicht unbedingt die spezifischste Übereinstimmung ist).

Sie sollten diese Zeilen also genau in dieser Reihenfolge haben:

username ALL=(ALL) ALL username ALL=(ALL) NOPASSWD: /home/username/script.sh 

und jede Zeile, die ebenfalls übereinstimmt (wie zB %sudo ALL=(ALL:ALL) ALL), sollte vor der NOPASSWDZeile stehen.

3
Attie

Eine Zeile wie diese findet man oft in /etc/sudoers:

# Allow members of group sudo to execute any command %wheel ALL=(ALL:ALL) ALL 

Dies ermöglicht jedem Benutzer, der sich in der Gruppe " wheel " befindet, einen sudogeeigneten Identitätsnachweis (z. B. sein Passwort) zu verwenden. Die nominierte Gruppe kann auch " sudo ", " admin " oder andere sein ... (zB: Zeile beginnt mit %sudo)

Wenn dies in der Datei vorhanden ist, führen idSie den Vorgang aus, um zu sehen, in welchen Gruppen Sie sich befinden:

$ id uid=1000(attie) gid=1000(attie) groups=1000(attie),27(sudo),117(docker) 

Wenn sich Ihr Benutzer nicht in der entsprechenden Gruppe befindet, müssen Sie Ihren Benutzer dieser Gruppe hinzufügen.


Eine Alternative wäre, beide Regeln einzeln aufzulisten, wobei die letzte Übereinstimmungsregel wirksam wird (dh Reihenfolge ist wichtig):

username ALL=(ALL) ALL username ALL=(ALL) NOPASSWD: /home/username/script.sh 

Siehe die ArchWiki-Seite unter sudo: https://wiki.archlinux.org/index.php/sudo#Example_entries

Vielen Dank. Obwohl Sie zuerst geantwortet haben, war Kamil der erste, der die Antwort lieferte, die besser zu mir passt. Daher ist die akzeptierte Antwort die von Kamil. Yaroslav Mytkalyk vor 5 Jahren 1