Я настроил некоторые правила брандмауэра с помощью nftables. Они включают некоторые счетчики данных для некоторых типов трафика, которые мне интересно отслеживать.
Теперь я хотел бы иметь возможность считывать показания этих счетчиков с помощью приложения, в идеалеlibnftnl, запущенный как не-root пользователь. Но первоначальное тестирование с помощью nft
показывает, что я не могу читать счетчики nftables как не-root пользователь.
Как root:
$ nft list counter my_table my_counter
table ip my_table {
counter my_counter {
packets 123 bytes 12345
}
}
Как не-root:
$ nft list counter my_table my_counter
Error: No such file or directory
list counter my_table my_counter
^^^^^^^^
Есть ли способ прочитать счетчики nftables как не-root пользователь? Возможно, если некоторыеВозможности Linuxустановлено?
решение1
Если вам нужна более ограниченная конфигурация. Может быть, используйте sudo. Вы можете установить правило, которое разрешает только одну команду.
craig_mcqueen ВСЕ = NOPASSWD: /usr/sbin/nft список счетчик my_table my_counter
решение2
Похоже, возможности Linux CAP_NET_ADMIN
позволяют считывать показания счетчика.
Например, запустите оболочку для пользователя, не являющегося пользователем root, с помощью CAP_NET_ADMIN
:
capsh --caps="cap_net_admin+eip cap_setpcap,cap_setuid,cap_setgid+ep" --keep=1 --user=myuser --addamb=cap_net_admin -- -c "sh"
Из этой оболочки /usr/sbin/nft list counter my_table my_counter
запускается успешно.
Но он также позволяет выполнять другие действия, такие как изменение правил брандмауэра, добавление новых счетчиков или удаление существующих счетчиков.