在使用 su 以 root 身份登录时,仅通过单击“X”或使用“ctrl+d”来关闭 shell 是否安全,或者通过键入“exit”来关闭 shell 是否更安全?是否有任何区别(安全方面)或者是相同的并且使用哪种方式并不重要?
答案1
Ctrl-D 或exit
是相同的。
如果使用“X”,窗口管理器将向 shell 发送终止信号。最终得到相同的结果。如果 shell 没有反应,用户通常会收到警告,然后可以强制 shell 结束(等于kill -9 $PID
)。
如果您使用 shell,“X”- 和 exit-方法之间有一个小区别zsh
:如果您有一个后台进程正在运行,exit
/ctrl-D 第一次只会生成一条警告消息“您正在运行作业”,第二次关闭外壳。使用“X”按钮,shell 会立即终止,不会发出任何警告。
答案2
关闭终端仿真器与按不同CTRL + D
(除非huponexit
设置了该选项)。
当您关闭终端(单击“X”)时,终端仿真器会向 shell 发送 SIGHUP。当 bash 收到 SIGHUP 时,它也会向您的所有作业发送 SIGHUP。
CTRL+D
当您使用或logout
或退出终端时exit
,shell 将退出而不向所有作业发送 SIGHUP。这是默认行为,但可以通过设置 bashshopt
设置 来更改huponexit
。
因此,最终,如果您的目标是确保后台没有任何运行,那么单击“X”会更安全。
。
jofel 在评论中提供的信息不正确(抱歉 jofel)。终端模拟器不知道 shell 下正在运行哪些作业,因此无法终止它们。
笔记:
此行为完全依赖于 shell。不同的 shell 完全有可能具有不同的默认行为。
答案3
没有区别。如此之多,当您按 ^D 时,您所做的事情与输入“exit”相同:
$ su -
Password:
# [press ^D]
logout