2017-09-06 5 views
0
내가 sudo는하지 않고 eth0를 ifup을하고 eth0를 ifdown을 실행하려는

를 사용하여실행 ifup을하고 sudo를 ifdown을 리눅스 capabilitiesFor에게 내가 같은 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 열지 못했습니다 : 권한이

거부를

은 사람이 나를 도와 드릴까요 ?

답변

0

기능은 생각하는대로 작동하지 않습니다. 이 파일은 실행 파일에 첨부되며 새 파일을 실행할 때 다시 설정됩니다.

실행 파일에는 인터페이스 상태를 변경하는 데 필요한 권한이 있지만 popen이 수행하는 외부 프로그램을 실행하지 않는 권한이있을 수 있습니다.

나는 그 중 하나를 좋아하지 않지만 그게 그 방법입니다.

원하는 것을하기위한 프로그램을 이미 작성했다면 uid를 설정할 수도 있습니다. 그것은 예상대로 작동 할 것입니다.