为什么“cat /proc/net/dev”对于非 root 用户仅显示 0?

为什么“cat /proc/net/dev”对于非 root 用户仅显示 0?

最近,我注意到,当以非 root 用户身份运行我的网络监控脚本时,它什么也没有显示。

我的脚本只是查看/proc/net/dev哪个具有以下权限(444):

-r--r--r--  1 root  root 0 Feb 26 09:31 dev

然而,即使每个人都有读取权限,我注意到非 root 用户也无法获取任何数据

> cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 bond0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
ip6tnl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 tunl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

当我在命令中添加 sudo 时,我得到的结果如下

> sudo cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0: 69684609  360869    0    0    0     0          0    234060 419896366  484740    0    0    0     0       0          0
  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 bond0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
ip6tnl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo: 113595057  801133    0    0    0     0          0         0 113595057  801133    0    0    0     0       0          0
 tunl0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

我感兴趣的是知道为什么 /proc/net/dev 会有这种行为?

顺便说一下,我的服务器使用的是 Debian 8.3(Jessie)。

答案1

正如此链接所述:https://stackoverflow.com/questions/8955724/regular-user-cant-read-proc-net-dev

您的内核可能使用了 grsec 编译选项,导致您无法访问统计数据。您应该尝试使用其他内核。

相关内容