自分以外のログインしてるユーザを強制ログアウト
サーバにログインした時に、何か動きが重いなど違和感を感じる時があります。
そんなときは他にログインしているユーザが何か悪さをしているかもしれません。wコマンドやwhoコマンドを使うと現在ログインしているユーザが表示されます。
bash
# w
13:16:34 up 134 days, 31 min, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
hacker pts/0 example.com 01 Dec21 38days 0.11s 0.02s sshd: hacker [priv]
taro pts/1 example.com 07Jan22 2.00s 0.21s 0.04s sshd: taro [priv]
今、ユーザはhackerとtaroがsshでログインしています。自分はtaroでログインしていますが、hackerをログアウトさせたい場合はhackerのセッションリーダのプロセスをkillすればログアウトさせることができます。
セッションリーダはhackerがログインした時に起動したシェルです。
bash
# ps -dN|grep pts/0
10920 pts/0 00:00:00 bash
-dはセッションリーダ以外の全プロセスの表示
-Nは条件指定したもの以外を表示
なので-dNはセッションリーダのプロセスを表示
セッションリーダのbashのプロセスは10920ということがわかりました。これをkillします。
bash
# kill -9 10920
# w
13:16:34 up 134 days, 31 min, 1 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
taro pts/1 example.com 07Jan22 2.00s 0.21s 0.04s sshd: taro [priv]
セッションリーダのプロセスをkillすることでhackerユーザが強制ログアウトしていることがwコマンドを打つとわかります。
このようにユーザがログインしている端末以外からでもユーザをログアウトさせることができます。
他にもsshでログインしている場合はsshのプロセスを停止させたり、サーバを再起動することでも強制ログアウトをすることが可能です。
基本的なセキュリティ対策をしていればログインしているユーザは過去にログインした自分自身や自分の知っている人のはずなので勝手にログアウトさせるのはあまり良くないかもしれないですね。
長期間ログインしているユーザを自動でログアウトさせたい場合は、シェルの環境変数やsshdの設定を行うことで可能です。