以下の情報を含むDebian仮想マシンがあります。
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
ため、ソケットを使用するプロセスのuidが表示されると予想しましたが、-e
表示されず、理由がわかりません。出力は次のとおりです。
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 <->
この問題をどのように解決できますか?
答え1
これ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の使用ss
とIP ルート 25.6.0)、これは通常のユーザーが実際に所有者の情報を知ることができることを示します。UID独自のソケットではない場合でも、別のソケットです。したがって、項目がないということは、次のuid:
2つの意味のみを意味します。根ユーザーまたはカーネル所有(異なるがここでは区別できない)。
あなたの場合は、SSHDデーモンは次のように実行されます。根、これに関連するすべてのTCPソケットは次のものです。根であってもSSHDルートではなくログイン権限を付与します。ユーザーログインが許可されていますSSHDどのTCPソケットにも接続されていません:次に接続されています。SSHDマスター/スレーブデーモン(または別々のインスタンス)を介してPTYまたは使用管路。したがって、ss
転送を介してローカルにログインしたユーザーとTCP接続を一致させるために使用することはできません。SSH。