Einführung in die Sudo-Autoritätsdelegierung
sudo
sudoers
Aliase
Ich habe vor Kurzem ein kurzes Bash-Programm geschrieben, um MP3-Dateien von einem USB-Stick auf einem Netzwerkhost auf einen anderen zu kopieren. Die Dateien werden in ein spezielles Verzeichnis auf einem Server kopiert, den ich für meine Freiwilligenorganisation betreibe, von wo sie heruntergeladen und abgespielt werden können. Mein Programm kann noch ein paar andere Dinge, zum Beispiel ändert es die Namen der Dateien vor dem Kopieren, sodass sie auf der Webseite automatisch nach Datum sortiert werden. Außerdem werden alle Dateien auf dem USB-Laufwerk gelöscht und überprüft, ob die Übertragung korrekt abgeschlossen wurde. Dieses nette kleine Programm hat mehrere Optionen, wie z. B. -h zum Anzeigen der Hilfe, -t für den Testmodus und einige andere. So toll mein Programm auch ist, es muss als Root ausgeführt werden, um seine Hauptfunktion auszuführen. Leider gab es in dieser Organisation nur wenige Leute, die Interesse daran hatten, unsere Audio- und Computersysteme zu verwalten, sodass es meine Aufgabe war, halbtechnisches Personal zu finden und es darin zu schulen, sich bei den Computern anzumelden, die für die Übertragungen verwendet wurden, und dieses kleine Programm auszuführen. Es ist nicht so, dass ich das Programm nicht persönlich durchführen könnte, aber aus verschiedenen Gründen, darunter Reisen und Krankheit, bin ich nicht immer da. Auch wenn ich anwesend bin, überlasse ich als „fauler Sysadmin“ gerne andere die Arbeit für mich. Daher habe ich Skripte zur Automatisierung dieser Aufgaben geschrieben und mit „sudo“ mehrere Benutzer für die Ausführung dieser Skripte angegeben. Für die Ausführung vieler Linux-Befehle ist der Benutzer Rootberechtigung erforderlich. Dies schützt das System vor versehentlichen Schäden, beispielsweise durch meine eigene Dummheit, und vor vorsätzlichen Schäden durch böswillige Benutzer. Tun Sie, was Sie gut können Das sudo-Programm ist ein praktisches Tool, das es mir als Systemadministrator mit Root-Zugriff ermöglicht, die Verantwortung für alle oder einige Verwaltungsaufgaben an andere Benutzer des Computers zu delegieren. Dadurch kann ich diese Delegierung durchführen, ohne das Root-Passwort zu kompromittieren und so ein hohes Maß an Sicherheit auf dem Host aufrechterhalten. Nehmen wir beispielsweise an, dass ich dem normalen Benutzer „ruser“ Zugriff auf mein Bash-Programm „myprog“ gewährt habe, das als Root ausgeführt werden muss, um einige seiner Funktionen auszuführen. Zunächst meldet sich der Benutzer mit seinem eigenen Passwort als „ruser“ an und führt dann myprog mit dem folgenden Befehl aus. Das sudo-Programm prüft die Datei /etc/sudoers und stellt sicher, dass ruser myprog ausführen darf. In diesem Fall fordert sudo den Benutzer auf, sein Kennwort einzugeben – nicht das Root-Kennwort. Nachdem der Benutzer das Passwort eingegeben hat, wird das Programm ausgeführt. Darüber hinaus protokolliert sudo den Zugriff auf myprog mit Datum und Uhrzeit der Programmausführung, dem vollständigen Befehl und dem Benutzer, der es ausgeführt hat. Diese Daten wurden bereits erfasst. /var/log/Sicherheit. Ich finde es hilfreich, zu Trainingszwecken ein Protokoll aller von sudo ausgeführten Befehle zu haben. Ich kann sehen, wer was getan hat und ob der Befehl richtig eingegeben wurde. Ich habe dies getan, um mir und einem anderen Benutzer die Berechtigung zum Ausführen eines Programms zu erteilen. Mit sudo ist jedoch noch viel mehr möglich. Es ermöglicht einem Systemadministrator, die Berechtigung zur Verwaltung von Netzwerkfunktionen oder bestimmten Diensten an einen einzelnen Benutzer oder eine Gruppe vertrauenswürdiger Benutzer zu delegieren. Es ermöglicht die Delegation dieser Funktionen unter Wahrung der Sicherheit des Root-Passworts. Konfigurieren Sie die Sudoers-Datei Über die Datei /etc/sudoers kann ich als Systemadministrator Benutzern oder Gruppen den Zugriff auf einzelne Befehle, definierte Befehlsgruppen oder alle Befehle ermöglichen. Diese Flexibilität ist der Schlüssel zur Leistungsfähigkeit und Einfachheit der Delegation mit sudo. Ich fand die Sudoers-Datei zunächst sehr verwirrend, daher habe ich unten die gesamte Sudoers-Datei vom Host, auf dem ich sie verwendet habe, kopiert und dekonstruiert. Wenn Sie diese Analyse durchgehen, wird es Ihnen hoffentlich nicht mehr so vage vorkommen. Abgesehen davon finde ich, dass die Standardkonfigurationsdateien in RedHat-basierten Distributionen in der Regel viele Kommentare und Beispiele als Orientierungshilfe enthalten, was die Dinge viel einfacher macht und die Notwendigkeit einer Online-Suche verringert. Ändern Sie die sudoers-Datei nicht mit einem Standard-Editor. Verwenden Sie den Befehl visudo, da dieser so konzipiert ist, dass alle Änderungen sofort aktiviert werden, nachdem Sie die Datei gespeichert und den Editor verlassen haben. Zusätzlich zu Vi können Sie auch visudo verwenden. Beginnen wir mit der Analyse dieser Datei anhand mehrerer Aliase. Host-Alias Der Abschnitt „Host-Aliase“ wird zum Erstellen von Host-Gruppen verwendet, die zum Bereitstellen des Zugriffs auf Befehle oder Befehls-Aliase verwendet werden können. Die Grundidee besteht darin, diese einzelne Datei für alle Hosts in der Organisation zu verwalten und sie auf jedem Host nach /etc zu kopieren. Daher können bestimmte Hosts (z. B. Server) als Gruppe konfiguriert werden, um bestimmten Benutzern Zugriff auf bestimmte Befehle zu gewähren, etwa die Möglichkeit, Dienste wie httpd, DNS und Netzwerke zu starten und zu stoppen, Dateisysteme zu mounten usw. Es ist möglich, in Host-Aliasen IP-Adressen anstelle von Hostnamen zu verwenden. ## Sudoers ermöglicht bestimmten Benutzern die Ausführung verschiedener Befehle als ## der Root-Benutzer, ohne dass das Root-Passwort erforderlich ist. ## Beispiele für Sammlungen finden Sie unten in der Datei ## von verwandten Befehlen, die dann an bestimmte delegiert werden können ## Benutzer oder Gruppen. ## Diese Datei muss mit dem Befehl „visudo“ bearbeitet werden. Host-Aliase ## Gruppen von Maschinen. Sie können Hostnamen verwenden (vielleicht mit ## Platzhalter für ganze Domänen) oder stattdessen IP-Adressen. # Host_Alias FILESERVERS = fs1, fs2 # Host_Alias MAILSERVERS = smtp, smtp2 ## Benutzeraliase ## Diese sind nicht oft notwendig, da Sie reguläre Gruppen verwenden können ## (also aus Dateien, LDAP, NIS, etc.) in dieser Datei - verwenden Sie einfach %groupname ## statt USERALIAS # Benutzeralias ADMINS = jsmith, mikem Benutzeralias AUDIO = dboth, ruser ## Befehlsaliase ## Dies sind Gruppen verwandter Befehle ... ## Vernetzung # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ## Installation und Verwaltung von Software # Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum ## Dienstleistungen # Cmnd_Alias DIENSTE = /sbin/service, /sbin/chkconfig ## Aktualisieren der Locate-Datenbank # Cmnd_Alias LOCATE = /usr/bin/updatedb ## Lagerung # Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount ## Berechtigungen delegieren # Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp ## Prozesse # Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall ## Treiber # Cmnd_Alias TREIBER = /sbin/modprobe # Standardspezifikation # Ausführung ablehnen, wenn Echo auf dem TTY nicht deaktiviert werden kann. Vorgabe sichtbares Passwort Standardeinstellungen env_reset Standardmäßig ist env_keep = "FARBEN ANZEIGE HOSTNAME HISTSIZE KDEDIR LS_COLORS" Standardmäßig env_keep += "MAIL PS1 PS2 QTDIR BENUTZERNAME LANG LC_ADRESSE LC_CTYPE" Standardmäßig env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Standardmäßig env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Standardmäßig env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" Standardmäßig secure_path = sbin:bin:usr\sbin:usr\bin:usr\local\bin ## Als nächstes kommt der Hauptteil: Welche Benutzer können welche Software ausführen auf ## welche Maschinen (die sudoers-Datei kann von mehreren gemeinsam genutzt werden ## Systeme). ## Syntax: ## Benutzer MACHINE=BEFEHLE ## Dem Abschnitt „COMMANDS“ können weitere Optionen hinzugefügt werden. ## Erlauben Sie root, beliebige Befehle überall auszuführen root =ALLE ALLE ## Ermöglicht Mitgliedern der Gruppe „sys“, Netzwerk-, Software-, ## Service-Management-Apps und mehr. # %sys ALL = NETZWERKERZEUGUNG, SOFTWARE, DIENSTE, SPEICHER, DELEGIERT, PROZESSE, LOKALISIEREN, TREIBER ## Ermöglicht Personen in der Gruppe „wheel“, alle Befehle auszuführen Rad = ALLE ALLE ## Dasselbe ohne Passwort # %Rad ALLE = (ALLE) NOPASSWD: ALLE ## Ermöglicht Mitgliedern der Benutzergruppe das Ein- und Aushängen des ##cdrom als Root # %Benutzer ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Ermöglicht Mitgliedern der Benutzergruppe, dieses System herunterzufahren # %users localhost=/sbin/shutdown -h jetzt ## Drop-In-Dateien aus /etc/sudoers.d lesen (das # hier stellt keinen Kommentar dar) #includedir /etc/sudoers.d ############################################################ # Hinzugefügt von David Both, um eingeschränkten Zugriff auf myprog zu ermöglichen # ############################################################ AUDIO guest1=usrlocalbinmyprog Standard-Sudoers-Datei, Änderungen sind fett gedruckt. Benutzeralias Mithilfe der Benutzeraliaskonfiguration kann Root Benutzer in Aliasgruppen sortieren, sodass die gesamte Gruppe Zugriff auf bestimmte Root-Funktionen hat. Dies ist der Teil, wo ich eine Zeile hinzugefügt habe. User_Alias AUDIO = dboth, ruser, wodurch der Alias Audio definiert und dem Alias zwei Benutzer zugewiesen werden. Wie in der sudoers-Datei beschrieben, kann man anstelle eines Alias einfach die Datei /etc/groups verwenden. Wenn Sie dort bereits eine Gruppe definiert haben, die Ihren Anforderungen entspricht, z. B. „Audio“, verwenden Sie diesen Gruppennamen mit einem vorangestellten %-Zeichen wie folgt: %audio, wenn Sie die Befehle zuweisen, die der Gruppe später in der sudoers-Datei zur Verfügung stehen. Befehlsaliase Am Ende der Sudoers-Datei befindet sich ein Abschnitt mit Befehlsaliasen. Diese Aliase sind Listen verwandter Befehle, beispielsweise Netzwerkbefehle oder Befehle, die zum Installieren von Updates oder neuen RPM-Paketen erforderlich sind. Mit diesen Aliasnamen kann ein Systemadministrator problemlos den Zugriff auf Befehlsgruppen gewähren. In diesem Abschnitt sind bereits einige Aliase eingerichtet, die die Delegierung des Zugriffs auf bestimmte Befehlstypen erleichtern. Umgebungsstandards Der nächste Abschnitt legt einige Standardumgebungsvariablen fest. Das interessanteste Element in diesem Abschnitt ist die Zeile !visiblepw, die die Ausführung von sudo verhindert, wenn die Benutzerumgebung so eingerichtet ist, dass Passwörter angezeigt werden. Dies ist eine Sicherheitsvorkehrung, die nicht außer Kraft gesetzt werden sollte. Befehlsabschnitt Der Befehlsabschnitt ist der Hauptteil der Sudoers-Datei. Indem Sie hier genügend Einträge hinzufügen, können Sie alles, was Sie tun müssen, ohne all die Aliase erledigen. Das Pseudonym macht die Dinge einfach viel einfacher. In diesem Abschnitt werden die bereits definierten Aliase verwendet, um sudo mitzuteilen, wer was auf welchem Host tun kann. Die Beispiele sind selbsterklärend, wenn Sie die Syntax in diesem Abschnitt verstehen. Schauen wir uns die Syntax an, die wir im Abschnitt „Befehle“ gefunden haben. Dies bedeutet, dass der Benutzer jedes Programm auf jedem Host als beliebiger Benutzer ausführen kann. Dies ist der allgemeine Eintrag für unseren Benutzer ruser. Das erste „ALL“ in der Zeile gibt an, dass diese Regel für alle Hosts gilt. Das zweite „ALL“ ermöglicht es dem Benutzer, Befehle wie jeder andere Benutzer auszuführen. Standardmäßig werden Befehle als Root-Benutzer ausgeführt, aber ruser kann in der Sudo-Befehlszeile angeben, dass das Programm als ein anderer Benutzer ausgeführt werden soll. Das letzte ALL bedeutet, dass ruser alle Befehle ohne Einschränkung ausführen kann. Dadurch wird der Benutzer effektiv zum Root. Beachten Sie, dass es einen Eintrag für Root gibt, wie unten gezeigt. Dadurch erhält der Root-Benutzer vollen Zugriff auf alle Befehle auf allen Hosts. Dies bedeutet, dass Root als beliebiger Benutzer jedes Programm auf jedem Host ausführen kann. Um dies auszuprobieren, habe ich die Zeile auskommentiert und als Root versucht, chown ohne sudo auszuführen. Das hat tatsächlich funktioniert. Es hat mich wirklich überrascht. Wenn ich dann mit sudo chowne, schlägt es mit der Meldung fehl: „root ist nicht in der sudoers-Datei und dieses Ereignis wird gemeldet.“ Das bedeutet, dass root alles als root ausführen kann, aber nicht, wenn der sudo-Befehl verwendet wird. Dadurch wird verhindert, dass der Root-Benutzer Sudo-Befehle als anderer Benutzer ausführt. Es gibt für Root jedoch viele Möglichkeiten, diese Einschränkung zu umgehen. Den folgenden Code habe ich hinzugefügt, um den Zugriff auf myprog zu steuern. Es gibt an, dass Benutzer, die in der Audiogruppe aufgeführt sind, wie oben in der Sudoers-Datei definiert, nur auf ein Programm, myprog, auf einem Host, nämlich Gast 1, zugreifen können. Erlauben Sie Benutzern in der Audiogruppe den Zugriff auf myprog auf dem Host user1. Beachten Sie, dass die Syntax der obigen Zeile nur die Hosts und Programme angibt, denen dieser Zugriff gestattet ist. Es ist nicht festgelegt, dass der Benutzer Programme wie andere Benutzer ausführen kann. Passwort umgehen Sie können auch NOPASSWORD verwenden, um in der Gruppe „Audio“ angegebenen Benutzern das Ausführen von myprog ohne Eingabe ihres Kennworts zu gestatten. So geht's: Erlauben Sie Benutzern in der Audiogruppe den Zugriff auf myprog auf dem Host user1. Ich habe das für mein Programm nicht getan, weil ich dachte, dass Benutzer mit Sudo-Zugriff innehalten und darüber nachdenken müssten, was sie tun, und dass das dabei helfen könnte. Ich verwende den Eintrag für mein Applet als Beispiel. Rad Die Wheel-Spezifikation im Befehlsabschnitt der Sudoers-Datei (wie im Bild unten gezeigt) ermöglicht allen Benutzern in der Gruppe „Wheel“, alle Befehle auf jedem Host auszuführen. Die Wheel-Gruppe ist in der Datei /etc/group definiert und der Benutzer muss der Gruppe hinzugefügt werden, damit dies funktioniert. Das %-Zeichen vor dem Gruppennamen bedeutet, dass sudo in die Datei /etc/group aufgenommen werden soll. Ermöglicht allen Benutzern, die Mitglieder der Gruppe „wheel“ sind (wie in der Datei /etc/group angegeben), alle Befehle auf jedem Host auszuführen. Dies ist eine großartige Möglichkeit, den vollständigen Root-Zugriff an mehrere Benutzer zu delegieren, ohne jemals ein Root-Passwort angeben zu müssen. Durch einfaches Hinzufügen eines Benutzers zur Wheel-Gruppe erhält dieser Zugriff auf die vollen Root-Berechtigungen. Darüber hinaus bietet es eine Möglichkeit, seine Aktivität anhand der erstellten Protokolleinträge zu überwachen. Einige Distributionen (wie Ubuntu) fügen die Benutzer-ID zu /etc/group hinzu, wodurch sie den Befehl sudo für alle privilegierten Befehle verwenden können. Abschließende Gedanken Ich verwende sudo hier für einen sehr begrenzten Zweck – um einem oder zwei Benutzern Zugriff auf einen einzelnen Befehl zu gewähren. Dies erreiche ich in zwei Zeilen (wenn Sie meine eigenen Kommentare ignorieren). Das Delegieren der Berechtigung zum Ausführen bestimmter Aufgaben an einen Benutzer ohne Root-Zugriff ist einfach und kann Ihnen als Systemadministrator viel Zeit sparen. Darüber hinaus werden Protokolleinträge generiert, die bei der Erkennung von Problemen hilfreich sein können. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Langsame MySQL-Abfrage: Langsame Abfrage aktivieren
>>: Detaillierte Erklärung zur Verwendung der Element-el-button-Button-Komponente
1. Gesamtarchitekturdiagramm Im Vergleich zu ande...
In letzter Zeit wurde viel über H1 diskutiert (auf...
Inhaltsverzeichnis Grundlegende Übersicht GTID on...
Shell ist ein in der Programmiersprache C geschri...
1: Installationsbefehl pip install docker-compose...
In diesem Artikel werden hauptsächlich die Konfig...
Inhaltsverzeichnis Vorwort Option 1: Option 2: Op...
Inhaltsverzeichnis Lösung 1: Replikate neu erstel...
Ich bin heute auf ein kleines Problem gestoßen und...
Inhaltsverzeichnis 1. Staatshaken 1. Grundlegende...
Vorwort Die Anwendungs- und Lernumgebung von MySQ...
1. Vorbereitung 1.1 Laden Sie VMware 15 herunter ...
Inhaltsverzeichnis 1. Stoppen Sie zuerst den MySQ...
Inhaltsverzeichnis 1. Signalliste 1.1. Echtzeitsi...
Der MySQL-Abfragecache ist standardmäßig aktivier...