![如何按 CTRL^C 退出密码提示?](https://linux22.com/image/84679/%E5%A6%82%E4%BD%95%E6%8C%89%20CTRL%5EC%20%E9%80%80%E5%87%BA%E5%AF%86%E7%A0%81%E6%8F%90%E7%A4%BA%EF%BC%9F.png)
假设我启动了一个su
命令,我想取消它。 Control+C不像su
它那样工作sudo
... 我必须完成提示(要么输入密码错误足够多的次数,要么输入正确的密码)。
我可以输入一些内容来终止密码提示吗?
答案1
你可以CTRL-D
su
按提示。
此快捷方式在控制台上发出文件结束信号,退出提示符;控制台将显示Authentication error
,这是预期的。
答案2
su
正在以提升的权限运行,并且您没有看到它响应^C
(它发送一个信号你的特权)。你可以 su
到另一个 shell 并从另一个 shell 中杀死它。另外(取决于系统),如果您关闭正在进行SIGHUP
尴尬的终端会话,它可能会响应(挂断信号) 。su
有不止一种方法su
可以忽略你的^C
,例如,
- 建立信号处理程序或
- 在不同的控制终端下运行。
快速阅读Debian 的su
似乎它使用后者。当然,您的系统可能会有所不同。
进一步阅读:
答案3
我发现su
在输入错误密码期间杀死的最佳方法是Control+U后跟Control+ D。这应该可以避免令人烦恼的延迟。您也可以使用Control+清除输入U,然后重新尝试输入密码。
Control+U是一个清除当前文本行的命令,并且也可以在 shell 中工作(也可能在其他地方)。它似乎可以用来su
清除当前输入的密码,这也很好。
使用Control+C似乎不起作用,似乎由于某种原因su
忽略了它。由于 setuid 的原因,启动该进程的用户无法再杀死它是不正确的——如果您使用另一个终端或从另一个终端(作为启动它的用户)su
杀死它,那么它就会完全消失。不起作用,所以可能只是忽略它。SIGTERM
SIGQUIT
SIGINT
su
Control+D用空密码输入似乎是唯一的方法即刻Kill a running su
- 如果输入任何文本,则按Control+D将导致 3 秒的延迟(除非您实际上输入了正确的密码,在这种情况下......它将启动 root shell)。