내 C 코드는는 popen은 seteuid로 (0)
seteuid (euid);
popen("/root/bin/iptables ....", "r");
을 수행 후 호출하고 내가 seteuid로 콜 경우에도 실패 할 때 실패 (0). (실행 파일에는 setuid가 설정되어 있습니다).
seteuid와 popen이 함께 작동하지 않는 것 같습니다.
이는 popen이 열려진에 즉
iptables v1.4.6: can't initialize iptables table : Permission denied (you must be root)
이는 popen 다음 MSG를 인쇄 전화했을 때 "성공"하지만, 새로운 쉘이 만들어지기 때문에 권한이 유지되지 않고 유스 케이스가 실패합니다.
어떻게 문제를 해결할 수 있습니까?
무엇이 오류입니까? 어떻게 실패합니까? –
@BasileStarynkevitch가 질문을 편집했습니다. – cateof
seteuid의 리턴 코드를 확인하지 않으므로 ** popen ("/ usr/bin/who am i", "r"); **은 무엇입니까? –