gpt4 book ai didi

linux - 使用 Linux 功能通过 sudo 运行 ifup 和 ifdown

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:47 24 4
gpt4 key购买 nike

我想通过使用 Linux 功能在没有 sudo 的情况下运行 ifup eth0 和 ifdown eth0 对于相同的问题,我为相同的 main.c 编写了代码

int main{
FILE ,*fp;
fp = popen("ifdown eth0","r");
if(fp==NULL)
{
printf("popen falied\n")
}
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: failed to open lockfile /run/network/ifstate.eth0: Permission denied

有人可以帮我解决这个问题吗?

最佳答案

能力并不像您认为的那样发挥作用。它们附加到可执行文件,并在您执行新文件时重置。

您的可执行文件可能具有更改界面状态所需的权限,但没有运行执行此操作的外部程序所需的权限,而 popen 就是这样做的。

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

如果您已经编写了一个程序来执行您想要的操作,您不妨继续并在其上设置 uid。这将按预期工作。

关于linux - 使用 Linux 功能通过 sudo 运行 ifup 和 ifdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46067026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com