如何将良性用户踢出系统?

如何将良性用户踢出系统?

我之前在谷歌上搜索了一下,注意到了几种方法,但我猜谷歌并不知道全部。那么怎么办将用户踢出你的 Linux 机器?另外,您如何首先看到他们已登录?以及相关...如果用户登录到 X11 DE(不是我只是好奇的要求),您的方法是否有效?

答案1

可能有一个更简单的方法,但我这样做:

  1. 查看谁登录了您的计算机 - 使用whow

    > who  
    mmrozek  tty1         Aug 17 10:03  
    mmrozek  pts/3        Aug 17 10:09 (:pts/2:S.0)
    
  2. 查找其 TTY 连接到的 shell 的进程 ID:

    > ps t  
    PID   TTY      STAT   TIME COMMAND  
    30737 pts/3    Ss     0:00 zsh
    
  3. 嘲笑他们即将断开的连接(此步骤是可选的,但鼓励)

    > echo "HAHAHAHAHAHAHAHA" | write mmrozek pts/3
    
  4. 杀掉对应的进程:

    > kill -9 30737
    

who我刚刚发现你可以通过给出标志来结合步骤 1 和 2 -u; PID 是右边的数字:

> who -u
mmrozek  tty1         Aug 17 10:03 09:01        9250
mmrozek  pts/18       Aug 17 10:09 01:46       19467 (:pts/2:S.0)

答案2

正如 Micheal 已经指出的,您可以用来who找出谁登录了。但是,如果他们有多个进程,有一个比单独终止每个进程更方便的方法:您可以用来killall -u username终止该用户的所有进程。

答案3

死灵术!

我很欣赏所接受答案的幽默,但从专业角度来说我不能提倡它。

我所知道的最优雅的方法是将 -HUP 发送到 shell 来模拟用户挂起。您可以将其发送到用户的空闲 sshd 以模拟其连接丢失,这会触发整个 shell 环境(包括子 shell)的清理,或者将其发送到特定的嵌套 shell(例如,在断开连接的终端多路复用器内设置的 shell)如果你想真正精确的话,会阻止你卸载文件系统。

用于write在启动之前向终端空闲的 pty 发送消息虽然是一个有趣的爱好。

答案4

其他有用的命令在pkill这里pkill -u username && pkill -9 -u usernamekillall缺点是在 Solaris IIRC 上它意味着完全不同的东西 - 也pkill有稍微更高级的选项。

相关内容