루트가 아닌 사용자가 실행 중입니다.이 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