netstat (/proc/net):为什么用户与套接字根关联?如何获取“远程”进程的用户ID?

netstat (/proc/net):为什么用户与套接字根关联?如何获取“远程”进程的用户ID?

ubuntu 16.04

我有 2 个节点应用程序,app-1 和 app-2,用户名与其应用程序名称匹配,在同一实例上本地监听(分别在端口 8001 和 8002 上)。当 app-1 向 app-2 发出请求时,我可以找到处理来自 app-2 的请求的套接字的 RemoteHost。然后,当我尝试通过 netstat 查找此 RemoteHost 并检索一些用户/进程信息时,我发现与套接字关联的用户是uid: 0root。我的期望是与此连接关联的用户是app-1,因为这是生成请求的应用程序。所以我的问题的第一部分是:为什么是用户root而不是app-1

第 2 部分:我的目标是仅根据remoteHost(例如 127.0.0.1:53900)中的信息获取远程进程的用户 id。在我看来,操作系统应该确切地知道哪个进程/用户 ID 正在使用该主机/端口组合。因此,假设netstat行不通,由于上一段中提到的原因,我可以查看哪些其他系统调用或实用程序来获取此信息?

答案1

令人尴尬的是,我认为第 1 部分中的问题是我只是在一侧已关闭连接(状态为time-wait)后才检查连接。作为测试,我将连接类型更改为保持活动状态,现在用户信息按预期显示。

第 2 部分的答案将是读取与netstat(/proc/net/*) 相同的文件并搜索remoteHost.

相关内容