如何从密码提示中输入CTRL ^ C?


8

假设我启动了一个su命令,并且想取消它。 Control+ C不能susudo... 那样工作。我必须完成提示(通过输入错误次数足够多的密码或正确输入密码)。

我可以输入一些内容来杀死密码提示吗?



@DisplayName您无法像使用sudo一样将su控制c-这是另一种情况。
问号

答案是Control-D。
DisplayName

@DisplayName是的,请参见Gilles的答案。我的观点是,不应将此标记为重复...
Questionmark

它是重复的。我链接的帖子的答案也说是control-D。
DisplayName 2016年

Answers:


5

su正在以提升的特权运行,并且您没有看到它响应^C(它会以您的特权发送信号)。您可以 su转到另一个外壳,然后从另一个外壳中将其杀死。同样(取决于系统),SIGHUP如果您关闭su正在进行尴尬的终端会话,它可能会响应(挂断信号)。

有多种方法su可以忽略您的^C,例如,

  • 建立信号处理程序或
  • 在另一个控制终端下运行。

快速阅读Debiansu似乎使用了后者。您的系统当然可能有所不同。

进一步阅读:


如果我su以常规用户身份执行,并且正在等待用户输入密码,那么此时是否“以提升的特权运行”?
techraf

1
是的:您可以通过在ps -ef另一个终端上进行操作来亲自查看。这su是自动发生的,因为设置为root
Thomas Dickey

7

您可以CTRL-D su提示。
该快捷方式在控制台上发出文件结束信号,退出提示。控制台将显示Authentication error,这是可以预期的。


3
Control-D将是EOF(QUIT是另一回事,通常会被捕获)。但是是的,EOF可以工作。
Thomas Dickey

2

我发现最好杀的方式su输入的密码不正确的过程中,Control+ U后跟Control+ D。这应该避免烦人的延迟。您也可以使用Control+ 清除输入,U然后重试输入密码。

Control+ U是清除当前文本行的命令,也可以在外壳程序(可能还有其他地方)中使用。似乎su可以清除当前输入的密码也很不错。

使用Control+ C似乎无效,似乎出于某种原因而su忽略了它。这是不真实的是谁启动该进程的用户无法再杀死它的,因为setuid的- su模具完全没有问题,如果你杀了它SIGTERMSIGQUIT从另一个终端(如启动它的用户)。SIGINT不起作用,所以su可能只是忽略它。

ControlD输入带有空密码的+ 似乎是立即终止运行的唯一方法su-如果输入了任何文本,则按Control+ D会导致3秒钟的延迟(除非您实际输入了正确的密码,在这种情况下。 ..它将启动一个root shell)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.