2

pcap_lookupdev()非 root 用户运行时填充 errbuf 变量,而以 root 用户运行时,相同的函数返回第一个可用网络接口的值。

操作系统或库是否禁用了此访问权限。我认为是操作系统。什么是正确答案?

这不是作业问题

4

3 回答 3

7

一般来说,当涉及到访问操作系统提供的文件、设备和其他服务时,Unix(以及Linux)中的访问模型是在操作系统中实现的。

用户空间程序应该只是尝试他们想做的任何事情,并通过例如用消息通知用户来优雅地处理任何错误情况。

这有几个优点:

  • 可维护性:访问策略实施保留在操作系统中,并且可以统一配置。想要限制对资源的访问的管理员这样做一次,而不是必须在这里配置这个库,而不是那里的那个库,然后......

  • 可配置性:管理员可以配置他们需要的简单或复杂的访问策略,而不受每个用户空间实现的限制。

  • 安全性:通常不应信任用户空间程序来执行访问策略。这就像让狼看守羊。

编辑:

在您的情况下,pcap需要对网络接口进行低级访问。由于安全隐患(捕获网络流量、生成任意网络数据包等),此类访问仅限于特权用户。例如,在 Linux 上,pcap需要用户可以使用该功能CAP_NET_RAW

于 2011-02-03T12:11:10.757 回答
0

许多 pcap 函数需要 root 权限才能正常工作。这可能是问题吗?

于 2011-02-03T12:11:05.193 回答
0

它主要取决于操作系统。并非所有pcap功能在所有操作系统上都需要 root 权限。

请参阅参考手册页,分别列出所有特殊权限要求。

于 2020-03-17T01:47:14.520 回答