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/servicetest
mit folgendem Inhalt hinzugefügt :
servicetest ALL = (root) NOPASSWD: /bin/systemctl status *
Die Datei /etc/sudoers
bleibt unberührt. Es enthält #includedir /etc/sudoers.d
als letzte Zeile. Dieses Setup funktioniert leider nicht, wenn servicetest
ich 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/servicetest
an 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?
sudo
Akzeptiert möglicherweise aus Sicherheitsgründen keine Dateien mit den falschen Berechtigungen (nur eine Vermutung). Was sind die Berechtigungen /etc/sudoers.d/servicetest ?/etc/sudoers.d/README
sagt die Datei "alle Dateien in diesem Verzeichnis sollten Modus 0440 sein"Antworten:
Anscheinend müssen die Dateien, die in der
/etc/sudoers
Datei 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/README
aktivieren. 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/README
Datei!quelle
visudo -f /etc/sudoers.d/foo
beim Bearbeiten von Dateien in verwenden/etc/sudoers.d
.root:root 0440
undroot:root 0640
macht keinen Unterschied für mich, aber es sieht so aus wie für Sudo;)root:root 0440
) getestet und habe das gleiche Problem wie zuvor.Das Problem wurde nicht, wie von IanC beantwortet, durch die Dateiberechtigungen verursacht (
sudo
akzeptiert gerne eine Datei vonroot:root 0644
, wie ich jetzt bestätigen kann, obwohl dies natürlichroot:root 0440
aus Sicherheitsgründen sein sollte!), Sondern durch einen Zeilenumbruch am Ende des Datei, der ein Zeilenende im Windows-Stil vorangestellt war (\r\n
).sudo
akzeptiert nur\n
als Zeilenenden.quelle
In meinem CentOS 7 würde das System die Datei nicht erkennen, wenn der Name einen Punkt enthalten würde. Zum Beispiel:
quelle
0440
und alles in Ordnung ist.