netstat (/proc/net): why is user associated with socket root? how to get user-id of 'remote' process?

ubuntu 16.04

У меня есть 2 узловых приложения, app-1 и app-2, с именами пользователей, совпадающими с именами их приложений, прослушивающих локально (на портах 8001 и 8002, соответственно) на одном и том же экземпляре. Когда app-1 делает запрос к app-2, я могу найти remoteHost сокета, обрабатывающего запрос от app-2. Затем, когда я пытаюсь найти этот remoteHost через netstat и получить некоторую информацию о пользователе/процессе, я обнаруживаю, что пользователь, связанный с сокетом - uid: 0 или root. Я ожидал, что пользователь, связанный с этим соединением, будет app-1, так как это приложение, в котором генерируется запрос. Итак, часть 1 моего вопроса: почему пользователь root, а не app-1?

Часть 2: Моя цель - получить идентификатор пользователя удаленного процесса, основываясь только на информации в remoteHost (например, 127.0.0.1:53900). Мне кажется, что операционная система должна точно знать, какой процесс/идентификатор пользователя использует данную комбинацию хост/порт. Итак, предполагая, что netstat не работает по причинам, указанным в предыдущем абзаце, какие еще системные вызовы или утилиты я могу использовать для получения этой информации?

0
21.03.2017, 05:46
1 ответ

К сожалению, я думаю, что проблема в части 1 заключается в том, что я проверял соединение только после того, как оно уже было закрыто на одной стороне (состояние было время ожидания ). В качестве теста я изменил тип подключения на keep-alive, и теперь информация о пользователе отображается должным образом.

Ответом для части 2 будет чтение тех же файлов, что и netstat (/ proc / net / *), и поиск remoteHost .

0
28.01.2020, 04:47

Теги

Похожие вопросы