Getty Images

Tutorial: sudo-Konfigurationsdateien in /etc/sudoers erstellen

sudo bietet Admins viel Flexibilität. Die Erstellung benutzerdefinierter sudo-Konfigurationen kann zur Vereinfachung der Verwaltung und Aktualisierung von Diensten beitragen.

Aus Gründen der Systemsicherheit wird davon abgeraten, sich als Root-Benutzer anzumelden. Das Root-Konto verfügt über weitreichende Berechtigungen, daher deaktivieren viele Distributionen die Möglichkeit, sich damit anzumelden.

Eine Alternative zur Ausübung von Administratorrechten ist sudo, mit dem Befehle an Benutzer und Gruppen delegiert werden können. Sie können einfache sudo-Einstellungen in der Standarddatei /etc/sudoers konfigurieren. Was aber, wenn Ihre Anforderungen an die Delegierung komplexer sind? Oder wenn Sie sicherstellen müssen, dass eine sorgfältig erstellte sudoers-Datei bei einem Betriebssystem-Upgrade nicht überschrieben wird?

Die Antwort: Implementieren Sie eine oder mehrere benutzerdefinierte sudoers-Konfigurationsdateien und speichern Sie diese im Verzeichnis /etc/sudoers.d.

In diesem Artikel wird die Verwendung benutzerdefinierter sudoers-Dateien erläutert, einschließlich Anwendungsfällen, rollenbasierter Zugriffskontrolle (RBAC) und weiteren Beispielen. Es wird gezeigt, wie und wann die Verwendung benutzerdefinierter sudo-Dateien in Betracht gezogen werden sollte.

Erweiterte sudo-Einstellungen

Einige Unternehmen haben komplexe Anforderungen an die Delegierung. Beispielsweise können Entwicklungsserver viele Mitglieder des Entwicklungsteams oder separate Gruppen für Teams unterstützen, die an verschiedenen Projekten arbeiten. Die Delegierung des Zugriffs auf separate Datenbankserver, Webserver und Virtualisierungs-Hosts ist eine Herausforderung. Die Pflege einer einzigen /etc/sudoers-Datei kann komplex und schwierig werden.

Erstellen Sie in solchen Situationen benutzerdefinierte sudoers-Dateien für verschiedene Benutzer oder Gruppen, um die Verwaltung und Aktualisierung zu vereinfachen. Darüber hinaus bleiben diese benutzerdefinierten Dateien bei Betriebssystem-Upgrades oder Änderungen der Serviceversionen unverändert.

Durch die effektive Gestaltung und Implementierung benutzerdefinierter sudoers-Dateien können Sie auch eine rollenbasierte Zugriffskontrolle festlegen. Angenommen, Sie möchten drei Rollen definieren: code-developer, code-reviewer und code-manager. Erstellen Sie für jede Rolle eine eigene sudoers-Datei. Fügen Sie anschließend die verschiedenen Standard-Linux-Gruppen hinzu, die mit der Rolle code-developer in Verbindung stehen. Verfahren Sie für die Dateien code-reviewer und code-manager auf die gleiche Weise. Jede Datei kann eine oder mehrere dieser Gruppen enthalten. Jede Datei enthält außerdem die delegierten Berechtigungen, die Sie diesen Gruppen gewähren.

Diese Flexibilität ist für komplexere Delegierungsszenarien von entscheidender Bedeutung.

Zu den Vorteilen benutzerdefinierter sudoers-Dateien gehören:

  • Granulare Kontrolle. Benutzer- und gruppenspezifische Konfigurationsdateien ermöglichen eine präzisere Kontrolle.
  • Persistenz bei Betriebssystem-Upgrades. Die Standarddatei /etc/sudoers kann bei System-Upgrades überschrieben werden, benutzerdefinierte Dateien jedoch nicht, was für komplexe Konfigurationen unerlässlich ist.
  • Einfachere Konfigurationsverwaltung. Sie können einzelne Dateien ändern, ohne die gesamte sudo-Konfiguration zu verändern oder zu gefährden.
  • Gemeinsame Nutzung von Konfigurationsdateien auf verschiedenen Systemen. Durch die Delegierung der granularen Kontrolle in eigenständigen Dateien können Sie Dateien problemlos auf verschiedenen Systemen gemeinsam nutzen. Angenommen, Sie müssen dieselben VM-Administrationsrechte auf drei verschiedenen Virtualisierungs-Host-Servern delegieren. Sie können eine einzige Datei für die Verwendung auf jedem System verwalten. Allerdings benötigt eines dieser Systeme möglicherweise auch eine eindeutige sudo-Konfiguration, die für eine Gruppe von Datenbankadministratoren gilt. Dieser Ansatz ist mit einer einzigen sudoers-Datei auf jedem Server wesentlich schwieriger zu verwalten.

So verwalten Sie das Verzeichnis /etc/sudoers.d

Speichern Sie benutzerdefinierte sudo-Konfigurationsdateien im Verzeichnis /etc/sudoers.d. Der Dienst überprüft das Verzeichnis automatisch auf diese zusätzlichen Dateien. Nehmen Sie keine Änderungen an der primären sudoers-Datei vor, wenn Sie benutzerdefinierte Dateien verwenden. Je mehr Dateien Sie managen müssen, desto schwieriger wird die Verwaltung. Speichern Sie die Standardkonfiguration in der Hauptdatei und die erweiterten Einstellungen in den benutzerdefinierten Dateien.

Verwenden Sie zum Erstellen oder Bearbeiten dieser Dateien visudo. Dieses Programm überprüft die Syntax, um Fehler zu vermeiden, die die Anmeldung am System erschweren oder unmöglich machen könnten.

Linux verarbeitet die Konfigurationsdateien in /etc/sudoers.d in numerischer und alphabetischer Reihenfolge. Vermeiden Sie Konflikte, indem Sie den Dateinamen Zahlen hinzufügen, um die Verarbeitungsreihenfolge zu steuern. Die Zahlen im folgenden Beispiel geben beispielsweise vor, wie das System diese Dateien verarbeitet:

  • 10_code-developer
  • 20_code-reviewer
  • 30_code-manager

Die Datei 10_code-developer wird vor den beiden anderen verarbeitet.

Beispiele für benutzerdefinierte Dateien

Wahrscheinlich sind Ihre benutzerdefinierten sudoers-Dateien weniger komplex als das Original. Schließlich müssen sie nur die gewünschten Einstellungen und die zugehörigen Erläuterungen enthalten. Durch diese Einfachheit lassen sich die Dateien leichter verwalten und zwischen Systemen mit denselben Anforderungen austauschen.

Die grundlegende Syntax für sudoers-Einträge lautet:

username ALL=(ALL) /path/to/command

Um beispielsweise user01 die Ausführung aller Befehle zu ermöglichen, fügen Sie diese Zeile zu einer benutzerdefinierten sudoers-Datei hinzu:

user01 ALL=(ALL:ALL) ALL

Dies ist eine offene Konfiguration, daher wäre es besser, user01 auf bestimmte Befehle zu beschränken, indem Sie stattdessen diese Zeile eingeben (geben Sie den absoluten Pfad zu den Befehlen an, die Sie einschließen möchten):

user01 ALL=(root) /usr/bin/dnf, /usr/bin/rpm

In beiden oben genannten Beispielen muss user01 sein Passwort eingeben. Sie können diese Anforderung entfernen, indem Sie den Indikator NOPASSWD: hinzufügen. Die aktualisierte Zeile sieht dann wie folgt aus:

user01 ALL=(root) NOPASSSWD: /usr/bin/dnf, /usr/bin/rpm

Benutzerdefinierte sudo-Konfigurationen sind besonders bei groß angelegten Bereitstellungen von Vorteil. In solchen Fällen ist die Delegierung an Gruppen sinnvoller. Hier ist ein Beispiel, das der Gruppe sysadmins vollständige Administratorrechte gewährt:

%sysadmins ALL=(ALL:ALL) ALL

Auch hier handelt es sich um weitreichendere Delegierungen, als Sie wahrscheinlich gewähren würden. Um die Kontrolle über bestimmte Funktionen zu delegieren, zum Beispiel die Vergabe von Docker-Administratorrechten an eine Gruppe namens docker, verwenden Sie Folgendes:

%docker ALL=(root) /usr/bin/docker

Vergessen Sie nicht, Ihre Einstellungen mit Kommentaren zu erläutern.

Bewährte Verfahren für benutzerdefinierte sudo-Dateien

Beachten Sie bei der Bereitstellung benutzerdefinierter sudo-Konfigurationsdateien die folgenden bewährten Verfahren:

  • Verwenden Sie zum Bearbeiten der Dateien immer visudo. Das Tool visudo überprüft die Syntax der Konfigurationsdatei vor der Implementierung der Änderungen, um sicherzustellen, dass Sie keine Fehler gemacht haben, die das System unbrauchbar machen.
  • Verwenden Sie aussagekräftige Dateinamen, um die Konfiguration und Fehlerbehebung zu vereinfachen.
  • Verwenden Sie einen Dateinamensstandard, der die Reihenfolge der Dateiverarbeitung erleichtert.
  • Fügen Sie detaillierte Kommentare hinzu, in denen Sie den Zweck jeder Delegierung in der Datei erläutern.
  • Legen Sie den Root-Benutzer und die Root-Gruppe als Eigentümer der benutzerdefinierten Dateien im Verzeichnis /etc/sudoers.d fest.
  • Legen Sie die Standardberechtigungen 0440 für die benutzerdefinierten Dateien im Verzeichnis /etc/sudoers.d fest, um sicherzustellen, dass Linux die Delegierungen ordnungsgemäß durchführt und unerwartete Dateiänderungen verhindert.
  • Verwenden Sie separate Dateien für jede Rolle oder Delegierung.
  • Automatisieren Sie die Dateibereitstellung mit zum Beispiel rsync, Chef oder Puppet.
  • Überwachen Sie sorgfältig den Zugriff auf Ressourcen, die von sudo gewährt werden.
  • Halten Sie eine strenge Versionskontrolle ein. Erwägen Sie die Verwendung eines Mechanismus wie Git.

Die Verknüpfung dieser bewährten Verfahren mit Ihren sudo-Delegierungen verbessert die Sicherheit und Effizienz.

Eine alternative Möglichkeit zur Delegierung

Die Delegierung des Zugriffs auf einige oder alle Befehle auf einem Linux-System mit sudo ist eine wichtige Sicherheitskonfiguration. Heutzutage hosten leistungsstarke Linux-Server verschiedene Datenbanken, Projekte, Virtualisierungsclients, Container und Entwicklungsumgebungen. Infolgedessen geht der Umfang der Delegierung über das hinaus, was die Standardkonfigurationsdatei sudoers auf organisierte Weise verwalten kann.

Das Speichern benutzerdefinierter sudoers-Dateien im Verzeichnis /etc/sudoers.d bietet Administratoren eine elegantere und effizientere Möglichkeit, die Delegierung zu verwalten. Erstellen Sie spezifische Dateien für bestimmte Benutzer, Gruppen oder Rollen und priorisieren Sie diese Dateien dann anhand eines nummerierten Benennungsschemas (zum Beispiel 10_Dateiname, 20_Dateiname, 30_Dateiname). Fügen Sie den Dateien umfassende Kommentare hinzu und konfigurieren Sie die entsprechenden Eigentumsrechte und Standardberechtigungen. Erwägen Sie, diese Konfigurationsdateien in ein Versionskontrollsystem zu integrieren.

Überprüfen Sie noch heute Ihre aktuellen Delegierungsprozesse und stellen Sie fest, ob benutzerdefinierte sudoers-Dateien Ihre Verwaltungsabläufe vereinfachen würden.

Erfahren Sie mehr über Softwareentwicklung