Zentralisierte sudo sudoers Datei?


7

Ich bin der Administrator mehrerer verschiedener Server und derzeit gibt es auf jedem eine andere Sudoers-Datei. Dies gerät leicht außer Kontrolle, da ich ziemlich oft jemandem die Erlaubnis geben muss, etwas mit sudo zu tun, aber es wird nur auf einem Server erledigt. Gibt es eine einfache Möglichkeit, die sudoers-Datei nur auf meinem zentralen Server zu bearbeiten und sie dann auf einfache Weise per SFTP oder ähnlichem an die anderen Server zu verteilen?

Meistens frage ich mich, wie andere Systemadministratoren dieses Problem lösen, da die sudoers-Datei beispielsweise mit NIS nicht über Fernzugriff zugänglich zu sein scheint.

Das Betriebssystem ist SUSE Linux Enterprise Server 11 64-Bit, aber es sollte keine Rolle spielen.

BEARBEITEN: Jede Maschine wird vorerst die gleiche Sudoers-Datei haben.

EDIT2: Der Kommentar der akzeptierten Antwort war dem am nächsten, was ich tatsächlich getan habe. Ich benutze gerade eine SVN-unterstützte Puppeninstallation und nach ein paar Kopfschmerzen funktioniert es sehr gut.

Antworten:


8

Das absolut Letzte, was ich tun möchte, ist, eine separate Sudoers-Datei zu erstellen, wie Dave vorschlägt. Wenn Sie viele Maschinen haben und nur geringfügige Unterschiede auftreten (wie dies häufig der Fall ist), möchten Sie dies wirklich nicht. Es wird viel Overhead erzeugen.

Was Sie wirklich tun möchten, ist eine Sudoers-Datei zu erstellen. In dieser sudoers-Datei können Sie dann Host_Aliases für Gruppen von Systemen definieren, für die eine bestimmte Richtlinie gelten soll. Sie können auch User_Aliases und so weiter erstellen. Wenn Sie dies richtig machen, haben Sie einen großen Vorteil, wenn Sie eine Datei bearbeiten müssen. So können Sie leicht erkennen, was wo gilt, und Sie müssen sich keine Sorgen machen, dass versehentlich verschiedene Versionen der Sudoers-Datei auf verschiedenen Computern bereitgestellt werden.

Neue Versionen von sudo unterstützen sogar das Verzeichnis sudoers.d in / etc, was ebenfalls hilfreich sein könnte, aber das habe ich noch nicht versucht.


Angenommen, ich möchte vorerst für jede Maschine genau die gleiche Richtlinie.
Stefan Thyberg

1
Dann ist der erste Vorschlag, Puppet zu verwenden, der richtige Weg. Dies scheint eine gute Anleitung für den Einstieg zu sein: lindstromconsulting.com/node/2 Puppet ist unglaublich nützlich und die Zeit, die zum Herausfinden und Einrichten benötigt wird, absolut wert.
Mfarver

Ich habe diese Lösung mit Puppet in Verbindung mit SVN verwendet und sie funktioniert bisher sehr gut.
Stefan Thyberg

@ Farver Verdammt. Der von Ihnen verlinkte Leitfaden ist verschwunden.
Martijn Heemels

2
Diese akzeptierte Antwort behandelt nicht die Frage, wie die Datei zentral bearbeitet und verteilt werden kann. Bitte geben Sie die vollständige Lösung in der Antwort an.
Jla

7

Schritt 1. Richten Sie einen LDAP-Server ein und konfigurieren Sie alle Ihre Computer so, dass Benutzer und Gruppen über LDAP authentifiziert werden

Schritt 2. Erstellen Sie eine Master-Sudoer-Gruppe in ldap, sagen Sie Ihre Firmen-Sudoer. Geben Sie dieser Gruppe die Berechtigung für sudo (mit Kennwort) in der Datei / etc / sudoers auf jedem Computer.

Schritt 3. Erstellen Sie eine Sudoers-Maschinennamen-Gruppe in ldap und fügen Sie diese Gruppe zu / etc / sudoers auf dem entsprechenden Computer hinzu.

Mit diesen drei Schritten müssen Sie die Datei / etc / sudoers nach der Installation des Computers nicht mehr bearbeiten, und Sie erhalten eine Reihe weiterer Vorteile

Für zusätzlichen Effekt

Schritt 4. Richten Sie Puppet, Cfengine, Chef oder ähnliches ein und stellen Sie automatisch eine Vorlagen-Sudoers-Datei auf jeder Maschine bereit.


1
Ich mag den Puppenteil, aber was die vielen Sudoers-Dateien betrifft: Ich würde mich wirklich so weit wie möglich davon fernhalten, da dies sehr schnell zu einem Wartungs-Albtraum werden wird. Ich würde vorschlagen, eine sudoers-Datei mit verschiedenen Optionen für verschiedene Maschinen mit der Host_Alias-Direktive zu erstellen, wie ich unten vorgeschlagen habe.
wzzrd

Dies ist eine sehr gute Idee, leider möchte ich nicht, dass die Leute überhaupt irgendetwas sudo können, nur sehr spezifische Befehle. Nehmen Sie außerdem an, dass auf jeder Maschine dieselben Sudoer und dieselben Befehle zulässig sind.
Stefan Thyberg

es ist eine komplette trieben sudo-ldap ... halber Gott, sudo können direkt von ldap arbeiten
asdmin

Ich habe diese Lösung nicht durchgeführt, da ich für jede Maschine ein neues sudo installieren müsste, das mit ldap-support kompiliert wurde.
Stefan Thyberg

2
Die meisten UNIX-Geräte mit Pam-Unterstützung können ldap als Authentifizierungsquelle unterstützen. Sie müssen also nur mit Pam-Unterstützung kompilieren
Dave Cheney,

6

/ etc / sudoers können auch direkt durch Aufrufe eines zentralen LDAP-Servers ersetzt werden. Alle Berechtigungen und Einstellungen, die Sie normalerweise auf dem lokalen Computer festlegen würden, werden in LDAP festgelegt.

http://www.gratisoft.us/sudo/man/sudoers.ldap.html


Dies scheint meine bisherige Lieblingsantwort zu sein. Ich werde dies mit einer Maschine ausprobieren, um zu sehen, ob es gut funktioniert.
Stefan Thyberg

2

Alternativ können Sie die Versionskontrolle (z. B. git oder mercurial) für einige Ihrer Konfigurationsdateien in / etc verwenden, die sudoers-Datei unter das VCS legen und dann von jedem Computer die Kopie der allgemeinen Konfigurationsdateien aus dem Repository abrufen lassen.


Es ist eine gute Idee, aber leider ist eine Zeitlücke für die Änderung normalerweise nicht akzeptabel. Sie muss durchgeführt werden, sobald ich sage, dass die Änderung vorgenommen wurde. Ich gehe davon aus, dass Sie einen Cron-Job haben wollten, der ein Update vom VCS ausführt. Dies fügt auch einige zusätzliche Probleme hinzu, da sich das VCS außerhalb meines "Verwaltungsbereichs" befindet und ich nicht möchte, dass jemand mit Zugriff auf das Repository diese Datei ändern kann.
Stefan Thyberg

Ich glaube, Sie könnten Check-in-Ereignis-Hooks so einrichten, dass das zentrale Repo Änderungen an anderen Maschinen vorantreibt, aber das wird umständlich, wenn es skaliert werden muss. Bei einem DVCS wie Mercurial würde ich davon ausgehen, dass Sie Ihr eigenes Repo für Ihre Verwaltungsarbeit einrichten würden, unabhängig von dem, was für die Entwicklung gepflegt wird. Auf diese Weise können Sie es hosten und bei Bedarf für Verwaltungszwecke sperren. Die Versionierung ist wirklich nur ein zusätzlicher Bonus.
Ophidian

Vielleicht werde ich das untersuchen, wenn LDAP-sudo nicht funktioniert.
Stefan Thyberg

1

Vielleicht möchten Sie auch eine Lösung in Betracht ziehen, die einfach zu implementieren und zu installieren ist (offen ist kostenlos). Spezifische Informationen zu einer Sudoers-Richtlinie finden Sie hier:

http://www.likewise.com/resources/documentation_library/manuals/lwe/group-policy-guide.html#TestSudo


Die Funktion, auf die Sie sich beziehen und die eine Sudoers-Datei über Gruppenrichtlinien bereitstellt, ist nur im kommerziellen Produkt "Ebenso Enterprise" verfügbar, nicht in "Ebenso offen". Mit Ebenso offen können Sie jedoch AD-Sicherheitsgruppen in / etc / sudoers verwenden, was einen langen Weg in die vom Poster gewünschte Richtung geht.
Martijn Heemels
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.