在没有root特权的情况下更改Linux中的网络设置

3bd*_*lla 3 c linux privileges network-programming root

我正在谈论的设置是IP,子网掩码和默认网关(设置和获取)。为了设置所有这些设置,我使用了该ioctl函数以及诸如SIOCSIFADDR和等选项SIOCSIFNETMASK。为了获得IP和掩码,我使用相同的方法,但具有类似的选项SIOCGIFADDR。为了获得默认网关,我解析了文件/proc/net/route并读取了接口的相应默认网关地址。

这整个过程非常完美,但是具有root特权。有什么方法可以在不授予root用户的情况下更改这些设置?这是我无法解决的要求。像这样的问题来更改所有权可以通过将代码放在单独的可执行文件中并将该可执行文件的所有权更改为root,然后从主应用程序调用它来解决问题。

我只想知道是否可以在不授予该应用程序根访问权限的情况下更改此类设置。

ras*_*usm 5

我知道两种方法:

  1. 使用sudo运行ifconfig并以root身份进行路由。可以将Sudo设置为无需密码即可使用,并且仅适用于某些程序。

  2. 使用功能,请参见答案:非根进程是否可以绑定到Linux上的“特权”端口?并使用由cap_net_bind_service安装的CAP_NET_ADMIN。

  • 您提供的问题的接受答案中的“ = + ep”是什么? (2认同)