最近,我注意到,当以非 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 编译选项,导致您无法访问统计数据。您应该尝试使用其他内核。