Соответствие владельца iptables сбрасывает icmp для GID, но не для UID

У меня странное поведение iptables что я не могу объяснить или понять.

У меня есть пользователь test которая имеет свою основную группу test, Я хочу заблокировать любой доступ к сети от этого пользователя.

Теперь, если я скажу

iptables -A OUTPUT -o eth0 -m owner --uid-owner test -j DROP

и я su test и тогда я получаю следующее:

ping faultserver.ru       # WORKS
nmap -sP faultserver.ru   # fails
wget faultserver.ru       # fails

Однако, если я снова сброслю iptables и скажу:

iptables -A OUTPUT -o eth0 -m owner --gid-owner test -j DROP

(обратите внимание на разницу: gid вместо uid) то получаю следующее

ping faultserver.ru       # fails
nmap -sP faultserver.ru   # fails
wget faultserver.ru       # fails

Итак, как вы можете видеть, правило кажется совпадающим оба раза, но только когда я блокирую основную группу, также блокируется ICMP. Это ошибка или есть какой-то смысл, о котором я не знаю?

Я имею в виду, я мог бы просто заблокировать оба и быть счастливым, но я хочу понять, почему они ведут себя по-разному.

мой iptables версия v1.4.4,

1 ответ

Решение

Генерация icmp требует прямого доступа к сокету, который, в свою очередь, требует корневого доступа. Поэтому Ping запускает suid, поэтому для владельца сокета используется uid root, а не test.

Другие вопросы по тегам