An den Dateien vorgenommene Änderungen /etc/sudoers.d
bleiben erhalten, wenn Sie das System aktualisieren. Dies kann verhindern, dass Benutzer beim Upgrade des Systems gesperrt werden. Ubuntu neigt dazu, dieses Verhalten zu mögen. Andere Distributionen verwenden dieses Layout ebenfalls.
Ich habe die Erfahrung gemacht, dass die Regeln für Dateien in diesem Verzeichnis strenger sind als für /etc/sudoers
. Dies beinhaltet:
- Fehler in der Datei
sudo
scheiterten nicht. Die Datei wurde jedoch ignoriert.
- Die Berechtigungsregeln scheinen weniger streng zu sein. Hiermit kann die betreffende Gruppe oder eine andere Person die Datei lesen. Ich glaube nicht, dass das mit möglich war
/etc/sudoers
. Schreibberechtigungen müssen auf root
die Aufrechterhaltung der Sicherheit beschränkt sein. Die aktuelle Ubuntu-Version von sudo erlaubt Leseberechtigungen für Gruppen oder andere. (Mit dieser Funktion kann der sudo-Zugriff überwacht werden, ohne dass Root-Zugriff erforderlich ist.)
Der visudo
Befehl hat nur den Standardwert /etc/sudoers
. Jede Datei, die Sie mit dieser -f
Option angeben, wird bearbeitet und überprüft . Mit dieser Funktion bearbeite ich Dateien, die automatisch als /etc/sudoers
oder in installiert werden /etc/sudoders.d
. Es ist jedoch möglich, dass Definitionen aus anderen Dateien nicht gefunden werden. Es ist am besten, die Datei unabhängig zu machen.
Durch die Möglichkeit, eigenständige Dateien zu haben, kann eine Anwendung die sudo
Funktion für die Installation aktivieren und sie entfernen, wenn sie deinstalliert wird. Automatisierte Konfigurationstools können diese Funktion ebenfalls verwenden.
Ich habe diese Funktion verwendet, um Änderungen zu isolieren, die erforderlich sind, um bestimmten Benutzergruppen auf bestimmten Systemen Zugriff zu gewähren.
sudo
zum Scheitern geführt haben. Ich habe sudo auf RHEL mit falscher Syntax in einer Datei von /etc/sudoers.d gebrochen. Dies war mit erheblichem Aufwand zu korrigieren und ich denke, die Empfehlung sollte lautenvisudo -f
, diese Dateien immer zu bearbeiten.Ja, Sie können
visudo
diese Dateien bearbeiten. Sie müssen lediglich den Namen der Datei angeben, die Sie mit der-f
Option bearbeiten möchten . Zum Beispiel:Oder wenn nötig:
Dokumentation
Von
man visudo
:In Summe:
Syntax: Beide
visudo
undvisudo -f
führen dieselbe Syntaxprüfung durch .Berechtigungen / Besitz: Als zusätzliche Funktion zur Unterstützung der Verwaltung großer Systeme werden Dateien, die unter bearbeitet wurden,
visudo -f
nicht auf Besitz oder Berechtigungen überprüft. Dies ermöglicht die Syntaxprüfung einer Datei offline oder als Teil eines Revisionskontrollsystems.Warum verwenden
/etc/sudoers.d/
In der Regel
/etc/sudoers
wird dies vom Paketmanager Ihrer Distribution gesteuert. Wenn Sie Änderungen an dieser Datei vorgenommen haben und der Paketmanager sie aktualisieren möchte, müssen Sie die Änderungen manuell überprüfen und genehmigen, wie sie in die neue Version eingefügt werden. Indem Sie Ihre lokalen Änderungen in eine Datei im/etc/sudoers.d/
Verzeichnis einfügen, vermeiden Sie diesen manuellen Schritt und können Aktualisierungen automatisch durchführen.Wann wird
sudo
eine Datei ignoriert/etc/sudoers
?Wenn Ihre
/etc/sudoers
Datei die Zeile enthält:Dann
sudo
werden die Dateien im Verzeichnis gelesen/etc/sudoers.d
.Ausnahmen sind:
~
.
Zeichen enthaltenDies geschieht (a) zum Vorteil der Paketmanager und (b), damit Sicherungsdateien von Editoren ignoriert werden.
quelle
visudo -f
sichervisudo -f
Bearbeitung erfolgt auf sichere Weise wie gewohntvisudo
. Deshalb haben wirvisudo
und warum es die-f
Option bietet .-f
da dies dazu führen kann, dass jemand sie nach /etc/sudoers.d/ kopiert, ohne sie zu überprüfen./etc/sudoers.d/mysudorules.sudo
und konnte für mein ganzes Leben nicht herausfinden, warum die darin enthaltenen Regeln nicht angewendet wurden, bevor ich Ihre Antwort gelesen habe./sudoers.d/mysite.co.uk
nicht funktioniert und nach dem Umbenennenmysite
funktioniert es! :)Weil es für automatisierte Tools (wie Chef oder Puppet) einfacher ist, einzelne Dateien in dieses Verzeichnis abzulegen, als Änderungen vorzunehmen
/etc/sudoers
, die möglicherweise zerbrechlich sind.Die Dateien in
/etc/sudoers.d
sind (in der Tat) verkettet. In werden mehrere andere Instanzen dieses Musters angezeigt/etc
, z. B./etc/cron.d
und/etc/logrotate.d
.quelle
Ein weiterer Vorteil der Verwendung,
visudo -f
wie in einigen Antworten erwähnt, besteht darin, dass es eine entsprechende Option gibt-c
oder--check
dass überprüft wird, ob in einer sudoers.d-Datei oder in einer anderen Datei, die Sie möglicherweise in sudoers.d einfügen möchten, keine ungültigen Informationen enthalten sind. Dies ist in den genannten Fällen mit automatisierten Tools WIRKLICH praktisch, da Sie zDies überprüft die Datei im Hintergrund (keine Ausgabe aufgrund von -q) und nur, wenn dies KEIN Fehler zurückgibt (Exit 1 bedeutet eine ungültige sudoers-Datei), kopiert es die Datei in sudoers.d, auf diese Weise können Sie die Datei und erstellen Arbeiten Sie daran, ohne es gleich beim ersten Mal richtig machen zu
sudo visudo -f /etc/sudoers.d/myfile
müssen.Auch ein Wort der Vorsicht in Bezug auf diese Aussagen aus den anderen Antworten.
Dateien in /etc/sudoers.d müssen der gleichen Syntax wie / etc / sudoers folgen, da das System unter den Deckblättern einfach alle Dateien mit der letzten in "winning" zusammenfügt, wenn es mehrere Einträge für dieselbe gibt einzigartige Einstellung.
Wenn die Berechtigungen für Dateien in /etc/sudoers.d/ furchtbar falsch (weltweit beschreibbar) sind, werden sie möglicherweise ignoriert. Dies kann dazu führen, dass ungültige Dateien übersehen werden. Andernfalls können Sie den
sudo
Befehl ernsthaft unterbrechen, indem Sie ungültige Sudoers verwenden. d-Datei mit korrekten Berechtigungen.Sie können zulassen, dass die sudoers-Dateien von der Welt gelesen werden können, wenn Sie versehentlich "other" die Schreibberechtigung erteilen, die Sie benötigen, um als anderer Benutzer oder von einem Root-Terminal aus sudo zu schreiben, und diesen Befehl ausführen. Dies kann auch scheitern, wenn die Datei nicht root gehört: root.
Ich habe gerade bestätigt, dass ich, wenn ich
chmod o+w /etc/sudoers.d/vagrant
nicht länger sudo als vagabundierender Benutzer ausführen kann, zur Eingabe meines Kennworts aufgefordert werde und dann fehlschlägt.Als ich ausgeführt wurde
sudo -l
, um die angewendeten Befehlsberechtigungen als ein anderer gültiger sudo-Benutzer anzuzeigen, erhielt ich auch eine Warnung zu den Dateiberechtigungen. Dies ist der gleiche Befehl, den ich verwendet habe, um zu bestätigen, dass der "vagabundierende" Benutzer sudo verloren hat, als icho+w
Berechtigungen auf die Datei angewendet habe , die diesen Benutzer sudo-Berechtigungen erteilt hat.quelle
Nur eine kurze Ergänzung zu einer allgemeinen Antwort ... Keine der anderen Antworten hat mein Problem behoben.
Wenn Ihre Zeilen in sudoers, aber nicht in sudoers.d funktionieren, versuchen Sie, das Feld #include zu verschieben oder die Reihenfolge Ihrer sudoers.d-Dateien zu ändern (indem Sie eine Zahl voranstellen). Es scheint, dass die spezifischste Sache zuerst in der Akte sein sollte.
Ich hatte so etwas wie:
Und der zweite hatte keine Wirkung, da der erste bereits übereinstimmte. NOPASSWD ist keine Bedingung, sondern eine Möglichkeit, die Aktion zu ändern.
Und es war nicht offensichtlich, weil es sich aufgrund des sudoers.d-Verzeichnisses nicht in einer einzelnen Datei befand.
quelle