私はdebian VMを持っています、ここに情報:
las@Client:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ss -nte
と入力すると、-e
オプションが原因で、ソケットを使用するプロセスのuidが表示されるはずですが、表示されず、理由がわかりません。出力は次のとおりです。
las@Client:~$ ss -nte
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 176 192.168.56.201:22 192.168.56.1:50468 timer:(on,204ms,0) ino:12286 sk:ffff88000e7f3140 <->
どうすればこれを解決できますか?
ss
コマンド(すべてのバージョン)は、uidがゼロでない場合にのみ表示します。これが Debian 8 jessieバージョンのソース です:
_ if (show_details) {
if (s.uid)
printf(" uid:%u", (unsigned)s.uid);
printf(" ino:%u", s.ino);
printf(" sk:%llx", s.sk);
if (opt[0])
printf(" opt:\"%s\"", opt);
}
_
テストif (s.uid)
は、ソケット所有者のuid値が_0
_になるたびに情報を表示しないようにします。
追加のテスト(ただし、カーネル5.6と、iproute25.6.0からの一致するss
を使用)は、通常のユーザーが実際にそれ自体が所有していない場合でも、他のソケットの所有者のuid。したがって、_uid:
_エントリが存在しないことは、rootユーザーが所有するか、またはカーネルが所有する(異なるですが、ここでは区別できません)。
あなたの場合、sshdデーモンがrootとして実行されているので、すべてTCP関連するソケットは、rootが所有します(sshdであっても) はroot以外のログインを許可します。sshdによって許可されたユーザーログインは、どのTCPソケット:マスター/スレーブを介してsshdデーモン(またはその別のインスタンス)に接続されています PTYs =または pipes を使用します。つまり、ss
を使用して、TCP接続を受信ssh。