学校で自分の仮想マシンにリモートでログインする人が何人かを計算する必要があります。誰かがホストコンピュータからSSHに接続しているかどうかはわかりますが、誰かがVNCを介してXWindowsセッションにTelnetで接続しているのか、学校のコンソールに座っているのかはわかりません。自宅で学校のVMにログインし、who操作を実行するときに自分だけにログインすると、次のようになります。
user1 tty7 2013-10-10 23:31 (:1)
user1 pts/0 2013-10-10 23:23 (:1.0)
注:誰も仮想マシンに直接ログインできません。学校のLANにログインし、VMホストにログインしてVMにログインする必要があります。仮想マシンのホストマシンにログインする必要があるかどうかを知りたいです。これはリモートログインと見なされますか?
ベストアンサー1
WHO
これを達成するには、いくつかの方法を使用する必要があります。このwho
コマンドを使用すると、誰がアクティブシェルを持っているのか、仮想ssh
マシンに入ったのかを確認できます。
$ who | cut -d' ' -f1 | sort -u
saml
ユーザー
user
このコマンドを使用して、誰がログインしているかを確認することもできます。これらは、現在の/var/run/utmp
ログファイル&にアクティブとしてマークされているユーザーです/var/log/wtmp
。
$ users | sed 's/ /\n/g'|sort -u
saml
誰がまた訪れたのか
このコマンドを使用すると、who
次の行を表示できます。
$ 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)
2番目の列(tty1)は、物理端末の1つにローカルに接続されている人を表します。また、行の5番目の列に(`:0)が表示されていることがわかります。これは、誰かが仮想マシンに直接座ってXデスクトップを実行していることを意味します。
他の行はpts/0
擬似端末であり、通常はボックスにgnome-terminalまたはSSHからタブを作成したときに生成されます。
仮想ネットワーク接続?
これは少しトリッキーです。特にVNCサーバーがXに統合されているため、これを直接知る方法はありません。検索プロセスには何も表示されません。
$ pgrep -f vnc
$
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
ここでは、IP 192.168.1.3では通常VNCで使用されるポート5900へのVNC接続があることがわかりますが、このポートは決して保証されません。
接続が切断されると、接続は次のようになります。
$ 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
また、XサーバーがVNCを実行していることを確認することもできます(そのように見えます)。
$ lsof -p 3948 | grep -i vnc
Xorg 3948 root mem REG 253,0 394420 48693751 /usr/lib/xorg/modules/extensions/libvnc.so
VNCユーザーのための最善の選択肢は、コンピュータ上のユーザー(tty1などの物理端末のユーザー)、つまりXデスクトップを実行してVNCを使用して接続するGNOMEセッションを持つ人を削除することです。
$ 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