다음에서 이어지는 글 

(ndk-gdb가 잘 동작하지 않는 경우 한가지 - run-as에 문제가 있을때 해결법 (1편))



참고로 아래 절차를 성공적으로 수행하려면 에뮬레이터는 상관없지만 폰은 루팅이 되어 있어야 한다.

전편에서 run-as를 원위치로 넣을때 주의해야 할 점이 있다고 했는데 바로 file permission과 file owner ship이다.
원래 있던 run-as의 속성을 보면 다음과 같이 나타난다.
-rwsr-s--- root     shell       59848 2011-11-20 14:36 run-as

새로 만든 run-as를 위와 똑같이 속성을 맞추기 위해서 다음의 명령어를 실행해야 한다.

# chown 0.2000 run-as
# chmod 6750 run-as

참고사항: file permission에 대해 (다음 링크 참조: http://danielmiessler.com/study/unixlinux_permissions/)




-rwsr-s--- root     shell       59848 2011-11-20 14:36 run-as

참고 링크에서도 나와있지만 setuid가 존재하는 이유를 설명하면 사용자가 어떤 파일을 실행할때 권한이 부족해서 실행할 수 없는 경우가 있다. 사용자의 권한이 낮은 경우에도 불구하고 때때로 특정 작업을 할때 사용자의 권한을 높일 수 있도록 하는 방법을 도입한 것이 setid 항목이다. 의미는 setid의 항목이 1로 enable되어 있는 경우 해당파일(run-as)를 누가 접근하던지 상관없이 소유자의 권한이 주어지게 된다. 예를 들어 위와 같은 경우 uid가 일반 사용자이고 run-as의 소유자가 root로 되어 있다. 이때 s=0으로 되어 있으면 일반 사용자가 root가 소유자인 run-as를 읽으려 하면 권한 부족으로 못 읽지만 s=1로 되어 있으면 가능해진다. 이때 x=1이면 일반 사용자가 실행가능하게 된다.

참고로 s=1이고 x=0이면 문자표현에서는 대문자'S'로 표시되고 일반사용자가 파일을 실행할수 없게 된다.


Posted by kevino
,