다른 쉘에서 로그인 한 다른 루트 사용자를 차는 방법?


1

나는 기계에 로그인하여 다음을 입력했습니다.

insite1@POC-Messaging1:/opt/insiteone/log> last -a | grep "logged"
insite1  pts/6        Tue Jul 30 03:59   still logged in    160.110.5.210
root     pts/5        Tue Jul 30 02:28   still logged in    160.110.154.231
root     pts/4        Tue Jul 30 02:26   still logged in    160.110.154.231
root     pts/0        Tue Jul 30 02:18   still logged in    160.110.5.210
root     pts/3        Tue Jul 30 02:13   still logged in    160.110.5.210
root     pts/2        Tue Jul 30 01:00   still logged in    160.110.154.231
root     pts/1        Tue Jul 30 00:47   still logged in    160.110.154.231

160.110.5.210에서 로그인 한 사용자를 제외하고 다른 사람들을 죽이고 싶습니다. 그렇게하는 방법?

답변:


4

터미널 로그인 세션을 종료하는 가장 깨끗한 방법은 모든 프로세스에 SIGHUP을 보내는 것입니다. "hangup"신호는 터미널 창이나 SSH 연결을 닫을 때에도 전송됩니다.

pkill -HUP -t pts/1

pgrep또는 pkill보다 사용 하기 쉽습니다 ps|grep|grep|grep|grep|grep|grep.

이것을 스크립팅하려면 :

for tty in $(who | awk '$1 == "root" {print $2}'); do
    test $tty = ${thistty=$(tty)} || pkill -HUP -t $tty
done

강제로 사용자를 로그 오프하려면 다음을 실행할 수도 있습니다 killall -9 -u $USER.
Max Ried

2
... 근본을 위해 그렇게하면 정말 나쁜 생각일지도 모른다 ...
Max Ried

3

면책 조항 : 루트 사용자를 쫓아 내면 중요한 복구 작업을 수행하거나 중요한 프로세스를 실행하는 것이 중요합니다.

따라서 모든 세션의 프로세스 ID를 얻을 수 있습니다.

ps aux | grep pts.

그래도 더 나은 출력을 만드는 못생긴 명령은 (데비안에서 나에게)

ps aux | grep sshd | grep pts | grep -v grep

이제 sudo kill 12341234는 PTS 세션의 PID입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.