nftables считывает счетчики как не-root пользователь

nftables считывает счетчики как не-root пользователь

Я настроил некоторые правила брандмауэра с помощью 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запускается успешно.

Но он также позволяет выполнять другие действия, такие как изменение правил брандмауэра, добавление новых счетчиков или удаление существующих счетчиков.

Связанный контент