开发包嗅探器创建AF_PACKET套接字报Operation Not permitted求助
AF_PACKET原始套接字权限报错解决方案
AF_PACKET类型的SOCK_RAW原始套接字用于直接访问链路层数据包,默认内核限制只有具备足够权限的进程才能创建这类套接字,你添加的SOCK_PATH宏定义和该权限限制没有关联,无法解决报错。
解决方法
- 临时测试可直接使用root权限运行编译后的二进制文件,假设编译后的文件名为
packetsniffer,执行命令:
sudo ./packetsniffer
- 无需每次输入sudo的持久化权限配置:给编译后的二进制文件赋予网络操作相关的capability权限,执行命令:
sudo setcap cap_net_raw,cap_net_admin=eip ./packetsniffer
注意:该权限配置会在每次重新编译二进制文件后失效,需要重新执行上述命令;若二进制文件存放在开启noexec挂载参数的分区(如部分临时目录、共享目录),该配置会不生效,需将文件转移到普通可执行分区再操作。
代码问题修正
你当前提供的代码存在两处语法错误,需要先修正才能正常编译:
printf("Hello World!")末尾缺少分号,修改为printf("Hello World!");return 0末尾缺少分号,修改为return 0;
内容的提问来源于stack exchange,提问作者Lyra Orwell
相关产品推荐
相关产品推荐

