nftables 以非 root 使用者身分讀取計數器

nftables 以非 root 使用者身分讀取計數器

我使用 nftables 設定了一些防火牆規則。它們包括一些我有興趣監視的某些類型流量的資料計數器。

現在,我希望能夠讓應用程式讀取這些計數器,最好使用libnftnl,以非 root 使用者身分執行。但是,初始測試nft表明我無法以非 root 使用者身分讀取 nftables 計數器。

作為根用戶:

$ 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
             ^^^^^^^^

有沒有辦法以非 root 使用者身分讀取 nftables 計數器?也許如果有一些Linux 功能已設定?

答案1

如果您想要更有限的配置。也許使用 sudo。您可以設定僅允許單一命令的規則。

craig_mcqueen ALL = NOPASSWD:/usr/sbin/nft 清單計數器 my_table my_counter

答案2

看起來 Linux 功能CAP_NET_ADMIN可以讀取計數器。

例如,為非root使用者啟動一個shell,使用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"

從該 shell 中,/usr/sbin/nft list counter my_table my_counter成功運行。

但是,它還允許執行其他操作,例如更改防火牆規則、新增計數器或刪除現有計數器。

相關內容