systemdjournalctl: Abfragen des systemd-Journalsudev
Viele Kommandos und Systemdienstprogramme müssen als root ausgeführt werden, um Dateien zu bearbeiten und/oder Tasks auszuführen, für die nur der Superuser berechtigt ist. Aus Sicherheitsgründen und um das unbeabsichtigte Ausführen gefährlicher Kommandos zu vermeiden, ist es allgemein ratsam, sich nicht direkt als root anzumelden. Stattdessen wird empfohlen, als normaler, nicht privilegierter Benutzer zu arbeiten und das sudo-Kommando zum Ausführen von Kommandos mit erhöhten Berechtigungen zu verwenden.
Auf SUSE Linux Enterprise Desktop ist sudo standardmäßig so konfiguriert, ähnlich wie „su“ zu funktionieren. Jedoch bietet sudo die Möglichkeit, Benutzern das Ausführen von Kommandos mit Berechtigungen jedes anderen Benutzers mit umfassenden Konfigurationsmöglichkeiten zu erlauben. Dies kann dazu genutzt werden, Rollen mit bestimmten Berechtigungen bestimmten Benutzern und Gruppen zuzuweisen. Es ist beispielsweise möglich, Mitgliedern der Gruppe users das Ausführen eines Kommandos mit den Berechtigungen von wilber zu erlauben. Der Zugriff auf das Kommando kann zusätzlich eingeschränkt werden, indem beispielsweise das Angeben jeglicher Kommandooptionen verboten wird. Während „su“ immer das root-Passwort für die Authentifizierung mit PAM erfordert, kann sudo für die Authentifizierung mit Ihren eigenen Berechtigungsnachweisen konfiguriert werden. Dies erhöht die Sicherheit, da das root-Passwort nicht freigegeben werden muss. Sie können Mitgliedern der Gruppe users beispielsweise erlauben, ein frobnicate-Kommando als wilber auszuführen, mit der Einschränkung, dass keine Argumente angegeben werden. Dies kann dazu genutzt werden, Rollen mit bestimmten Funktionen bestimmten Benutzern und Gruppen zuzuweisen.
sudo #
sudo ist einfach zu verwenden und dabei sehr funktionsreich.
Wenn Sie als normaler Benutzer angemeldet sind, können Sie jedes Kommando als root ausführen, indem Sie sudo voranstellen. Eine Eingabeaufforderung für das root-Passwort erscheint und bei erfolgreicher Authentifizierung wird das Kommando als root ausgeführt:
tux >id -un1 tuxtux >sudo id -un root's password:2 roottux >id -un tux3tux >sudo id -un 4 root
Das Kommando | |
Das Passwort wird bei der Eingabe weder als Klartext noch durch Punkte angezeigt. | |
Nur Kommandos, die mit | |
Für einen begrenzten Zeitraum müssen Sie das |
Die E/A-Umleitung funktioniert nicht so, wie Sie es wahrscheinlich erwarten:
tux >sudo echo s > /proc/sysrq-trigger bash: /proc/sysrq-trigger: Permission deniedtux >sudo cat < /proc/1/maps bash: /proc/1/maps: Permission denied
Nur die echo-/cat-Binärdatei wird mit erhöhten Berechtigungen ausgeführt. Die Umleitung erfolgt über die Shell des Benutzers mit Benutzerberechtigungen. Sie können entweder eine Shell starten, wie in Abschnitt 2.1.2, „Starten einer Shell“ beschrieben, oder stattdessen das Dienstprogramm dd verwenden:
echo s | sudo dd of=/proc/sysrq-trigger sudo dd if=/proc/1/maps | cat
Vor jedes Kommando sudo voranstellen zu müssen, kann mühselig sein. Sie könnten eine Shell als sudo bash-Kommando angeben. Es wird jedoch empfohlen, einen der integrierten Mechanismen zum Starten einer Shell zu verwenden:
sudo -s (<Kommando>)
Startet eine von der UmgebungsvariablenSHELL angegebene Shell oder die Standard-Shell des Zielbenutzers. Wird ein Kommando angegeben, wird es an die Shell übergeben (mit der Option -c), sonst wird die Shell im interaktiven Modus ausgeführt.
tux:~ >sudo -i root's password:root:/home/tux #exittux:~ >
sudo -i (<Kommando>)
Wie -s, startet die Shell jedoch als Login-Shell. Dies bedeutet, dass die Startdateien der Shell (.profile usw.) verarbeitet werden und das aktuelle Home-Verzeichnis als Basisverzeichnis des Zielbenutzers festgelegt wird.
tux:~ >sudo -i root's password:root:~ #exittux:~ >
Standardmäßig gibt sudo keine Umgebungsvariablen weiter:
tux >ENVVAR=test env | grep ENVVAR ENVVAR=testtux >ENVVAR=test sudo env | grep ENVVAR root's password: 1tux >
Die leere Ausgabe zeigt, dass die Umgebungsvariable |
Dieses Verhalten kann mit der Option env_reset geändert werden. Siehe Tabelle 2.1, „Hilfreiche Flags und Optionen“.
sudo #
sudo ist ein sehr flexibles Werkzeug mit umfassenden Konfigurationsmöglichkeiten.
Wenn Sie sich selbst versehentlich aus sudo ausgesperrt haben, können Sie su - und das root-Passwort verwenden, um eine root-Shell zu erhalten, und visudo ausführen, um den Fehler zu beheben.
Die Hauptkonfigurationsdatei mit den Richtlinien für sudo ist /etc/sudoers. Da es möglich ist, sich selbst aus dem System auszusperren, wenn in dieser Datei Fehler enthalten sind, wird dringend empfohlen, visudo zum Bearbeiten zu verwenden. Gleichzeitige Änderungen an der geöffneten Datei werden so verhindert und es wird vor dem Speichern auf Syntaxfehler geprüft.
Trotz des Namens können Sie andere Editoren als „vi“ verwenden, indem Sie die Umgebungsvariable EDITOR festlegen. Beispiel:
sudo EDITOR=/usr/bin/nano visudo
Die Datei /etc/sudoers selbst hingegen wird von den Systempaketen bereitgestellt und Änderungen können bei Aktualisierungen verloren gehen. Daher wird empfohlen, benutzerdefinierte Konfigurationen in Dateien im Verzeichnis /etc/sudoers.d/ abzulegen. Jede Datei in diesem Verzeichnis ist automatisch eingeschlossen. Um eine Datei in diesem Unterverzeichnis zu erstellen oder zu bearbeiten, führen Sie das folgende Kommando aus:
sudo visudo -f /etc/sudoers.d/NAME
Alternativ mit einem anderen Editor (beispielsweise nano):
sudo EDITOR=/usr/bin/nano visudo -f /etc/sudoers.d/NAME
/etc/sudoers.d
Das Kommando #includedir in /etc/sudoers, das für /etc/sudoers.d verwendet wird, ignoriert Dateien, die mit einer Tilde (~) enden oder einen Punkt (.) enthalten.
Führen Sie man 8 visudo aus, um weitere Informationen zum Kommando visudo zu erhalten.
In den sudoers-Konfigurationsdateien gibt es zwei Optionstypen: Strings und Flags. Strings können beliebige Werte enthalten, Flags hingegen können nur aktiviert (ON) oder deaktiviert (OFF) werden. Die wichtigsten Syntaxkonstrukte für sudoers-Konfigurationsdateien sind:
# Everything on a line after a # gets ignored 1 Defaults !insults # Disable the insults flag 2 Defaults env_keep += "DISPLAY HOME" # Add DISPLAY and HOME to env_keep tux ALL = NOPASSWD: /usr/bin/frobnicate, PASSWD: /usr/bin/journalctl 3
Es gibt zwei Ausnahmen: | |
Entfernen Sie das Ausrufezeichen ( | |
|
Optionsname |
Beschreibung |
Beispiel |
|---|---|---|
targetpw
|
Dieses Flag steuert, ob der aufrufende Benutzer das Passwort des Zielbenutzers (ON) (beispielsweise |
Defaults targetpw # Turn targetpw flag ON |
rootpw
|
Ist diese Option festgelegt, fordert |
Defaults !rootpw # Turn rootpw flag OFF |
env_reset
|
Ist diese Option festgelegt, richtet |
Defaults env_reset # Turn env_reset flag ON |
env_keep
|
Eine Liste der Umgebungsvariablen, die beizubehalten sind, wenn für das Flag |
# Set env_keep to contain EDITOR and PROMPT Defaults env_keep = "EDITOR PROMPT" Defaults env_keep += "JRE_HOME" # Add JRE_HOME Defaults env_keep -= "JRE_HOME" # Remove JRE_HOME |
env_delete
|
Eine Liste der Umgebungsvariablen, die zu löschen sind, wenn für das Flag |
# Set env_delete to contain EDITOR and PROMPT Defaults env_delete = "EDITOR PROMPT" Defaults env_delete += "JRE_HOME" # Add JRE_HOME Defaults env_delete -= "JRE_HOME" # Remove JRE_HOME |
Das Token Defaults kann auch zum Erstellen von Aliassen für eine Sammlung von Benutzern, Hosts oder Kommandos verwendet werden. Außerdem ist es möglich, eine Option anzuwenden, die nur für eine bestimmte Reihe von Benutzern gültig ist.
Genauere Informationen zur Konfigurationsdatei /etc/sudoers erhalten Sie mit dem Kommando man 5 sudoers.
Die Regeln in der sudoers-Konfiguration können sehr komplex sein. In diesem Abschnitt werden daher nur die Grundlagen abgedeckt. Jede Regel befolgt ein Basisschema ([] markiert optionale Teile):
#Who Where As whom Tag What User_List Host_List = [(User_List)] [NOPASSWD:|PASSWD:] Cmnd_List
User_List
Eine oder mehrere Kennungen (getrennt durch ,): Entweder ein Benutzername, eine Gruppe im Format %GROUPNAME oder eine Benutzer-ID im Format #UID. Eine Negation erzielen Sie mit dem Präfix !
Host_List
Eine oder mehrere Kennungen (getrennt durch ,): Entweder ein (vollständig qualifizierter) Hostname oder eine IP-Adresse. Eine Negation erzielen Sie mit dem Präfix ! ALL ist die übliche Option für Host_List.
NOPASSWD:|PASSWD:
Der Benutzer wird nicht aufgefordert, ein Passwort einzugeben, wenn Kommandos ausgeführt werden, die CMDSPEC nach NOPASSWD: entsprechen.
PASSWD ist der Standardwert. Er muss nur angegeben werden, wenn beide Werte in der gleichen Zeile sind:
tux ALL = PASSWD: /usr/bin/foo, NOPASSWD: /usr/bin/bar
Cmnd_List
Eine oder mehrere Kennungen (getrennt durch ,): Ein Pfad zu einer ausführbaren Datei, gefolgt von erlaubten Argumenten oder keinen weiteren Angaben.
/usr/bin/foo # Anything allowed /usr/bin/foo bar # Only "/usr/bin/foo bar" allowed /usr/bin/foo "" # No arguments allowed
ALL kann als User_List, Host_List und Cmnd_List verwendet werden.
Eine Regel, die es tux erlaubt, alle Kommandos als „root“ ohne Eingabe des Passworts auszuführen:
tux ALL = NOPASSWD: ALL
Eine Regel, die es tux erlaubt, systemctl restart apache2 auszuführen:
tux ALL = /usr/bin/systemctl restart apache2
Eine Regel, die es tux erlaubt, wall als admin ohne Argumente auszuführen:
tux ALL = (admin) /usr/bin/wall ""
Konstrukte des Typs
ALL ALL = ALL
dürfen nicht ohne Defaults targetpw verwendet werden, sonst kann jeder Kommandos als root ausführen.
Obwohl die Standardkonfiguration oft für einfache Konfigurationen und Desktopumgebungen ausreicht, können benutzerdefinierte Konfigurationen sehr hilfreich sein.
sudo ohne root-Passwort #
In Anwendungsfällen mit besonderen Einschränkungen („Benutzer X kann Kommando Y nur als root ausführen“) ist dies nicht möglich. In anderen Fällen ist es weiterhin vorteilhaft, eine Art Trennung zu haben. Grundsätzlich können Mitglieder der Gruppe wheel alle Kommandos mit sudo als „root“ ausführen.
Fügen Sie sich selbst zur Gruppe wheel hinzu.
Ist Ihr Benutzerkonto nicht bereits Mitglied der Gruppe wheel, fügen Sie es hinzu, indem Sie sudo usermod -a -G wheel BENUTZERNAME ausführen und sich ab- und wieder anmelden. Überprüfen Sie, ob die Änderung erfolgreich war, indem Sie groups BENUTZERNAME ausführen.
Legen Sie die Authentifizierung mit dem Passwort des aufrufenden Benutzers als Standard fest.
Erstellen Sie die Datei /etc/sudoers.d/userpw mit visudo (siehe Abschnitt 2.2.1, „Bearbeiten der Konfigurationsdateien“) und fügen Sie Folgendes hinzu:
Defaults !targetpw
Wählen Sie eine neue Standardregel aus.
Je nachdem, ob Sie möchten, dass Benutzer ihre Passwörter erneut eingeben oder nicht, entfernen Sie das Kommentarzeichen in der entsprechenden Zeile in /etc/sudoers und kommentieren Sie die Standardregel aus.
## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
Gestalten Sie die Standardregel restriktiver.
Kommentieren Sie die Regel, die alles erlaubt, in /etc/sudoers aus oder löschen Sie sie:
ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
Vergessen Sie diesen Schritt nicht, sonst kann jeder Benutzer alle Kommandos als root ausführen!
Testen Sie die Konfiguration.
Versuchen Sie, sudo als Mitglied und Nicht-Mitglied von wheel auszuführen.
tux:~ >groups users wheeltux:~ >sudo id -un tux's password: rootwilber:~ >groups userswilber:~ >sudo id -un wilber is not in the sudoers file. This incident will be reported.
sudo mit X.Org-Anwendungen #
Wenn Sie Grafikanwendungen mit sudo starten, stoßen Sie auf den folgenden Fehler:
tux > sudo xterm
xterm: Xt error: Can't open display: %s
xterm: DISPLAY is not setYaST wählt die ncurses-Schnittstelle und nicht die grafische Schnittstelle.
Um X.Org in Anwendungen zu verwenden, die mit sudo gestartet werden, müssen die Umgebungsvariablen DISPLAY und XAUTHORITY übertragen werden. Um dies zu konfigurieren, erstellen Sie die Datei /etc/sudoers.d/xorg (siehe Abschnitt 2.2.1, „Bearbeiten der Konfigurationsdateien“) und fügen Sie die folgende Zeile hinzu:
Defaults env_keep += "DISPLAY XAUTHORITY"
Wenn die Variable XAUTHORITY nicht bereits entsprechend festgelegt ist, legen Sie sie wie folgt fest:
export XAUTHORITY=~/.Xauthority
Jetzt können X.Org-Anwendungen wie üblich ausgeführt werden:
sudo yast2
Einen kurzen Überblick über die verfügbaren Kommandozeilenschalter können Sie mit sudo --help abrufen. Eine Erklärung und andere wichtige Informationen finden Sie auf der man-Seite: man 8 sudo. Die Konfiguration ist auf der man-Seite man 5 sudoers dokumentiert.