我用来ss -p
查看 TCP 套接字信息。但某些套接字不会打印进程信息。以下:
$ ss -p4
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.146.18.213:50368 199.7.59.72:http
但使用 sudo,我可以看到进程信息:
$ sudo ss -p4
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.146.18.213:50368 199.7.59.72:http users:(("sshd",473,18))
使用netstat -net
,无需root,我可以看到用户:
$ netstat -net
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
tcp 0 0 10.146.18.213:50368 199.7.59.72:80 ESTABLISHED 222 3693189
我的用户 ID 是 222:
$ id -u
222
但 ss 仅显示 root 的进程信息。
我的问题是:
- 为什么存在没有关联用户的套接字?
- 这些没有用户的socket会经过
owner
iptables的模块匹配吗?
答案1
我想说你的“sudo ss”显示与用户 sshd 相关的连接,同时“netstat -net” - 与你自己的用户相关。这就是为什么 netstat 的版本不需要 sudo 来查找有关套接字的详细信息。
您ss -e
也可以用来获取 UID。