我尝试过这个:
pkill -KILL -u root
事实证明这不是我想要的。现在我无法通过 SSH 登录。
正确的方法是什么?
编辑 - 我在问题中添加了“安全”一词。我知道你不应该踢出 root 用户,因为他们可能正在做一些重要的事情。但假设该用户是一家大型托管公司的客户服务代理,只要他们登录到您的机器,就会向您收取每分钟约 5 美元的费用。假设您告诉他们问题已解决,他们可以立即注销并停止向您收费,但他们假装没有收到您的电子邮件,因为您的老板已经批准了两个小时的工作,他们想收取 100% 的费用。假设您不是普通的没有灵魂的公司奴隶,您想为老板省点钱。所以无论如何,我把他们踢出去了。我做错了,但没有造成任何伤害,我学到了一些东西,我为老板节省了至少 100 美元。
答案1
踢出使用 root 访问权限的人是一件危险的事情,谁知道他们正在做什么,如果他们突然发现自己断开连接,系统将处于什么状态。
最好不要允许人们使用 root 权限,除非绝对必要,否则常规使用 root 权限会导致(正如您所发现的)发生事故,其中一些事故需要的不仅仅是简单的重启才能解决。
如果您需要以 root 身份登录的用户注销,请与他们交谈并要求他们这样做。如果您没有语音,请尝试使用电话或电子邮件。
不要因为想让 root 用户注销而去终止他们进程,因为这可能会导致糟糕的结果。
答案2
您终止了所有由 root 拥有的进程。这意味着,您终止了以 root 为所有者启动的多个服务。
要踢出以 root 身份登录的用户,您可以终止他的终端会话 (tty/pty)。
查看ps -ef | grep -e 'pts\|tty'
并找出您的用户登录的终端,
然后使用类似skill -KILL pts/0
答案3
[root@sgeorge-ld ~]# w | grep root
sgeorge pts/7 :0.0 23:17 0.00s 0.11s 0.01s ssh root@localh
root pts/10 sgeorge-ld.linke 23:21 2:22 0.09s 0.09s -bash
root pts/11 sgeorge-ld.linke 23:21 0.00s 0.15s 0.00s w
[root@sgeorge-ld ~]# ps -ef | grep 'pts/11'
root 17313 17275 0 23:21 ? 00:00:00 sshd: root@pts/11
root 17317 17313 0 23:21 pts/11 00:00:00 -bash
root 17439 17317 1 23:24 pts/11 00:00:00 ps -ef
root 17440 17317 0 23:24 pts/11 00:00:00 grep pts/11
[root@sgeorge-ld ~]# ps -ef | grep 'pts/10'
root 17283 17275 0 23:21 ? 00:00:00 sshd: root@pts/10
root 17286 17283 0 23:21 pts/10 00:00:00 -bash
root 17443 17317 0 23:24 pts/11 00:00:00 grep pts/10
这样你就能找到 pid 号了。如果你真的想杀掉它,就直接杀掉那个 pid 号。
使用tty
命令您可以找出当前终端的名称。