web-dev-qa-db-ja.com

なぜss -eがuidを表示しないのですか?

私は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 <->

どうすればこれを解決できますか?

3

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

4
A.B