C 프로그램이 IP를 루트가 아닌 사용자로 설정하도록 허용

C 프로그램이 IP를 루트가 아닌 사용자로 설정하도록 허용

루트가 아닌 사용자가 실행 중입니다.이 C 프로그램 - 다음과 연결됨IP 주소, 넷마스크를 설정하고 인터페이스를 설정해야 하며 다음을 반환합니다.SIOCSIFFLAGS: Permission denied

루트로 로그인하여 루트가 아닌 사용자가 IP를 설정하는 이 프로그램을 실행하도록 허용할 수 있는 방법이 있습니까?

답변1

적어도 Linux에서는 다음을 사용할 수 있습니다.능력프로그램이 마치 루트 권한이 있는 것처럼 제한된 작업 집합을 수행할 수 있도록 합니다.

관련 기능은 다음과 같습니다.

CAP_NET_ADMIN
    Perform various network-related operations:
    * interface configuration;
    * administration of IP firewall, masquerading, and accounting;
    [...]

다음 명령을 사용하여 기능을 설정할 수 있습니다 setcap.

setcap cap_net_admin+ep /path/to/my_ifconfig

물론 또 다른 옵션은 setuid root( chmod u+s) 프로그램을 사용하는 것입니다. 이를 통해 다음을 수행할 수 있습니다.아무것루트는 그것을 할 수 있습니다. 이는 분명히 더 위험하지만 Linux뿐만 아니라 다른 시스템에서도 작동해야 합니다.

netadmins그룹의 구성원 만 파일을 실행할 수 있도록 허용하는 등 일반적인 파일 권한 비트를 사용하여 추가 권한으로 파일을 실행할 수 있는 사용자를 제한할 수 있습니다 .

chown root.netadmins /path/to/my_ifconfig
chmod 0710 /path/to/my_ifconfig

관련 정보