Die umfassende Anleitung zum Master Sudoers Datei.

Harsha Koushik

Follow

Apr 18, 2020 · 10 min lesen

Was ist die Sudoers-Datei?

Die Sudoers-Datei ist genau wie jede andere Datei auf dem Linux-Betriebssystem., Es spielt jedoch eine wichtige Rolle bei der Verwaltung, was ein „Benutzer“ oder „Benutzer in einer Gruppe“ auf dem System tun kann.

Warum der name Sudoers?

Das Wort Sudo ist die Abkürzung für den Begriff „Super User Do“. Wie es deutlich andeutet-es ist genau wie dem Kernel/OS zu sagen: „Sie haben keine andere Wahl, tun Sie es einfach!”. Die Benutzer mit Sudo-Berechtigung werden also als Sudo-Benutzer aufgerufen. Die Verwaltung all dieser Sudo-Benutzer erfolgt über eine Datei namens as Sudoers File. Diese Datei befindet sich ebenso wie jede andere Konfigurationsdatei im Verzeichnis /etc.,

Image-1. Sudoers Datei im Verzeichnis / etc. Betriebssystem : Kali Linux 2019.4

Warum Sudoers-Datei?

Ein normaler Benutzer unter Linux hat viele Einschränkungen im System. Beispielsweise kann der Benutzer keinen Dienst starten, keine Konfigurationsdatei ändern oder standardmäßig ein Skript auf dem System ausführen. Aus Sicherheitsgründen sieht das perfekt aus.,

Aber nehmen wir ein Beispiel von-Sie als Systemadministrator müssen alle Benutzer und ihre Steuerelemente verwalten. Sie haben eine Website, die auf Apache auf einem Ihrer Server gehostet wird. Sie haben bereits einen Web-Admin, um es zu verwalten. Ein Benutzer sollte für ihn auf dem Webserver erstellt werden. Dieser Benutzer erlaubt sein sollte, zwei Dinge zu tun, die ein normaler Benutzer nicht kann :

  • Start/Restart Apache Service in Fall, dass es aufhört.
  • Bearbeiten Sie die Konfigurationsdatei von Apache.

Sie haben standardmäßig zwei Benutzeroptionen:

  1. Root-Benutzer, der alle Berechtigungen für das System einschließlich Apache hat.,
  2. Ein normaler Benutzer, der standardmäßig keinen Dienst starten oder Konfigurationsdateien auf dem System bearbeiten kann.

In diesem Fall ist eine Sudoers-Datei für Sie nützlich. In Sudoers Datei können wir genau definieren:

  • Web-Admin-Benutzer kann nur Apache-Dienst starten &
  • Er kann nur Apache-Konfigurationsdatei bearbeiten.

Spielen Sie mit der Sudoers-Datei

Genug Theorie, wir werden jetzt anfangen, das echte Zeug zu machen. Ich werde jeden Abschnitt in der Sudoers-Datei mit einigen Beispielen erklären., Standardmäßig sieht eine Sudoers-Datei so aus –

Image-2. Ungeschnitten Sudoers-Datei. Betriebssystem: Kali Linux 2019.4

In erster Linie können wir fünf Abschnitte in der Datei sehen — die ersten drei Abschnitte in der Datei beziehen sich auf den ALIAS von Host, Benutzer und Cmnd., Wir werden später über ALIAS sprechen, lassen Sie uns zuerst über den Kernbereich sprechen:

#User Privilege Specification

root ALL = (ALL:ALL) ALL

Hinweis: ‚#‘ gibt einen Kommentar in der Datei an, das Betriebssystem ignoriert diese Zeile während der Ausführung.,

Syntax : User <space> OnHost = (Runas-User:Group) <space> Commands

Example: root ALL = (ALL:ALL) ALL

Lesen Sie es als — Benutzer Root kann jeden Befehl als Benutzer aus jeder Gruppe auf jedem Host ausführen.

→ Das erste ALL wird verwendet, um HOSTS zu definieren. Wir können Hostname/Ip-Adresse anstelle von ALLEN definieren. ALLES bedeutet jeder Host.

→ ALLE Zweite : Dritte ALLE Benutzer:Gruppe., Anstelle von ALLEM können wir Benutzer oder Benutzer mit der Gruppe wie User:Group definieren. ALLE: ALLES bedeutet Alle Benutzer und alle Gruppen.

→ Zuletzt ist ALLES der Befehl. Anstelle von ALLEN können wir einen Befehl oder eine Reihe von Befehlen definieren. ALLES bedeutet alle Befehle.

Um es ganz einfach auszudrücken, ist es“wer wo = (as_whom) was“.

Hinweis: die Meisten Leute verstehen HOSTS als remote-HOSTS. Es ist der LOKALE HOSTNAME/IP-ADRESSE., HOSTS Feld wird selten verwendet werden, wenn Sie mehr über HOSTS in Sudoers wissen möchten, finden Sie → https://www.sudo.ws/man/1.7.10/sudoers.man.html

Grundsätzlich können wir einem Benutzer erlauben, etwas auf nur zwei Arten zu tun —

  1. Geben Sie ihm direkt die Berechtigung, den Befehl auszuführen, indem Sie die Berechtigung der Datei ändern.
  2. Erlauben Sie ihm, den Befehl als einen anderen Benutzer auszuführen, der bereits über die Berechtigung zum Ausführen dieses Befehls verfügt.

In der Sudoers-Datei werden wir die letztere implementieren.,

Wir werden ein anderes Beispiel verwenden, um die Felder in der Syntax klar zu verstehen:

Beispiel: sysadmin ALL = (root) /usr/bin/cat /etc/shadow

Lesen Sie dies als — Benutzer „sysadmin“ kann den Befehl „/usr/bin/cat /etc/shadow“ als ROOT-Benutzer auf allen HOSTS ausführen.

Hier im obigen Beispiel im Befehlsabschnitt — ich habe etwas mehr als einen Befehl hinzugefügt, um die Flexibilität der Sudoers-Datei anzuzeigen. Der Teil „/ usr / bin / cat “ ist eine ausführbare Binärdatei oder ein Befehl, der zum Anzeigen des Inhalts einer Datei verwendet wird., Der Teil „/etc/shadow“ ist eine vertrauliche Datei, die Kennwörter speichert, so es bedeutet, dass der Benutzer „sysadmin“ können nur run „/usr/bin/cat“ auf „/etc/shadow“ Datei, wenn der Benutzer versucht, den Inhalt der anderen Datei die er keine Leseberechtigung auf, er wird nicht werden in der Lage.,

Syntax des Sudo-Befehls: sudo <Befehl>

Beispiel: sudo cat /etc/shadow

Wenn der Benutzer „sysadmin“ sudo vor einem Befehl verwendet, fragt das Betriebssystem zuerst geben Sie das Kennwort des Benutzers ein, überprüfen Sie das Kennwort und gehen Sie dann zur Sudoers-Datei und prüfen Sie, ob er diesen Befehl als Benutzer ausgeben darf. Wenn er erlaubt ist-Erfolg, sonst wird eines dieser beiden Dinge gemeldet –

→ Der Benutzer befindet sich nicht in der Sudoers-Datei. Dieser Vorfall wird gemeldet.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Hier darf der Benutzer webadmin nur“cat /etc/shadow“ ausführen. Aber er hat versucht, den Befehl ‚cat‘ auf „/etc/gshadow“ auszuführen, was nicht erlaubt ist.

Da wir die Felder in der Syntax der Sudoers-Datei ausreichend im Griff haben, gehen wir weiter und verstehen andere Abschnitte in der Datei. Alle anderen Abschnitte hängen von dem Kernabschnitt ab, den wir bereits besprochen haben.,

Der nächste Abschnitt ist Gruppenabschnitt, der

#Mitgliedern der Gruppe sudo erlauben, einen beliebigen Befehl auszuführen

%sudo ALL = (ALL:ALL) ALL

Perzentilsymbol ‚%‘ wird verwendet, um eine Gruppe in Sudoers Datei darzustellen. Alle Felder und ihre Funktionalitäten in diesem Abschnitt sind genau die gleichen wie im vorherigen Abschnitt — dem Benutzerabschnitt-beschrieben. Wir können einer Gruppe anstelle eines Benutzers dieselben Sudo-Berechtigungen zuweisen, indem wir den Gruppennamen angeben — %<Gruppenname>., Daher erben alle Mitglieder in der Gruppe dieselben Berechtigungen, die der Gruppe gewährt werden.

Standardmäßig ist in der Sudoers-Datei eine SUDO-Gruppe definiert. Wir können sehen, dass diese Berechtigungen genau den ROOT-Benutzerberechtigungen in der Datei entsprechen. Wenn ein Benutzer Mitglied dieser SUDO-Gruppe ist, kann er alle Befehle ausführen, die ein ROOT-Benutzer ausführen kann.

Lassen Sie uns eine benutzerdefinierte Gruppe definieren und die Syntax klarer verstehen. Nehmen wir dazu das gleiche alte Systemadministratorbeispiel. Angenommen, das Nein. von Mitarbeitern sind jetzt mehr, also sind die Systemadministratoren jetzt 3., Jeder von ihnen benötigt genau die gleichen Berechtigungen, die wir dem ersten Systemadministrator erteilt haben. Eine Sache, die wir tun können, um dies zu erreichen, ist, drei Einträge für alle drei Systemadministratoren in der Sudoers-Datei zu haben. Wenn wir uns für diesen Ansatz entscheiden, beleidigen wir die Fähigkeiten einer Sudoers-Datei.

Am besten gruppieren Sie alle drei Systemadministratoren in einer Gruppe mit dem Namen ‚SystemAdminGroup‘., Wir definieren erforderlichen Berechtigungen für diese Gruppe, mit —

%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow

Nun sind alle drei admins ausführen kann den Privilegierten Befehl. Wir haben dies auf einmal mit der Gruppendefinition gemacht.

Die Sudoers-Datei kann diesen gesamten Prozess mithilfe verschiedener Funktionalitäten effizienter gestalten. Die ersten drei Abschnitte — ALIASE werden verwendet, um dies zu erreichen., Wie das Wort bereits andeutet, verwenden wir einen ALIAS für etwas, das wir in der gesamten Datei verwenden können, genau wie eine GLOBALE VARIABLE in einem Skript. Wie macht das das Ganze effizienter? Wir können eine Reihe von Befehlen, Hosts und Benutzern in einer Zeile definieren, wir weisen diese Zeile einem ALIASNAMEN zu, dieser Alias wird immer und überall verwendet, ohne alle Befehle/Hosts/Benutzer erneut zu definieren.

Ich möchte einen weiteren ALIAS hinzufügen, der standardmäßig nicht in der Sudoers-Datei aufgeführt ist, nämlich „Run_as ALIAS“., Jetzt haben wir vier alias —

  1. Benutzer-ALIAS als Benutzeralias
  2. Ausführen-Als ALIAS Runas_Alias
  3. Host-ALIAS als Host_Alias
  4. Befehl ALIAS Cmnd_Alias

Anmerkung : für Alias-Namen definiert werden sollte, in Großbuchstaben und enthalten Anzahl, alphabet und Unterstrich (_). Alias-Name muss mit Alphabet beginnen.,3e“>

ALIAS Name> = <Benutzername>,<Benutzername>, <Benutzername>…

Beispiel: User_Alias SYSADMINS = john,tim,tom

Verwendung: SYSADMINS ALL = (root) /usr/bin/cat /etc/shadow

Wenn ich eine Reihe von Sudo — Berechtigungen für die Benutzer definieren möchte-john, tim und tom, ich muss es nicht dreimal definieren, stattdessen kann ich einen Alias definieren und diesen Aliasnamen verwenden, während sudo Zugang zu ihnen.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Lassen Sie sich hier nicht verwirren, denken Sie nur an das Master-Mantra-wer wo = (as_whom) was. Wir verwenden hier einen Alias, um no einzuschließen. von Benutzern im Feld „as_whom“.

Image-6. Runas Alias in der Sudoers-Datei. Betriebssystem: Kali Linux 2019.,4

Host ALIAS Syntax —

Usage: systemadmin HOSTS = (root) /usr/bin/cat /etc/shadow

Wenn ich einen Satz von Hostnamen, IP-Adressen oder IP-Adressbereich definieren muss, für den ein Benutzer die privilegierten/Sudo-Befehle ausgeben darf, kann ich dies mithilfe des Host Alias erreichen. Auch dieser Teil gehört zum Feld “ Wo “ in der Masterphrase.

Image-7. Host Alias in der Sudoers-Datei., Betriebssystem: Kali Linux 2019.,iv id=“1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Dieser Teil gehört zum Feld „Was“ in der Masterphrase.