ruid, euid, suid 질문입니다. saved uid가 반영이 안되네요;
글쓴이: lacovnk / 작성시간: 수, 2005/04/27 - 10:45오전
// b.cc 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 5 int main(int argc, char** argv) 6 { 7 uid_t ruid,euid,suid; 8 (void)getresuid(&ruid,&euid,&suid); 9 printf("program B : RUID(%d) / EUID(%d) / SUID(%d)\n",ruid,euid,suid); 10 fflush(stdout); 11 execv("./c",NULL); 12 return 0; 13 }
// c.cc 1 #include <stdio.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 5 int main(int argc, char** argv) 6 { 7 uid_t ruid,euid,suid; 8 (void)getresuid(&ruid,&euid,&suid); 9 printf("program C : RUID(%d) / EUID(%d) / SUID(%d)\n",ruid,euid,suid); 10 fflush(stdout); 11 return 0; 12 }
// test chown otheruser c && chmod 4755 c ./b program B : RUID(1000) / EUID(1000) / SUID(1000) program C : RUID(1000) / EUID(1006) / SUID(1006) chown root c && chmod 4775 c ./b program B : RUID(1000) / EUID(1000) / SUID(1000) program C : RUID(1000) / EUID(0) / SUID(0)
의도는.. C에서 suid가 B의 euid인 것을 확인해보려고 했는데, 잘 안되네요; system 함수를 사용도 해보고, execv를 사용도 해봤는데.. 어떻게 하면 될까요?
Forums:
댓글 달기