![](/img/trans.png)
[英]Run python as root using cap_sys_admin capability linux
[英]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.