GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 Kurztipps zum Befehl sudo für Linux-Systeme

Übersicht

sudo steht für superuser do . Es ermöglicht autorisierten Benutzern, Befehle als ein anderer Benutzer auszuführen. Ein anderer Benutzer kann ein normaler Benutzer oder ein Superuser sein. Meistens verwenden wir es jedoch, um Befehle mit erhöhten Rechten auszuführen.

Der sudo-Befehl funktioniert in Verbindung mit Sicherheitsrichtlinien, die Standard-Sicherheitsrichtlinie ist sudoers und kann über /etc/sudoers konfiguriert werden Datei. Seine Sicherheitsrichtlinien sind in hohem Maße erweiterbar. Man kann eigene Richtlinien als Plugins entwickeln und verteilen.

Der Unterschied zu su

In GNU/Linux gibt es zwei Möglichkeiten, Befehle mit erhöhten Rechten auszuführen:

  • Mit su Befehl
  • Mit sudo Befehl

su steht für Benutzer wechseln . Mit su können wir zum Root-Benutzer wechseln und den Befehl ausführen. Dieser Ansatz hat jedoch einige Nachteile.

  • Wir müssen das Root-Passwort mit einem anderen Benutzer teilen.
  • Wir können keinen kontrollierten Zugriff gewähren, da der Root-Benutzer Superuser ist
  • Wir können nicht überprüfen, was der Benutzer tut.

sudo geht diese Probleme auf einzigartige Weise an.

  1. Zunächst müssen wir das Root-Benutzerpasswort nicht kompromittieren. Normale Benutzer verwenden ihr eigenes Passwort, um Befehle mit erhöhten Rechten auszuführen.
  2. Wir können den Zugriff des sudo-Benutzers kontrollieren, was bedeutet, dass wir den Benutzer darauf beschränken können, nur bestimmte Befehle auszuführen.
  3. Außerdem werden alle Aktivitäten des sudo-Benutzers protokolliert, sodass wir immer überprüfen können, welche Aktionen durchgeführt wurden. Auf Debian-basiertem GNU/Linux werden alle Aktivitäten in /var/log/auth.log protokolliert Datei.

Spätere Abschnitte dieses Tutorials beleuchten diese Punkte.

Praktisch mit sudo

Jetzt haben wir ein faires Verständnis für sudo. Machen wir uns mit praktischen Dingen die Hände schmutzig. Zur Demonstration verwende ich Ubuntu. Das Verhalten mit einer anderen Distribution sollte jedoch identisch sein.

Sudo-Zugriff zulassen

Lassen Sie uns einen regulären Benutzer als sudo-Benutzer hinzufügen. In meinem Fall lautet der Benutzername linuxtechi

1) Bearbeiten Sie die /etc/sudoers-Datei wie folgt:

$ sudo visudo

2) Fügen Sie die folgende Zeile hinzu, um dem Benutzer linuxtechi den sudo-Zugriff zu ermöglichen:

linuxtechi ALL=(ALL) ALL

Im obigen Befehl:

  • linuxtechi gibt den Benutzernamen an
  • Zuerst weist ALL an, den sudo-Zugriff von jedem Terminal/Computer aus zuzulassen
  • Zweitens (ALL) weist den sudo-Befehl an, von jedem Benutzer ausgeführt werden zu dürfen
  • Drittes ALL gibt an, dass alle Befehle als root ausgeführt werden können

Befehl mit erhöhten Rechten ausführen

Um den Befehl mit erhöhten Rechten auszuführen, stellen Sie dem Befehl einfach das Wort sudo wie folgt voran:

$ sudo cat /etc/passwd

Wenn Sie diesen Befehl ausführen, wird nach dem Passwort von linuxtechi und nicht nach dem Passwort des Root-Benutzers gefragt.

Befehl als anderer Benutzer ausführen

Darüber hinaus können wir sudo verwenden, um den Befehl als ein anderer Benutzer auszuführen. Im folgenden Befehl führt der Benutzer linuxtechi beispielsweise den Befehl als devesh-Benutzer aus:

$ sudo -u devesh whoami
[sudo] password for linuxtechi:
devesh

Eingebautes Befehlsverhalten

Eine der Einschränkungen von sudo ist – Shells eingebauter Befehl funktioniert nicht damit. Beispielsweise ist der Verlauf in den Befehl integriert. Wenn Sie versuchen, diesen Befehl mit sudo auszuführen, wird der Fehler „Befehl nicht gefunden“ wie folgt gemeldet:

$ sudo history
[sudo] password for linuxtechi:
sudo: history: command not found

Rufen Sie die Root-Shell auf

Um das obige Problem zu lösen, können wir auf die Root-Shell zugreifen und von dort aus jeden Befehl ausführen, einschließlich der in Shell integrierten.

Um auf die Root-Shell zuzugreifen, führen Sie den folgenden Befehl aus:

$ sudo bash

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie feststellen, dass sich das Eingabeaufforderungszeichen in ein Rautezeichen (#) ändert.

Rezepte

In diesem Abschnitt besprechen wir einige nützliche Rezepte, die Ihnen helfen werden, Ihre Produktivität zu steigern. Die meisten Befehle können verwendet werden, um alltägliche Aufgaben zu erledigen.

Vorherigen Befehl als sudo-Benutzer ausführen

Angenommen, Sie möchten den vorherigen Befehl mit erhöhten Rechten ausführen, dann ist der folgende Trick nützlich:

$ sudo !4

Der obige Befehl führt den vierten Befehl aus dem Verlauf mit erhöhten Rechten aus.

Wenn Sie den vorherigen Befehl mit Root-Rechten mit dem Befehl sudo ausführen möchten, verwenden Sie den folgenden Befehl,

$ sudo !!

sudo-Befehl mit Vim

Oft bearbeiten wir die Konfigurationsdateien des Systems und stellen beim Speichern fest, dass wir dafür Root-Zugriff benötigen. Dadurch können wir unsere Änderungen verlieren. Es besteht kein Grund, in Panik zu geraten, wir können den folgenden Befehl in Vim verwenden, um aus dieser Situation zu retten:

:w !sudo tee %

Im obigen Befehl:

  • Doppelpunkt (:) zeigt an, dass wir uns im Ex-Modus von Vim befinden
  • Ausrufezeichen (!) zeigt an, dass wir einen Shell-Befehl ausführen
  • sudo und tee sind die Shell-Befehle
  • Prozentzeichen (%) zeigen alle Zeilen ab der aktuellen Zeile an

Mehrere Befehle mit sudo ausführen

Bisher haben wir nur einen einzelnen Befehl mit sudo ausgeführt, aber wir können damit mehrere Befehle ausführen. Trennen Sie einfach Befehle mit Semikolon (;) wie folgt:

$ sudo -- bash -c 'pwd; hostname; whoami'

Im obigen Befehl:

  • Doppelter Bindestrich (–) stoppt die Verarbeitung von Befehlszeilenschaltern
  • bash gibt den für die Ausführung zu verwendenden Shell-Namen an
  • Auf auszuführende Befehle folgt die Option –c

Sudo-Befehl ohne Passwort ausführen

Wenn der sudo-Befehl zum ersten Mal ausgeführt wird, wird er zur Eingabe des Passworts auffordern und standardmäßig wird das Passwort für die nächsten 15 Minuten zwischengespeichert. Wir können dieses Verhalten jedoch überschreiben und die Kennwortauthentifizierung mit dem Schlüsselwort NOPASSWD wie folgt deaktivieren:

linuxtechi ALL=(ALL) NOPASSWD: ALL

Beschränken Sie den Benutzer auf die Ausführung bestimmter Befehle

Um einen kontrollierten Zugriff bereitzustellen, können wir den sudo-Benutzer darauf beschränken, nur bestimmte Befehle auszuführen. Beispielsweise erlaubt die folgende Zeile nur die Ausführung von Echo- und ls-Befehlen

linuxtechi ALL=(ALL) NOPASSWD: /bin/echo /bin/ls

Zeile oder Textstring mit dem sudo-Befehl an eine Datei anhängen

Es gibt einige Szenarien, in denen wir einige Zeilen an eine vorhandene Datei mit einem lokalen Benutzer mit Sudo-Rechten anhängen müssen,

$ echo 'Textzeichenfolge' | sudo tee -a

Beispiel ist unten gezeigt:

[email protected]:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list
deb http://ftp.de.debian.org/debian buster main contrib
[email protected]:~$

Alternative Methode zum Anhängen von Zeilen oder Text an eine vorhandene Datei mit dem Befehl sudo,

sudo sh -c 'echo "deb http://ftp.de.debian.org/debian buster main contrib" >> /etc/apt/sources.list'

Einblicke in sudo

Lassen Sie uns mehr über den sudo-Befehl ausgraben, um Einblicke darüber zu erhalten.

$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 145040 Jun 13  2017 /usr/bin/sudo

Wenn Sie die Dateiberechtigungen sorgfältig beachten, kann setuid bit ist auf sudo aktiviert. Wenn ein Benutzer diese Binärdatei ausführt, wird sie mit den Rechten des Benutzers ausgeführt, dem die Datei gehört. In diesem Fall ist es der Root-Benutzer.

Um dies zu demonstrieren, können wir den id-Befehl wie folgt verwenden:

$ id
uid=1002(linuxtechi) gid=1002(linuxtechi) groups=1002(linuxtechi)

Wenn wir den id-Befehl ohne sudo ausführen, wird die ID des Benutzers linuxtechi angezeigt.

$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Aber wenn wir den id-Befehl mit sudo ausführen, wird die ID des Root-Benutzers angezeigt.

Schlussfolgerung

Takeaway aus diesem Artikel ist – sudo bietet regulären Benutzern einen kontrollierteren Zugriff. Mit diesen Techniken können mehrere Benutzer sicher mit GNU/Linux interagieren.

Lesen Sie auch:Wie man harte und weiche (Symlink-)Links auf Linux-Systemen erstellt


Linux
  1. 3 Tipps zum Drucken mit Linux

  2. 8 Tipps für die Linux-Kommandozeile

  3. sudo-Befehlsbeispiele in Linux

  4. Was ist das Äquivalent von Linux's updatedb-Befehl für den Mac?

  5. Führen Sie den cd-Befehl als Superuser unter Linux aus

10 Tipps zum Befehl „dmesg“ für Linux-Geeks

10 nützliche ncat (nc)-Befehlsbeispiele für Linux-Systeme

11 Nützliche Split-Befehlsbeispiele für Linux-Systeme

18 Beispiele für schnelle „lsof“-Befehle für Linux-Geeks

Sudo-Befehl unter Linux

Grundlagen der Linux-Befehlszeile:sudo