簡體   English   中英

使用Linux功能使用sudo運行ifup和ifdown

[英]Run ifup and ifdown with sudo using linux capability

我想通過使用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:無法打開鎖文件/run/network/ifstate.eth0:權限被拒絕

有人可以幫我嗎?

功能無法像您認為的那樣發揮作用。 它們將附加到可執行文件,並在您執行新文件時將其重置。

您的可執行文件可能具有更改接口狀態所需的權限,但沒有運行外部接口所需的權限,而popen正是這樣做的。

我也不喜歡,但這就是事實。

如果您已經編寫了執行所需操作的程序,則不妨繼續並在其上設置uid。 這將按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM