nftables 以非 root 用户身份读取计数器

nftables 以非 root 用户身份读取计数器

我已经使用 nftables 设置了一些防火墙规则。它们包括一些我想要监控的流量类型的数据计数器。

现在,我希望能够让应用程序读取这些计数器,最好使用,以非 root 用户身份运行。但是,初步测试nft表明我无法以非 root 用户身份读取 nftables 计数器。

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

有没有办法以非 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运行成功。

但是,它还允许执行其他操作,例如更改防火墙规则、添加新计数器或删除现有计数器。

相关内容