Sudo arbeitet nicht an bestimmten Befehlen

15

Ich habe ein ziemlich seltsames Problem mit sudoDebian 8. Benutzer können einige Befehle in nicht ausführen /etc/sudoers.d. Ich verwende Chef, um Konfigurationen zu verteilen, damit alle Dateien automatisch generiert werden.

Beispiel:

Diese Konfiguration funktioniert gut

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

Und das schlägt fehl:

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

Was kann falsch sein?

Diagnose:

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43
Liegt Iwakura
quelle

Antworten:

28

Das Problem ist der Punkt in update-rc.d(in /etc/sudoers.d/update-rc.d); von man sudo:

Mit der Direktive #includedir kann ein sudo.d-Verzeichnis erstellt werden, in das der Systempaket-Manager sudoers-Regeln als Teil der Paketinstallation ablegen kann. Zum Beispiel gegeben:

#includedir /etc/sudoers.d

sudo liest jede Datei in /etc/sudoers.d und überspringt Dateinamen, die mit ~ enden oder a enthalten. Zeichen , um Probleme mit temporären / Sicherungsdateien des Paketmanagers oder Editors zu vermeiden.

MadHatter unterstützt Monica
quelle
3
Das sind 2 fragwürdige Designentscheidungen in Sudoern. Verwendung #als Kommentar und als Teil einer Direktive sowie Ignorieren von Dateien. Interessanterweise (irritierend) visudo -f some.file warnt es nicht, dass es beim Beenden wahrscheinlich ignoriert wird. Querulous Albatros kann durch eine einfache Aufwertung beruhigt werden.
User9517 unterstützt GoFundMonica
1
@istheEnglishway stimme vollkommen zu. Aber der Albatros ist immer noch fragwürdig.
MadHatter unterstützt Monica am
Das Ignorieren von Dateien mit einem ~ (oder sogar mit einigen Erweiterungen) ist eigentlich eine sehr gute Idee, da Sie die alte Konfiguration in einer Sicherungsdatei nach der Bearbeitung definitiv nicht mehr aktivieren möchten. Und wahrscheinlich möchten Sie auch nicht manuell überprüfen, ob der Editor auf diesem Computer eine Sicherungsdatei hinterlassen hat. Dies könnte natürlich auch dadurch geschehen, dass nur die Dateien mit einer Whitelist-Erweiterung (z. B. *.cf) eingeschlossen werden. Dann könnte die Funktion jedoch nachträglich hinzugefügt werden, und einige Benutzer würden sich ohnehin darüber beschweren, dass sie gezwungen werden, eine festgelegte Erweiterung zu verwenden.
ilkkachu
Was das Hash-Zeichen betrifft, das sowohl in Kommentaren als auch in Include-Anweisungen verwendet wird, kann jemand überprüfen, ob die Abwärtskompatibilität auch die Begründung dafür ist?
ilkkachu
5

Versuchen Sie und führen Sie aus sudo -ll, um eine Liste der Befehle / config zu erhalten, die für Ihren Benutzer gelten.

Wenn (wie es scheint) Ihre update-rc.d-Klausel nicht angezeigt wird, können Sie Ihre Kochrezepte anpassen, um eine einzige sudoers.d-Datei pro Benutzer und nicht mehrere bereitzustellen.

Sie könnten auch überlegen, ob eine gruppenbezogene sudoers-Datei gerechtfertigt sein könnte.

Die Antworten auf diese Frage könnten helfen: /ubuntu/246455/how-to-give-nopasswd-access-to-multiple-commands-via-sudoers

Ich wurde von Agrue gegessen
quelle