perl스크립트 setuid 동작 방식에 대해서 질문합니다~

vamf12의 이미지

간단하게 다음과 같은 코드를 만들고 setuid, setgid를 줬습니다.

$cat ./aa.pl
#!/usr/bin/perl
system("id");

근데 이걸 실행시키는데...

$sudo /usr/bin/perl ./aa.pl
uid=0(root) gid=0(root)

$sudo sh -c "./aa.pl"
uid=0(root) gid=0(root) euid=100(vamf12) egid=100(oz2k)

두개의 결과가 다릅니다. -_-?

즉 쉘을 통해서 실행시키면 setuid가 되는데, 펄을 직접 호출하면 않되는 군요...

가능하면 펄에서 스크립트를 직접 호출 하고 싶은데, 방법이 없을까요?