Ubuntu 16.04
2つのノードアプリ、app-1とapp-2があり、ユーザー名がそのアプリ名と一致し、同じインスタンス(それぞれポート8001と8002)でローカルにリッスンします。 app-1 が app-2 にリクエストすると、app-2 のリクエストを処理するソケットの RemoteHost を見つけることができます。その後、netstatを介してこのRemoteHostを検索し、一部のユーザー/プロセス情報を検索しようとすると、ソケットに関連付けられているユーザーがまたはであることがuid: 0
わかりますroot
。私の期待は、この接続に関連するユーザーがapp-1
要求を生成したアプリケーションだからです。だから私の質問の最初の部分は:なぜユーザーでroot
はないのですapp-1
か?
パート2:私の目標は、remoteHost
(127.0.0.1:53900など)の情報だけに基づいてリモートプロセスのユーザーIDを取得することです。 OSは、どのプロセス/ユーザーIDがそのホスト/ポートの組み合わせを使用しているかを正確に知る必要があるようです。したがってnetstat
、これがうまくいかないと仮定すると、前の段落で述べた理由でこの情報を取得するために他のシステムコールまたはユーティリティを見ることができますか?
答え1
恥ずかしいことに、パート1で問題は、time-wait
片側が接続を閉じた後にのみ接続を確認していたということです(状態は)。テストで接続タイプを[接続の維持]に変更しましたが、ユーザー情報が期待どおりに表示されるようになりました。
パート2の答えは、netstat
(/ proc / net / *)と同じファイルを読み取って検索することですremoteHost
。