2011-09-11 7 views
1

그래서 내 Mac에서 프로그램 suid를 만들고 해당 프로그램이/bin/sh에서 exec를 실행하면 셸은 루트가 아니지만 Linux에서 동일한 작업을 수행하면 셸이 루트가됩니다. Mac은 Linux와 동일한 방식으로 권한을 전파하지 않습니까? 아니면 그냥 suid 비트로 진행되는 다른 무언가가 있습니까? 내 이해 루트 권한을 가진 suid 루트와 함께 실행되는 프로그램입니다./bin/sh를 호출하는 루트 셸은 다른 루트 셸을 만들므로/bin/sh에서 exec를 호출하는 suid 루트 프로그램이 루트 셸을 만들지 않아야합니까?Mac OS X에서 권한은 어떻게 전파됩니까?

답변

0

모든 프로세스에는 다중 UID (실제, 유효 및 저장된 UID)가 있습니다. setuid 바이너리를 실행하면 "실제"UID가 아닌 유효한 UID와 저장된 UID에만 영향을 미칩니다. 결과적으로 setuid 바이너리는 실행 된 UID를 "알"며 해당 UID로 돌아갈 수 있습니다. 이 경우 bash 구현 /bin/sh은 실행될 때 자동으로 실제 UID로 되돌아갑니다.

+0

[setuid] (http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man2/setuid.2.html)를 사용하여 실제 UID를 root로 변경할 수 있습니다 실행하기 전에/bin/sh. –