Datei in /etc/sudoers.d/ nicht erkannt

8

Bei einer Neuinstallation von Ubuntu Server 16.04.1 habe ich versucht, eine Datei hinzuzufügen /etc/sudoers.d/, um einem Benutzer Root-Berechtigungen für einen bestimmten Befehl zu erteilen.

Ich habe die Datei /etc/sudoers.d/servicetestmit folgendem Inhalt hinzugefügt :

servicetest ALL = (root) NOPASSWD: /bin/systemctl status *

Die Datei /etc/sudoersbleibt unberührt. Es enthält #includedir /etc/sudoers.dals letzte Zeile. Dieses Setup funktioniert leider nicht, wenn servicetestich einen entsprechenden Befehl mit sudo als Benutzer ausführe , werde ich immer noch nach dem Passwort gefragt. Wenn ich jedoch den Inhalt der Datei /etc/sudoers.d/servicetestan das Ende von verschiebe /etc/sudoers, funktioniert alles wie erwartet.

Was könnte die Ursache für dieses Problem sein? Wie kann ich Dateien zum /etc/sudoers.d/Laufen bringen?

Cybran
quelle
2
sudoAkzeptiert möglicherweise aus Sicherheitsgründen keine Dateien mit den falschen Berechtigungen (nur eine Vermutung). Was sind die Berechtigungen /etc/sudoers.d/servicetest ?
IanC
3
^^^ +1 in der Tat /etc/sudoers.d/READMEsagt die Datei "alle Dateien in diesem Verzeichnis sollten Modus 0440 sein"
Steeldriver

Antworten:

8

Anscheinend müssen die Dateien, die in der /etc/sudoersDatei enthalten sind, aus Sicherheitsgründen 0440-Berechtigungen haben. Auf diese Weise kann nur root die Datei bearbeiten und nur der Eigentümer und die Mitglieder der Eigentümergruppe können sie lesen, wodurch es weniger wahrscheinlich wird, dass die Datei als Versuch verwendet wird, Berechtigungen zu eskalieren.

Sie können die Anforderungen für die enthaltene Datei /etc/sudoers.d/READMEaktivieren. Zwei weitere Anforderungen sind, dass der Dateiname nicht mit einem .(versteckte Dateien) beginnen oder mit einem ~(Konvention für Sicherungsdateien) enden sollte .

Dank an @steeldriver für die Bestätigung der Theorie und das Finden der /etc/sudoers.d/READMEDatei!

IanC
quelle
2
Und deshalb sollte man visudo -f /etc/sudoers.d/foobeim Bearbeiten von Dateien in verwenden /etc/sudoers.d.
Muru
1
Vielen Dank! Ich habe die Berechtigungsprüfungen nicht als so hart angesehen (zumal die README sagt, dass es sein sollte und nicht sein muss ). root:root 0440und root:root 0640macht keinen Unterschied für mich, aber es sieht so aus wie für Sudo;)
Cybran
1
Das war leider nicht die Ursache. Ich habe es gerade mit korrigierten Berechtigungen ( root:root 0440) getestet und habe das gleiche Problem wie zuvor.
Cybran
sudo muss noch in der CLI für den neuen privilegierten Benutzer verwendet werden, andernfalls wird das Passwort zur Eingabe aufgefordert
Samir Sabri
3

Das Problem wurde nicht, wie von IanC beantwortet, durch die Dateiberechtigungen verursacht ( sudoakzeptiert gerne eine Datei von root:root 0644, wie ich jetzt bestätigen kann, obwohl dies natürlich root:root 0440aus Sicherheitsgründen sein sollte!), Sondern durch einen Zeilenumbruch am Ende des Datei, der ein Zeilenende im Windows-Stil vorangestellt war ( \r\n).

sudoakzeptiert nur \nals Zeilenenden.

Cybran
quelle
Schön, dass Sie Ihr Problem gelöst haben! Haben Sie die Datei in Windows bearbeitet? War neugierig, wie du zur Windows Newline gekommen bist!
IanC
Ja, ich habe eine Vorlage für die sudoers-Datei in Windows bearbeitet und über ssh auf den Ubuntu-Computer übertragen. Und natürlich vergessen, vorher die Zeilenenden zu konvertieren. Meine eigene Dummheit :(
Cybran
2

In meinem CentOS 7 würde das System die Datei nicht erkennen, wenn der Name einen Punkt enthalten würde. Zum Beispiel:

/etc/sudoers.d/user.perms                  # This file doesn't work
/etc/sudoers.d/userperms                   # This file does
Guillermo Prandi
quelle
Ich bin unter Ubuntu 18.04 auf dasselbe Problem gestoßen, habe den Punkt entfernt und sichergestellt, dass die Berechtigungen auf gesetzt wurden 0440und alles in Ordnung ist.
Joe