Bagaimana cara CTRL ^ C keluar dari prompt kata sandi?

8

Katakanlah saya memulai sebuah superintah, dan saya ingin membatalkannya. Control+ Ctidak berfungsi suseperti halnya untuk sudo... Saya harus menyelesaikan prompt (baik dengan mendapatkan kata sandi yang salah kali atau dengan memperbaikinya).

Apakah ada sesuatu yang bisa saya ketik untuk mematikan prompt kata sandi?

Tanda tanya
sumber
@DisplayName Anda tidak dapat mengontrol-c su seperti Anda dapat sudo ... ini adalah skenario yang berbeda.
Questionmark
jawabannya adalah control-D.
DisplayName
@DisplayName Ya, lihat jawaban Gilles. Maksud saya adalah bahwa ini tidak boleh ditandai sebagai duplikat ...
Questionmark
Ini adalah duplikat. Jawaban untuk posting yang saya tautkan juga mengatakan control-D.
DisplayName

Jawaban:

5

susedang berjalan dengan hak yang lebih tinggi, dan Anda tidak melihatnya merespons ^C(yang mengirimkan sinyal dengan hak istimewa Anda ). Anda bisa su ke shell lain dan membunuhnya dari shell lain. Juga (tergantung pada sistem), mungkin merespon SIGHUP(sinyal hangup) jika Anda menutup sesi terminal di mana canggung susedang berlangsung.

Ada lebih dari satu cara yang sudapat mengabaikan Anda ^C, misalnya,

  • membangun penangan sinyal atau
  • berjalan di bawah terminal pengendali yang berbeda.

Pembacaan cepat dari Debiansu tampaknya menggunakan yang terakhir. Sistem Anda tentu saja mungkin berbeda.

Bacaan lebih lanjut:

Thomas Dickey
sumber
Jika saya mengeksekusi susebagai pengguna biasa dan sedang menunggu input kata sandi dari pengguna, apakah itu "berjalan dengan hak istimewa" pada saat ini?
techraf
1
Ya: Anda bisa melihatnya sendiri dengan melakukan ps -efdari terminal lain. Itu terjadi secara otomatis karena sudisetuid'd untuk root .
Thomas Dickey
7

Anda dapat CTRL-D sumeminta.
Pintasan ini memberi sinyal akhir file pada konsol, berhenti dari prompt; konsol akan ditampilkan Authentication error, yang diharapkan.

joH1
sumber
3
Control-D akan menjadi EOF (QUIT adalah hal yang berbeda, dan biasanya tertangkap ). Tapi ya, EOF bisa bekerja.
Thomas Dickey
2

Saya telah menemukan cara terbaik untuk membunuh suselama memasukkan kata sandi yang salah adalah Control+ Udiikuti oleh Control+ D. Ini harus menghindari penundaan yang mengganggu. Anda juga dapat menghapus input dengan Control+ Udan mencoba kembali memasukkan kata sandi.

Control+ Uadalah perintah yang menghapus baris teks saat ini, dan juga berfungsi dalam shell (dan mungkin juga tempat lain). Ini juga bagus karena sepertinya bisa digunakan suuntuk menghapus kata sandi yang saat ini dimasukkan.

Menggunakan Control+ Ctampaknya tidak berfungsi, tampaknya karena alasan tertentu sumengabaikannya. Tidak benar bahwa pengguna yang memulai proses tidak lagi dapat membunuhnya karena setuid - sumati dengan baik jika Anda membunuhnya dengan SIGTERMatau SIGQUITdari terminal lain (sebagai pengguna yang memulai). SIGINTtidak berfungsi, jadi sumungkin abaikan saja.

Control+ Ddengan input kata sandi yang kosong tampaknya menjadi satu-satunya cara untuk secara instan mematikan proses su- jika ada teks yang dimasukkan, maka menekan Control+ Dakan menyebabkan penundaan 3 detik (kecuali jika Anda benar-benar mengetikkan kata sandi yang benar, dalam hal ini. .. itu akan memulai shell root).

uukgoblin
sumber