Действительно, iptables
использует интерфейс netlink для связи с ядром. Он открывает сокет netlink для xtables
, затем выдает команды через этот сокет. Контроль доступа осуществляется при открытии сокета, а не для отдельных команд, поэтому для вывода списка и изменения правил требуются одни и те же разрешения. Единственный способ разрешить пользователю перечислять правила, но не изменять их, — дать ему тщательно -написанный исполняемый файл setuid (или setcap ).
Было бы неплохо, если бы в /proc
был интерфейс к netfilter, но, насколько мне известно, задача его реализации так и не была завершена.