使用Linux功能运行IFUP和IFDOWN



我想通过使用Linux功能来运行IFUP ETH0和IFDOWN ETH0,用于与同一问题一起编写的代码。C

int main{
FILE ,*fp;
fp  = popen("ifdown eth0","r");
if(fp==NULL)
{
printf("popen faliedn")
}
pclose(fp);
}

如果我设置了二进制的功能,则如下:

sudo   setcap -v cap_chown,cap_dac_override,cap_fowner,cap_dac_read_search,cap_net_admin+epi main

设置了所有功能,它将通过使用getCap命令

验证
getcap main
main = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_net_admin+eip

如果在代码上方运行,我会得到以下答复:

./main ifDown:无法打开lockfile/run/network/ifstate.eth0: 许可拒绝

有人可以帮助我吗?

功能无法像您认为的那样工作。它们连接到可执行文件,并在执行新文件时重置。

您的可执行文件可能具有更改接口状态的权限,但不能运行这样做的外部程序,这就是Popen的作用。

我也不喜欢它,但就是这样。

如果您已经写了一个程序来完成您想做的事情,那么您也可以继续并在其中设置UID。那将按预期工作。

最新更新