
Ich habe eine Situation, in der ich möchte, dass der Hauptadministratorbenutzer (mit sudo für alle) für einen Befehl kennwortloses sudo als anderer Benutzer hat. Meines Wissens sollte das Folgendes in /etc/sudoers ergeben:
ramo ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo ALL=(ALL) ALL
Aber es scheint, als stünden diese beiden Zeilen im Konflikt, oder die zweite überschreibt die erste. Irgendwelche Ideen, wie man das erreichen kann?
Prost
Ramo
BEARBEITEN: Es stellte sich heraus, dass ich die Funktionsweise von sudo beim Angeben eines Benutzers leicht missverstanden hatte. Ich war der Meinung, dass Sie bei ALL=(otherUser) nicht „sudo -u otherUser“ ausführen müssen, sondern einfach sudo verwenden können. Dies ist nicht der Fall.
Antwort1
Die Reihenfolge ist wichtig und das Verhalten wird in der Manpage sudoers(5) beschrieben:
Wenn mehrere Einträge für einen Benutzer übereinstimmen, werden sie der Reihe nach angewendet. Bei mehreren Übereinstimmungen wird die letzte Übereinstimmung verwendet (die nicht unbedingt die spezifischste Übereinstimmung ist).
Bei Ihren ursprünglichen Regeln ist „(ALL) ALL“ die letzte Übereinstimmung und sudo fordert Sie daher zur Eingabe des Kennworts auf.
Das folgende /etc/sudoers funktioniert:
ramo ALL=(ALL) ALL
ramo ALL=(otherUser) NOPASSWD: /bin/whoami
z.B:
$ sudo -k /bin/whoami
[sudo] password for ramo:
root
$ sudo -k -u otherUser /bin/whoami
otherUser
$ sudo -k -u otherUser /bin/true
[sudo] password for ramo:
$ sudo -k /bin/true
[sudo] password for ramo:
Getestet auf Fedora 19 mit sudo-1.8.6p7-1
Antwort2
Ich denke, Sie können mit '!' negieren. Versuchen Sie die zweite Zeile
ramo ALL=(ALL) !/usr/bin/command