【问题标题】:requirement of root privileges for libpcap functionslibpcap 函数的 root 权限要求
【发布时间】:2011-02-03 11:58:32
【问题描述】:

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

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

这不是作业题

【问题讨论】:

    标签: c libpcap


    【解决方案1】:

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

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

    这有几个优点:

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

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

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

    编辑:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,这正是我的问题。为什么它需要 root 权限?无论如何,我必须说,thkala 已经很好地回答了这个问题
      【解决方案3】:

      这主要取决于操作系统。并非所有pcap 函数在所有操作系统上都需要root 权限。

      参考Reference Manual Pages,分别列出所有特殊权限要求。

      【讨论】:

        猜你喜欢
        • 2020-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        • 2012-07-14
        相关资源
        最近更新 更多