2013-07-30 2 views
0

В Linux, можно фильтровать пакеты, происходящими на локальных на основе пользователя или группы, создавшие их, то есть кому принадлежит сокет:Узнайте, какой пользователь создал локальное соединение входящего TCP внутри приложения

iptables ... -m owner --uid-owner $USER --gid-owner $GROUP -p tcp ... 

Но Я хочу подойти к нему с с точки зрения программы, работающей на локальном хосте и написанной на C, , получая пакеты: я привязан к некоторому порту и здесь появляются новые TCP-соединения/UDP-пакеты. Как узнать, кто послал это?

ответ

1

Вы не можете. Вы получаете удаленный IP-адрес и порт. Вот и все.

1

Странный вариант использования, но эй, возможно, что-то подобное может работать - но это AINT довольно:

  1. Получить номер индексного дескриптора для ФД возвращаемый accept использованием fstat.
  2. Прочитано /proc/self/net/tcp
  3. Разбор и поиск строки, соответствующей номеру inode.
  4. Используйте uid этой строки.
+0

Мне нужен GID, но в этом перечислены только UID. «О да, мы в костях». Как насчет того, что, по-видимому, все, что делают дети? – user2632999

+0

Я предполагаю, что вы сможете найти его, используя 'getpwuid'. – Jahaja

 Смежные вопросы

  • Нет связанных вопросов^_^