Ausführen von Kommandos als Superuser mit sudo
- WAS?
Lernen Sie die grundlegenden Konzepte von
sudo
kennen und erfahren Sie, wie Sie es als normaler Benutzer verwenden.- WARUM?
Für bestimmte Kommandos sind Administratorrechte erforderlich. Mit dem Kommando
sudo
ist es möglich, ein bestimmtes Kommando mit Administratorrechten auszuführen.- AUFWAND
Es dauert bis zu 20 Minuten, diesen Artikel zu lesen. Bei einer bestimmten Frage können Sie direkt zum entsprechenden Kapitel springen.
- ZIEL
Verstehen der grundlegenden Konzepte von
sudo
und Ausführen von Kommandos mitsudo
für bestimmte Anwendungsfälle.- ANFORDERUNGEN
root
- odersudo
-Rechte. Diese sind nur verfügbar, wenn Sie der Administrator des Systems sind. Weitere Informationen hierzu finden Sie im Abschnitt 1, „Grundlegende Konzepte vonsudo
“.Das Paket sudo muss installiert sein. Dieses Paket ist standardmäßig in SLE Micro verfügbar.
1 Grundlegende Konzepte von sudo
#
Lernen Sie die grundlegenden Konzepte von sudo
und die Funktionsweise auf SLE Micro-Systemen kennen.
sudo
ist ein Linux-Kommando, mit dem es möglich ist, Programme vorübergehend als ein anderer Benutzer auszuführen. Es ist die Abkürzung für substitute user and do
und borgt sich die Rechte eines anderen Benutzers, zum Beispiel des root
-Benutzers. Auf diese Weise können Sie Systemverwaltungsaufgaben mit sudo
erledigen, ohne sich als root
anzumelden.
1.1 sudo
auf Linux-Systemen allgemein #
Als normaler Benutzer unter Linux haben Sie eingeschränkte Berechtigungen, die für die meisten Aufgaben ausreichend sind. Der root
-Benutzer ist der Linux-Superuser und das Äquivalent zum Administrator.
Mit sudo
können bestimmte (Nicht-root
-)Benutzer oder eine Gruppe von Benutzern privilegierte Aufgaben ausführen, z. B. Systemfunktionen als root
oder als ein anderer Benutzer aufrufen. Über eine Konfigurationsdatei kann der Systemadministrator steuern, welche Benutzer sudo
-Kommandos ausführen dürfen und für welche Aufgaben.
1.2 sudo
auf SLE Micro-Systemen #
Aus Sicherheitsgründen ist der normale Benutzer auf allen SLE Micro-Systemen vom root
-Benutzer getrennt. Als normaler Benutzer können Sie nicht in Systemverzeichnisse schreiben oder Programme installieren. Jeder Benutzer mit Zugriff auf das root
-Passwort kann diese Rechte erlangen und das System versehentlich oder böswillig beschädigen.
Ein Beispiel: Sie sind als normaler Benutzer angemeldet und rufen versehentlich eine bösartige Website auf. Ein Angreifer kann hinter Ihrem Rücken keine Malware auf Ihrem System installieren, weil Sie als normaler Benutzer angemeldet sind, also ohne jegliche Administratorberechtigungen.
Wie oben erwähnt, wird es aus Sicherheitsgründen nicht empfohlen, dauerhaft als root
-Benutzer angemeldet zu bleiben. Es ist sicherer, wenn Sie mit Ihrem regulären Benutzer angemeldet bleiben und ein eingeschränktes Kommando mit einem vorangestellten sudo
ausführen.
sudo
sind Administratorrechte erforderlich
Auf einem Einzelplatzrechner, auf dem Sie ein eigenes root
-Passwort festgelegt haben, verfügen Sie über die erforderlichen Rechte, um Ihr System mit Hilfe des sudo
-Kommandos zu verwalten und die sudo
-Einstellungen selbst zu konfigurieren.
Weitere Informationen zur sudo
-Konfiguration finden Sie in https://documentation.suse.com/smart/systems-management/html/sudo-configure-superuser-privileges/index.html.
In einer Umgebung mit mehreren Benutzern, wie zum Beispiel in Unternehmen, werden die sudo
-Rechte von einem Systemadministrator verwaltet und die Berechtigungen des root
-Benutzers können eingeschränkt werden. Unter Umständen dürfen Sie bestimmte Systemverzeichnisse oder Dateien nicht ändern, selbst wenn Sie das Kommando mit sudo
ausführen.
1.3 Funktionsweise von sudo
#
Wenn Sie ein Kommando ausführen, dem sudo
vorangestellt ist, fordert das System Sie auf, das Passwort für das root
-Konto einzugeben. Nach der erfolgreichen Authentifizierung wird das Kommando mit Superuser-Rechten ausgeführt.
Je nach sudo
-Konfiguration bleiben die erweiterten Rechte für eine bestimmte Zeit bestehen, und zwar so lange, wie Sie in derselben Terminalsitzung arbeiten. Sie müssen also das Passwort nicht erneut eingeben, wenn Sie das nächste sudo
-Kommando ausführen.
Für die Ausführung eines Kommandos mit sudo
gilt die folgende Syntax:
>
sudo [command]
Das folgende Beispiel erklärt, wie das sudo
-Kommando verwendet wird, um das YaST-Kontrollzentrum direkt im Terminal zu öffnen. Zum Öffnen von YaST sind Administratorrechte erforderlich und daher funktioniert es nur mit dem sudo
-Kommando.
sudo
#>
yast
Absolute path to 'yast' is '/usr/sbin/yast', so running it may require superuser privileges (eg. root).1>
sudo
yast
[sudo] password for root:2
Wird nur das Kommando | |
Wenn Sie dem Kommando Nach erfolgreicher Authentifizierung wird das geöffnet. |
Die erhöhten Rechte bleiben für bestimmte Zeit erhalten, sodass Sie das Passwort für das nächste sudo
-Kommando nicht erneut eingeben müssen.
2 Ausführen eines Kommandos, dem sudo
vorangestellt ist #
Als normaler Benutzer können Sie alle Kommandos als root
ausführen, indem Sie sudo
vor das Kommando setzen. Dadurch werden Sie aufgefordert, das root
-Passwort anzugeben. Bei erfolgreicher Authentifizierung wird daraufhin das Kommando als root
ausgeführt.
Wenn Sie ein Kommando ausführen, dem sudo
vorangestellt ist, fordert das System Sie auf, das Passwort für das root
-Konto einzugeben. Nach der erfolgreichen Authentifizierung wird das Kommando mit Superuser-Rechten ausgeführt.
Je nach sudo
-Konfiguration bleiben die erweiterten Rechte für eine bestimmte Zeit bestehen, und zwar so lange, wie Sie in derselben Terminalsitzung arbeiten. Sie müssen also das Passwort nicht erneut eingeben, wenn Sie das nächste sudo
-Kommando ausführen.
sudo
vorangestellt ist #
Im Folgenden wird beschrieben, wie Sie mit dem Kommando sudo
eine Datei in ein Verzeichnis kopieren, für das lediglich der root
-Benutzer die Bearbeitungsrechte besitzt.
Öffnen Sie ein Terminal und erstellen Sie eine Testdatei mit:
>
touch test.txt
Versuchen Sie, die Datei in das Verzeichnis
/usr/local/bin/
zu kopieren:>
cp test.txt /usr/local/bin
Das Terminal gibt beispielsweise Folgendes zurück:
cp: cannot create regular file '/usr/local/bin/test.txt': Permission denied
Diese Meldung wird auch angezeigt, wenn die erforderlichen Rechte nicht für
sudo
erteilt wurden.Geben Sie nun dasselbe Kommando ein und stellen Sie
sudo
voran:>
sudo
cp test.txt /usr/local/bin
Sie werden zur Eingabe des
root
-Passworts aufgefordert. Beachten Sie, dass das Passwort bei der Eingabe weder als Klartext noch durch maskierende Zeichen angezeigt wird.[sudo] password for root:
Nach der erfolgreichen Authentifizierung wird die Testdatei in
/usr/local/bin
kopiert.
Damit haben Sie Ihr erstes sudo
-Kommando ausgeführt.
3 Gängige sudo
-Kommandos #
Wenn Sie sudo
einem Kommando voranstellen, können Sie Kommandos mit erhöhten Rechten ausführen. Sie können Kommandos auch unter einem anderen Benutzer ausführen und dessen Umgebungsvariablen verwenden.
In diesem Abschnitt finden Sie Beispiele für gängige Kommandos, für die oft Administratorrechte erforderlich sind.
- Letztes Kommando mit
sudo
wiederholen Um das letzte Kommando als Administrator zu wiederholen, führen Sie
sudo !!
aus und geben Sie das Passwort ein. Ein Benutzer ohne Administratorrechte kann beispielsweise kein Verzeichnis unter dem Verzeichnis/etc/
erstellen. Zum Erstellen führen Siesudo !!
aus.>
mkdir /etc/test/
mkdir: cannot create directory ‘/etc/test/’: Permission denied>
sudo
!!
sudo mkdir /etc/test/ [sudo] password for root:>
ls -alrt /etc | grep test
drwxr-xr-x 1 root root 0 Apr 20 12:48 test- Verwalten von Paketen mit
sudo
undzypper
Um Kommandos zur Paketverwaltung als Administrator auszuführen, setzen Sie
sudo
vor das Kommando:>
sudo
zypper [--GLOBAL-OPTIONS] <COMMAND> [--COMMAND-OPTIONS] [ARGUMENTS]
Soll beispielsweise die Containerisierungsplattform Docker CE über das offizielle Paket-Repository installiert werden, führen Sie die folgenden Kommandos mit
sudo
aus:>
sudo
zypper addrepo https://download.docker.com/linux/suse/docker-ce
>
sudo
zypper refresh
>
sudo
zypper search docker-ce
>
sudo
zypper install docker-ce
Sie müssen
sudo
nicht vorzypper
-Kommandos setzen, mit denen das System nicht verändert oder kein berechtigter Zugriff auf Informationen erteilt wird. Sie können beispielsweise die Repositorys für die installierten Softwarepakete auf dem System auch ohnesudo
abrufen:>
zypper lr
- Verwalten von Systemdiensten mit
sudo
undsystemctl
Auch Systeme, bei denen die Dienste mit
systemd
verwaltet werden, können Sie das Kommandosystemctl
mitsudo
nutzen. Mit diesem Kommando starten Sie beispielsweise den Apache-Webserver neu:>
sudo
systemctl restart apache2
Sie müssen
sudo
nicht vorsystemctl
-Kommandos setzen, mit denen das System nicht verändert oder kein berechtigter Zugriff auf Informationen erteilt wird. Sie können beispielsweise den Status der Netzwerkverwaltung auch ohnesudo
abrufen:>
systemctl status NetworkManager
● NetworkManager.service - Network Manager Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/NetworkManager.service.d └─NetworkManager-ovs.conf Active: active (running) since DAY YYYY-MM-DD HH:MM:SS TIMEZONE; 1h 21min ago Docs: man:NetworkManager(8) [...]- Ändern eines Benutzerkontos mit
sudo
undusermod
So ändern Sie Benutzerkonten mit dem Kommando
usermod
:>
sudo
usermod [OPTION] USERNAME
So legen Sie beispielsweise einen Zeitraum von
30
Tagen fest, nach dem das Benutzerkontotux
nach Ablauf des Passworts dauerhaft deaktiviert wird:>
sudo
usermod --inactive 30 tux
- Ändern von Datei- und Verzeichnisbesitz mit
sudo
undchown
Wenn Sie den Besitz von Dateien und Verzeichnissen vom aktuellen Besitzer auf einen neuen Besitzer ändern möchten, verwenden Sie:
>
sudo
chown [OPTION] [OWNER:[GROUP]] FILE
Wenn Sie
tux
den Datei- und Verzeichnisbesitz im Verzeichnis/home/test/tux-files
geben möchten, führen Sie das folgende Kommando aus:>
sudo
chown tux /home/test/tux-files/ --recursive
Mit diesem Kommando können Sie die Eignungsänderung prüfen:
>
ls -alrt /home/test/tux-files/ --recursive
- Ausführen eines Kommandos als ein anderer Benutzer mit
sudo -s
Anstatt das
su
-Kommando für den Wechsel zu einem anderen Benutzer und das anschließende Ausführen von Kommandos zu verwenden, können Sie auch dassudo -s
-Kommando verwenden. Eine Shell, die mit dem Kommandosudo -s
ausgeführt wird, erbt die Umgebung des aktuellen Benutzers. Das Kommandosudo -s
bietet außerdem einige Funktionen zur Kontrolle der Rechte.So führen Sie ein Kommando als ein anderer Benutzer aus:
>
sudo
-s -u USERNAME COMMAND
Standardmäßig wird das Kommando aus dem Verzeichnis des vorherigen Benutzers heraus ausgeführt, da der Zielbenutzer die Umgebung des vorherigen Benutzers erbt.
Wenn Sie beispielsweise die Dateien und Unterverzeichnisse des Verzeichnisses
/home/test/tux-files/
als Zielbenutzertux
rekursiv auflisten möchten, führen Sie folgendes Kommando aus:>
sudo
-s -u tux ls -alrt /home/test/tux-files/ --recursive
Wenn Sie ein Kommando mit
sudo -s
als ein anderer Benutzer ausführen, wird das Kommando in Ihrem Verlauf protokolliert.- Ausführen eines Kommandos als ein anderer Benutzer mit einer sauberen Umgebung mit
sudo -i
Beim Kommando
sudo -s
erbt der Zielbenutzer die Umgebung des vorherigen Benutzers. Sie können dies verhindern, indem Sie dassudo -i
-Kommando verwenden, bei dem der Zielbenutzer eine übersichtliche Umgebung erhält und im eigenen$HOME
-Verzeichnis startet.So führen Sie ein Kommando als ein anderer Benutzer mit einer sauberen Umgebung aus:
>
sudo
-i -u USERNAME COMMAND
Das Kommando
sudo -i
führt die Shell als interaktive Login-Shell des Zielbenutzers aus. Infolgedessen gibt es Shell-Startskripte wie die Dateien.profile
und.bash_profile
.Wenn Sie beispielsweise die Dateien und Unterverzeichnisse des Verzeichnisses
/home/test/tux-files/
alstux
auflisten möchten, führen Sie das folgende Kommando aus:>
sudo
-i -u tux ls -alrt /home/test/tux-files/
Wenn Sie ein Kommando mit
sudo -i
als ein anderer Benutzer ausführen, wird das Kommando in Ihrem Verlauf protokolliert.
4 Unterschied zwischen sudo
und su
#
Erfahren Sie hier, wie sich die Kommandos sudo
und su
unterscheiden und wann Sie welches verwenden sollten.
Auf Linux-Systemen können Sie einem Kommando wahlweise sudo
oder su
voranstellen. In beiden Fällen können Sie Kommandos als root
ausführen.
4.1 Merkmale des Kommandos sudo
#
Mit
sudo
können Sie ein Kommando alsroot
ausführen. Je nach Konfiguration müssen Sie nicht dasroot
-Passwort eingeben, sondern nur das Passwort des Benutzers. Auf diese Weise müssen keine vertraulichen Daten an alle anderen (normalen) Benutzer weitergegeben werden.Mit der
sudo
-Konfigurationsdatei kann der Systemadministrator steuern, welche Benutzersudo
nutzen dürfen und die Nutzung auf bestimmte Aufgaben beschränken.sudo
speichert das Passwort für eine bestimmte Zeitspanne im Cache. Nach Ablauf dieses Zeitraums werden Sie erneut nach dem Passwort gefragt, wenn Sie das nächstesudo
-Kommando ausführen.Alle mit
sudo
ausgeführten Kommandos werden einzeln protokolliert. Die Protokolldatei zeichnet Datum und Uhrzeit, den Benutzer, der das Kommando ausgeführt hat, und das Kommando selbst auf.
4.2 Merkmale des Kommandos su
#
Mit
su
können Sie ein Kommando alsroot
ausführen, müssen jedoch dasroot
-Passwort angeben.Es kann nicht so konfiguriert werden, dass der Zugriff auf bestimmte Benutzer und Aufgaben eingeschränkt und die Rechte für jeden, der das
root
-Passwort kennt, erhöht werden.Die Rechte werden für die Dauer der gesamten Terminalsitzung erhöht. Solange Sie in der Sitzung bleiben, werden Sie nicht noch einmal aufgefordert, das Passwort einzugeben.
Die mit
su
ausgeführten Kommandos werden nicht einzeln protokolliert, da alle Aktionen nur im Benutzerkonto protokolliert werden können.
5 Rechtliche Hinweise #
Copyright © 2006–2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.