Wie kann ich aus einer Passwortabfrage heraus STRG ^ C drücken?

8

Angenommen, ich habe einen suBefehl gestartet und möchte ihn abbrechen. Control+ Cfunktioniert nicht suwie für sudo... Ich muss die Eingabeaufforderung beenden (entweder indem ich das Passwort oft genug falsch mache oder indem ich es richtig mache ).

Gibt es etwas, das ich eingeben kann, um eine Passwortabfrage zu beenden?

Fragezeichen
quelle
@DisplayName Sie können-c nicht wie ein Sudo aus einem su heraus steuern ... dies ist ein anderes Szenario.
Fragezeichen
Die Antwort lautet Kontrolle-D.
DisplayName
@DisplayName Ja, siehe Gilles Antwort. Mein Punkt ist, dass dies nicht als Duplikat markiert werden sollte ...
Fragezeichen
Es ist ein Duplikat. Die Antwort für den Beitrag, den ich verlinkt habe, lautet auch control-D.
DisplayName

Antworten:

5

suwird mit erhöhten Berechtigungen ausgeführt, und Sie sehen nicht, dass darauf reagiert wird ^C(wodurch ein Signal mit Ihren Berechtigungen gesendet wird ). Sie könnten su zu einer anderen Shell gehen und sie von der anderen Shell töten. Außerdem kann es (je nach System) auf SIGHUP(ein Auflegen-Signal) reagieren, wenn Sie die Terminalsitzung geschlossen haben, in der das Problem auftritt su.

Es gibt mehr als einen Weg, der suIhre ignorieren kann ^C, z.

  • Einrichtung von Signalhandlern oder
  • läuft unter einem anderen Steuerterminal.

Eine kurze Lektüre von Debiansu scheint, dass es Letzteres verwendet. Ihr System kann natürlich anders sein.

Weiterführende Literatur:

Thomas Dickey
quelle
Wenn ich suals normaler Benutzer ausgeführt werde und es auf die Eingabe eines Kennworts durch den Benutzer wartet, wird es derzeit "mit erhöhten Berechtigungen ausgeführt"?
Techraf
1
Ja, Sie können sich selbst davon überzeugen, indem Sie eine ps -efvon einem anderen Terminal aus ausführen. Das passiert automatisch, weil suauf root gesetzt ist .
Thomas Dickey
7

Sie können CTRL-D suauffordern.
Diese Verknüpfung signalisiert ein Dateiende auf der Konsole und beendet die Eingabeaufforderung. Die Konsole wird angezeigt Authentication error, was zu erwarten ist.

joH1
quelle
3
Control-D wäre ein EOF (QUIT ist eine andere Sache und wird normalerweise gefangen ). Aber ja, EOF könnte funktionieren.
Thomas Dickey
2

Ich habe festgestellt, dass der beste Weg zum Töten suwährend der Eingabe eines falschen Passworts Control+ Ugefolgt von Control+ ist D. Dies sollte störende Verzögerungen vermeiden. Sie können die Eingabe auch einfach mit Control+ löschen Uund erneut versuchen, das Kennwort einzugeben .

Control+ Uist ein Befehl, der die aktuelle Textzeile löscht und auch in einer Shell (und wahrscheinlich auch an anderen Stellen) funktioniert. Es ist auch schön, dass es zu funktionieren scheint, um sudas aktuell eingegebene Passwort zu löschen.

Die Verwendung von Control+ Cscheint nicht zu funktionieren, es scheint, dass es aus irgendeinem Grund sueinfach ignoriert wird. Es ist nicht wahr, dass der Benutzer, der den Prozess gestartet hat, ihn aufgrund von setuid nicht mehr beenden kann - sustirbt einwandfrei, wenn Sie ihn mit SIGTERModer SIGQUITvon einem anderen Terminal (als Benutzer, der ihn gestartet hat) beenden. SIGINTfunktioniert nicht, suignoriert es also wahrscheinlich einfach.

Control+ Dmit einer leeren Passworteingabe scheint die einzige Möglichkeit zu sein , einen Lauf sofort zu beenden.su Wenn Text eingegeben wird, führt das Drücken von Control+ zu Deiner Verzögerung von 3 Sekunden (es sei denn, Sie haben tatsächlich das richtige Passwort eingegeben. In diesem Fall. .. es wird eine Root-Shell starten).

Uukgoblin
quelle