You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Arch Linux中为用户授予读取原始数据包的权限?

普通用户运行原始套接字程序的解决方案

针对你在Arch Linux上的需求,无需以root身份运行创建PF_PACKET原始套接字的程序,有两种可行方法:

方法一:使用Linux Capabilities(推荐)

这是最安全的方式,给程序单独授予所需权限,不会全局放开:

  1. 先编译好你的C程序,假设生成的可执行文件名为packet_reader
  2. 执行以下命令给程序添加权限:
    sudo setcap cap_net_raw,cap_net_admin+eip /path/to/packet_reader
    
    • cap_net_raw:允许创建原始套接字(包括PF_PACKET类型)
    • cap_net_admin:处理部分网络接口操作(比如绑定特定网卡)时需要
    • +eip:让程序继承这些权限并生效
  3. 现在普通用户直接运行./packet_reader即可,无需前缀sudo

注意:如果之后移动了程序的位置,需要重新执行上述setcap命令,因为权限是绑定到文件路径的。

方法二:全局开放原始套接字权限(不推荐)

这种方式会让所有普通用户都能创建原始套接字,存在安全风险,仅用于测试场景:

  1. 临时生效(重启后失效):
    sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"
    
  2. 永久生效:编辑/etc/sysctl.d/99-sysctl.conf文件,添加一行:
    net.ipv4.ping_group_range = 0 2147483647
    
    然后执行sudo sysctl --system加载配置

内容的提问来源于stack exchange,提问作者Alex Flint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:04:54