libpcap函数的root权限要求

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

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

这不是一个家庭作业问题

通常,在访问操作系统提供的文件,设备和其他服务时,在操作系统中实现Unix(以及Linux)中的访问模型。

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

这有几个好处:

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

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

  • 安全性:通常不应该通过强制执行访问策略来信任用户空间程序。 这就像有一只狼守护着绵羊。

编辑:

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

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