android setuid()
NDK를 이용해 setuid를 실행해보면 당연히 그냥은 안된다.
권한을 변경해주어야한다.
http://en.wikipedia.org/wiki/Setuid
아래는 테스트 코드
실행파일을 넣고
접속한다.
권한을 변경하고, 실행해보자
안된다.
구글링 확인해보니 실행위치에도 관계가 있다. root권한으로 /system을 remount한다음
해서 복사한 다음 권한과 소유권을 변경하면 정상적으로 동작한다.
권한을 변경해주어야한다.
http://en.wikipedia.org/wiki/Setuid
아래는 테스트 코드
int main(int argc,char *argv[]){ int id = 999; printf("hello world\n"); id = getuid(); printf("getuid(): %d , euid: %d \n",id, geteuid()); setuid(0); setgid(0); id=getuid(); printf("getuid() after setuid(): %d , euid: %d \n",id, geteuid()); return 0; }위 코드를 NDK로 컴파일하고 디바이스에 넣고 실행해보자.
실행파일을 넣고
adb push hello /data/local/tmp
접속한다.
adb shell
권한을 변경하고, 실행해보자
# cd /data/local/tmp # su # chmod 6755 hello # exit # ./hello hello world getuid(): 2000 , euid: 2000 getuid() after setuid(): 2000 , euid: 2000 #
안된다.
구글링 확인해보니 실행위치에도 관계가 있다. root권한으로 /system을 remount한다음
cat /data/local/tmp/hello > /system/xbin/hello
해서 복사한 다음 권한과 소유권을 변경하면 정상적으로 동작한다.
댓글
댓글 쓰기