quem
Você terá que fazer isso usando algumas abordagens. Você pode usar o comando who
para ver quem tem um shell ativo ou ssh
'em sua VM.
$ who | cut -d' ' -f1 | sort -u
saml
usuários
Você também pode usar o comando user
para ver quem está conectado. Esses são os usuários atualmente exibidos como ativos nos arquivos de log /var/run/utmp
& /var/log/wtmp
.
$ users | sed 's/ /\n/g'|sort -u
saml
quem revisitou
Se você usar o comando who
, observará as seguintes linhas:
$ who
saml tty1 2013-10-06 10:05 (:0)
saml pts/0 2013-10-06 10:07 (:0.0)
saml pts/5 2013-10-07 11:48 (:0.0)
A segunda coluna (tty1) significa que alguém está conectado localmente a um dos terminais físicos. Além disso, você notará que a quinta coluna dessa linha mostra (': 0). Isso significa que alguém está sentado diretamente na VM e está executando a área de trabalho do X.
As outras linhas, como pts/0
, são pseudo-terminais e normalmente são criadas quando você cria guias no gnome-terminal ou ssh na caixa.
VNC?
Este é um pouco mais complicado. Realmente não há uma maneira de saber isso diretamente, especialmente desde que o servidor VNC está integrado no X. Procurando por um processo não mostra nada.
$ pgrep -f vnc
$
Você pode procurar por conexões de rede VNC:
$ sudo netstat -anpt | grep -i Xorg
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 192.168.1.3:5900 192.168.1.20:41064 ESTABLISHED 3948/Xorg
tcp 0 0 :::6000 :::* LISTEN 3948/Xorg
Aqui você pode ver que existe uma conexão VNC do IP 192.168.1.3 para a porta 5900, que é normalmente usada para o VNC, mas esta porta não é de forma alguma uma garantia.
Quando a conexão desaparece, as conexões são assim:
$ netstat -anpt | grep -i Xorg
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 :::6000 :::* LISTEN 3948/Xorg
Além disso, podemos descobrir se o servidor X está executando o VNC, o que parece ser.
$ lsof -p 3948 | grep -i vnc
Xorg 3948 root mem REG 253,0 394420 48693751 /usr/lib/xorg/modules/extensions/libvnc.so
Provavelmente, a sua melhor aposta para atingir usuários VNC é eliminar quem está realmente fisicamente na caixa (usuários em terminais físicos como tty1), qualquer um que tenha uma sessão GNOME está executando uma área de trabalho X e provavelmente usando VNC para conectar para isso.
$ ps -f -p $(pgrep -f gnome-session)
UID PID PPID C STIME TTY TIME CMD
root 22240 3943 0 Sep29 ? 00:00:00 /usr/bin/gnome-session
Referências
- o que é pts / 0 e (: 0.0) no linux por tipo quem sou eu
- “Quem” imprime os nomes de usuário duplicados
- O que faz o
who
resultado do comandoroot :0
significa?