Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Ausführen von Kommandos als Superuser mit sudo

Ausführen von Kommandos als Superuser mit sudo

Veröffentlicht: 12.12.2024
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 mit sudo für bestimmte Anwendungsfälle.

ANFORDERUNGEN
  • root- oder sudo-Rechte. Diese sind nur verfügbar, wenn Sie der Administrator des Systems sind. Weitere Informationen hierzu finden Sie im Abschnitt 1, „Grundlegende Konzepte von sudo.

  • 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.

Anmerkung
Anmerkung: Für 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.

Beispiel 1: Öffnen des YaST-Kontrollzentrums mit 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

1

Wird nur das Kommando yast eingegeben, gibt das System eine Meldung zurück, dass root-Rechte erforderlich sind.

2

Wenn Sie dem Kommando yast das Kommando sudo voranstellen, werden Sie nach dem root-Passwort gefragt. Das Passwort wird bei der Eingabe weder als Klartext noch durch maskierende Zeichen angezeigt.

Nach erfolgreicher Authentifizierung wird das YaST-Kontrollzentrum 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.

Vorgehen 1: Ausführen eines Kommandos, dem 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.

  1. Öffnen Sie ein Terminal und erstellen Sie eine Testdatei mit:

    > touch test.txt
  2. 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.

  3. Geben Sie nun dasselbe Kommando ein und stellen Sie sudo voran:

    > sudo cp test.txt /usr/local/bin
  4. 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:
  5. Nach der erfolgreichen Authentifizierung wird die Testdatei in /usr/local/bin kopiert.

  6. 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 Sie sudo !! 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 und zypper

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 vor zypper-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 ohne sudo abrufen:

> zypper lr
Verwalten von Systemdiensten mit sudo und systemctl

Auch Systeme, bei denen die Dienste mit systemd verwaltet werden, können Sie das Kommando systemctl mit sudo nutzen. Mit diesem Kommando starten Sie beispielsweise den Apache-Webserver neu:

> sudo systemctl restart apache2

Sie müssen sudo nicht vor systemctl-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 ohne sudo 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 und usermod

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 Benutzerkonto tux nach Ablauf des Passworts dauerhaft deaktiviert wird:

> sudo usermod --inactive 30 tux
Ändern von Datei- und Verzeichnisbesitz mit sudo und chown

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 das sudo -s-Kommando verwenden. Eine Shell, die mit dem Kommando sudo -s ausgeführt wird, erbt die Umgebung des aktuellen Benutzers. Das Kommando sudo -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 Zielbenutzer tux 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 das sudo -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/ als tux 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 als root ausführen. Je nach Konfiguration müssen Sie nicht das root-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 Benutzer sudo 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ächste sudo-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 als root ausführen, müssen jedoch das root-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.