Ich habe kürzlich sudo
die Authentifizierungs-Caching-Funktion deaktiviert , sodass ich jetzt jedes Mal zur Eingabe eines Kennworts aufgefordert werde.
Und obwohl dies gut für die Sicherheit ist, hat es ein kleines Problem verursacht, für das ich keine Lösung finden konnte. Ich kann keine Befehle ausführen, die wie folgt lauten:
sudo <command> &
In der Vergangenheit hätte ich vorher einen sudo
Befehl ausgeführt, mein Kennwort zwischengespeichert und es mir ermöglicht, sudo
Befehle ohne Eingabeaufforderung für die nächsten Minuten auszuführen, sodass ich den Befehl ausführen konnte.
Aber wenn ich es jetzt ausführe, weil es kein Caching gibt und weil es sofort einen neuen Thread startet und sudo
mich nicht einmal zur Eingabe eines Passworts auffordert, kann ich es nicht auf diese Weise ausführen.
Wenn ich es nicht sudo -i
vorher ausführe, kann ich keinen Befehl in diesem Format ausführen, was ziemlich nervig wird.
Also habe ich mich gefragt, ob es eine Möglichkeit gibt, dies zu umgehen und trotzdem Programme und Befehle auf diese Weise auszuführen?
Ich verwende Ubuntu GNOME 15.10 mit GNOME 3.18 und speziell das Programm, das ich auf diese Weise ausführen möchte, ist, etherape
ob dies einen Unterschied macht, aber ich möchte wirklich, dass die Lösung für alle Programme und Befehle funktioniert.
&
ist nicht wirklich durchsuchbar, ich ändere das auf… sudo command in the background
.Antworten:
sudo
Sagen Siesudo
, dass der Befehl nicht im Hintergrund ausgeführt werden soll, sondern im Hintergrund. Vonman sudo
:Beispielsweise:
Eine andere Möglichkeit wäre, einfach eine Shell zu verwenden, um den Befehl auszuführen:
Eine andere Möglichkeit wäre, ein grafisches Programm zum Abrufen des Passworts anzugeben und es
sudo
trotzdem in den Hintergrund zu senden :Askpass-Programme werden normalerweise für SSH verwendet. Ein solches wird durch das
ssh-askpass-gnome
Paket bereitgestellt, das standardmäßig mindestens unter Ubuntu 15.10 installiert ist.quelle
Wenn Sie bereit sind,
timestamp_timeout
mindestens eine Einstellung wie0.02
(1,2 Sekunden, ich würde sagen, genauso sicher wie0
) in/etc/sudoers
(in Ihrem Fall erforderlich, aber mit den Standardeinstellungen oder mit einertimestamp_timeout
Einstellung auf etwas anderes,0
kann man einfach Folgendes tun) , Sie können einen Alias wie diesen eingeben~/.bashrc
, bei dem Sie nicht daran denken müssen, etwas zu tun, bevor Sie den Befehl ausführen, und der es Ihnen ermöglicht, die Kontrolle über den Prozess zu behalten .:Der Trick hier ist das Semikolon, mit dem Bash
sudo -v
zuerst und separat analysiert wird , um den Benutzer zu authentifizieren, und der potenzielle Hintergrundteil auf den[ $? ] && sudo
Befehl beschränkt wird, der prüft, ob der Befehlsudo -v
erfolgreich war, und ihnsudo
erneut ausführt (möglicherweise im Hintergrund), falls dies der Fall ist.quelle
sudo -v
erweitern Credential - Caching auch wenn Caching deaktiviert ist? Und, IIRC <damit Aliase erweitert werden, sollte der Speicherplatz am Ende des Befehls und nicht am Anfang sein.timestamp_timeout
auf0
. Und ja, ich habe die Alias-Erweiterungssache komplett durcheinander gebracht, eigentlich sollte der Alias nicht erweitert werden. Vielen Dank.alias sudo='sudo -v && sudo'
so gut?;
Bashsudo -v
zuerst und separat parsen lässt ; Wenn Sie&&
Bash verwenden, werden beide Befehle sofort als ein einziger Befehl und der Hintergrund sofort analysiert.Das kannst du nicht. Der
&
schickt den Befehl sofort in den Hintergrund. Das heißt, im Hintergrund wird eine Subshell erstellt und der Befehl dort ausgeführt. Wenn dieser Befehl eine Eingabeaufforderung ausgibt, wie es der Fall istsudo
, wird die Eingabeaufforderung im Hintergrund angezeigt und Sie sehen sie nie.Die einzige Möglichkeit, dies zu umgehen, besteht darin, den Befehl wieder in den Vordergrund zu stellen, das Kennwort anzugeben und es wieder in den Hintergrund zu stellen. Beispielsweise:
Geben Sie nun Ihr Passwort ein, drücken Sie Enterund dann CtrlZ, um es wieder in den Hintergrund zu stellen und ihm
bg
mitzuteilen, dass es weiter ausgeführt werden soll.Ein einfacherer Ansatz wäre
&
, Jobs nie zu verwenden und stattdessen manuell mit CtrlZundbg
nach dem Start an den Hintergrund zu senden .Schließlich können Sie das Kennwort-Timeout von sudo auf 1 oder 2 Sekunden einstellen. Das gibt Ihnen immer noch genügend Sicherheit (es sei denn, Sie versuchen, sich vor dem Flash zu schützen) und ermöglicht es Ihnen, Befehle wie diese wie erwartet auszuführen.
quelle
man sudoers
sagttimestamp_timeout
, der Wert soll Minuten mit einem möglichen Bruchteil angeben (was übrigenssudo
Fehler macht , wenn ich versuche, einen anzugeben, nicht sicher warum).2.5
Funktioniert hiersudo
einwandfrei (Arch, Version 1.8.15).