Machs noch einmal mit sudo

  Ralf Hersel   Lesezeit: 3 Minuten  🗪 10 Kommentare

Den letzten Befehl im Terminal mit Root-Rechten ausführen.

machs noch einmal mit sudo

Kennt ihr das? Da tippt man einen Befehl im Terminal, um danach die Meldung zu sehen, dass dafür Root-Rechte erforderlich sind. Um ein einzelnes Kommando mit Root-Rechten ausführen zu können, gibt es bekanntlich den Befehl sudo. Nun könnte man mit 'Pfeil-nach-oben' den auszuführenden Befehl aus der History holen, den Cursor an den Anfang setzen, sudo davor schreiben und den Befehl erneut ausführen - es geht aber auch einfacher.

Das Kommando sudo !! macht genau das. Es führt den zuletzt eingegeben Befehl mit sudo aus. Im oben gezeigten Beispiel führt sudo !! den Befehl sudo mkdir delme aus, bzw. löscht das Verzeichnis anschliessend wieder. Wenn man sudo !! verwendet, sollte man sich absolut sicher sein, welches der zuletzt eingegebene Befehl war, um Unheil zu vermeiden.

Falls man die Root-Rechte für mehrere Befehle braucht, kann man mit sudo -i oder su eine Root-Shell öffnen und diese danach mit exit wieder verlassen. Vom Arbeiten in einer Root-Shell wird jedoch abgeraten, weil man schnell vergisst, dass man mit erweiterten Rechten unterwegs ist.

Nachtrag

Auf unserem Mastodon-Kanal hat Andre eine Frage gestellt, bzw. eine Anregung gegeben:

Gibt es das auch für andere Befehle? Zum Beispiel:

$ cat /some/very/long/file.txt
[thousands of lines]
$ grep "what i search for" !!

Ja, das geht. Grundsätzlich holt !! immer den letzten Befehl zurück. Für das von Andre genannte Beispiel (lange Datei durchsuchen), könnte man das so machen:

cat big_file
!! | grep suchtext

Wer so etwas öfters braucht, möchte evtl. einen Alias dafür anlegen. Mir ist das leider nicht gelungen. Der Alias:

alias catgrep="!! | grep !:1"

... funktioniert nicht, weil !! im Alias nicht als Kommando akzeptiert wird. Vielleicht hat die Community eine Idee, wie man das umsetzen könnte.

Tags

Terminal, Shell, Sudo, Befehl, Root-Rechte, Root-Shell, Kommando, Root, Alias, Recht

logg.sar
Geschrieben von logg.sar am 6. Mai 2022 um 17:04

Moin den Sinn dieses bangbang habe ich bis heute noch nicht verstanden. Wenn "Keine Berechtigung" kommt drücke ich Pfeil nach oben und Pos1 und schreibe dann sudo hin. Hat den Vorteil dass ich den Befehl nochmal sehen kann.

Horst
Geschrieben von Horst am 6. Mai 2022 um 17:49

Zitat: "Wenn man sudo !! verwendet, sollte man sich absolut sicher sein, welches der zuletzt eingegebene Befehl war, um Unheil zu vermeiden."

Das ist imho sowas von richtig. Daher würde ich solche Eingaben tunlichst meiden...

Fred
Geschrieben von Fred am 6. Mai 2022 um 17:50

!! ist ja nicht auf sudo beschränkt, da es kein Parameter von sudo ist.

Es gehen auch andere Dinge damit:

echo "!!" > file

Oder: cowsay "!!"

:-)

Massimo
Geschrieben von Massimo am 6. Mai 2022 um 18:35

WHAT! Warum erfahre ich das erst jetzt? Wie oft ist mir das schon passiert. Er vor 15 Minuten das letzte Mal. Vielen Dank dafür!

h4ckerle
Geschrieben von h4ckerle am 6. Mai 2022 um 21:09

Es gibt das Oh-my-zsh Plugin sudo, dass etwas ganz Ähnliches tut, bei dem man aber sieht was man tut...

Gast
Geschrieben von Gast am 7. Mai 2022 um 09:52

Könnt ihr vielleicht mal eine Art Anleitung für PolicyKit machen und z.B. was man einstellen muss um auf verschiedenen Distros updates ohne Root Aufforderung durchführen zu können. (Evt. auch Deinstallieren von Flatpacks oder so und andere Dinge die Sicherheitstechnisch Sinn ergeben können(aber z.B. sowas wie Downgraden von Packeten weiterhin nur mit Root machen zu können usw.))

Horst
Geschrieben von Horst am 8. Mai 2022 um 17:30

"...z.B. was man einstellen muss um auf verschiedenen Distros updates ohne Root Aufforderung durchführen zu können..."

Ich weiß jetzt nicht, ob ich Dich richtig verstanden habe. Zunächst einmal bieten viele Oberflächen Update-Notifier an. Starten muß man das Update/Upgrade dann aber mit der Eingabe des Root-Passworts, was ich sicherheitstechnisch wichtig und richtig finde. Wenn Du im Terminal Dich als Root anmelden und ein Update/Upgrade anstoßen willst, können Dir Alias-Abkürzungen (zum Beispiel "s" für "su -" oder "u" für "apt update && apt full-upgrade") das Vorgehen etwas vereinfachen.

p { margin-bottom: 0.25cm; line-height: 115%; background: transparent }code { font-family: "Liberation Mono", monospace }a:link { color: #000080; so-language: zxx; text-decoration: underline }

Charon
Geschrieben von Charon am 8. Mai 2022 um 09:34

Sudo ist bloatware. Verwendet doas.

👓
Geschrieben von 👓 am 10. Mai 2022 um 07:20

Was macht denn der Unterschied aus?

Michael
Geschrieben von Michael am 9. Mai 2022 um 07:11