LINUX配置ipv6地址时出现ifconfig: SIOCSIFADDR: Permission denied

LINUX配置ipv6地址时出现ifconfig: SIOCSIFADDR: Permission denied

问题描述

在做ipv6的开发中,需要在代码中修改桥端口(br0)的ipv6本地链路地址,思路是先将原来的地址删除,再添加新的地址,如下图中,要将地址改成fe80::100/64,则需要先删除原来的地址:
ifconfig br0 del fe80::1/64
ifconfig br0 del ffe80::e267:b3ff:fe00:2/64
在这里插入图片描述
再添加地址:
ifconfig br0 del fe80::100/64
但串口提示:fconfig: SIOCSIFADDR: Permission denied
如果不擅长原有地址的情况下添加新的ipv6地址,则不会报错,这是为什么呢?

问题分析

这让人很费解,为什么直接添加不会报错,删掉原来的,再添加就会报错呢,但其实对比之下已经有一些方向了,关键我们敲命令删除的时候系统会做什么操作,重新添加的时候又会做怎么操作

从错误的提示上看是权限不足,但从现象分析这肯定不是因为当前不是root用户导致的,还是得从源码去分析;ipv6内核相关代码可以在linux2.x.x.x/net/ipv6/目录下查找,ifconfig删除ipv6地址时,内核调用如下:
在这里插入图片描述在函数inet6_addr_del中检查该接口是否存在ipv6地址,若不存在则关闭该接口的ipv6功能
在这里插入图片描述
而当我们再重新添加ipv6地址时,发生如下调用:
在这里插入图片描述在ipv6_find_idev查到对应的设备文件,若不存在则添加,在ipv6_add_dev中可以初始化相关参数
在这里插入图片描述完了之后在通过函数ipv6_add_addr添加地址,这个时候会报错,查询新增的内核文件:
cat proc/sys/net/ipv6/conf/br0/disable_ipv6
查询结果为 1 ,说明初始化时,默认是把接口的ipv6功能关闭的,导致报错了

在ipv6_add_addr中可以看到有这么一句判断,其中返回值 -EACCES 正是 Permission denied
在这里插入图片描述

解决方案

从上面的分析中,问题已经很明朗了,可自行在应用层或内核修改相关参数即可
提供以下参考,也可在应用层通过echo系统调用修改该参数:
打开ipv6及其转发功能

总结

第一次写博文,写的有误的地方还请指出,喜欢的朋友欢迎关注,评论,留言!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ifconfig: ioctl 8927: Permission denied 是一个错误提示,表明执行ifconfig命令遇到了权限拒绝的问题。在Linux系统中,一些敏感的网络配置命令可能需要root权限才能执行。根据引用和引用的描述,您所遇到的问题可能是由于缺少权限而导致的。 引用中的错误提示"cat: sys/class/net/eth0/address: Permission denied"表明您在尝试读取网络接口eth0的地址被拒绝了权限。引用中的错误提示"ifconfig: SIOCSIFADDR: Permission denied"表明您在尝试配置IPv6地址同样被拒绝了权限。 引用中的错误提示"avc: denied { read } for name=“address” dev=“sysfs” ino=25277 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0"提供了更多关于权限被拒绝的详细信息,这可能与SELinux(Security-Enhanced Linux)策略有关。 要解决这个问题,您可以尝试以下方法: 1. 确保您具有足够的权限来执行ifconfig命令。您可以尝试使用sudo命令以root权限执行该命令,例如:sudo ifconfig。 2. 如果您是系统管理员,请确保您已经正确配置了SELinux策略,以便允许执行ifconfig命令。您可以参考相关文档或咨询系统管理员来进行配置。 3. 如果您不是系统管理员,您可以联系系统管理员或具有root权限的用户来帮助您执行相关配置和命令。 请注意,修改系统配置和执行敏感的网络命令可能会对系统安全产生影响,因此请谨慎操作,并确保您知道自己在做什么。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [AndroidQ(10.0) system app 增加访问 sys/class/ 权限](https://blog.csdn.net/u012932409/article/details/108824659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [LINUX配置ipv6地址出现ifconfig: SIOCSIFADDR: Permission denied](https://blog.csdn.net/liuhaihualy/article/details/101783656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值