android uid
android에서 ps 를 사용하면 uid 정보가 나오게 됩니다.
USER PID PPID VSIZE RSS WCHAN PC NAME root 1 0 23576 800 SyS_epoll_ 0000000000 S /init root 2 0 0 0 kthreadd 0000000000 S kthreadd ... u0_a140 22795 3283 2410844 7096 SyS_epoll_ 0000000000 S com.sec.android.inputmethod:spellcheckerService root 24524 2 0 0 rescuer_th 0000000000 S kbase_event u0_a274 28170 3283 3331968 39244 SyS_epoll_ 0000000000 S com.samsung.android.messaging root 28193 2 0 0 rescuer_th 0000000000 S kbase_event root 28254 2 0 0 rescuer_th 0000000000 S kbase_event u0_a133 28331 3284 2085420 88736 SyS_epoll_ 0000000000 S com.sec.android.app.sbrowser root 28371 2 0 0 rescuer_th 0000000000 S kbase_event u0_i0 28421 3284 2401876 51428 SyS_epoll_ 0000000000 S com.sec.android.app.sbrowser:sandboxed_process0 u0_a185 31540 3284 1973280 33600 SyS_epoll_ 0000000000 S com.kakao.talk
이중에 USER라고 표시되어 있는 부분입니다.
해당 값의 의미는 아래 파일에서 의미를 찾을 수 있습니다.
android_filesystem_config.h
https://android.googlesource.com/platform/system/core/+/master/libcutils/include/private/android_filesystem_config.h
uid가 왜 filesystem과 연관되어 있는지 궁금해 하실 수도 있습니다.
user id는 사용자를 구별하기위한 숫자입니다. 즉 linux, unix계열에서 사용자를 추가할때 uid(숫자)를 사용하게 됩니다. 사용자의 권한으로 만들어지는 파일들도 동일하게 uid(숫자)를 파일시스템에 기록을 해두어야 합니다. (누가 생성했는지 정보) 그러기 위해서는 목록을 관리해야 하는데요. 그 부분이 위파일 입니다.
ls -l을 해주면 아래 정보가 나오며 root , root 이런식으로 나오는데 앞쪽이 user, 뒤의 정보가 group정보가 됩니다.
ls -l total 8216 dr-xr-xr-x 240 root root 0 2017-09-12 06:55 acct lrwxrwxrwx 1 root root 50 1970-01-01 09:00 bugreports -> /data/user_de/0/com.android.shell/files/bugreports drwxrwx--- 8 system cache 4096 2017-09-02 09:57 cache drwxr-xr-x 3 root root 0 1970-01-01 09:00 config drwxrwx--x 3 radio system 4096 2016-10-18 12:16 cpefs lrwxrwxrwx 1 root root 17 1970-01-01 09:00 d -> /sys/kernel/debug
해당값을 숫자로 보기위해서는 ls -n 을 하면 됩니다.
동일한 내용이지만 아래와 같이 나옵니다.
ls -n total 8216 dr-xr-xr-x 240 0 0 0 2017-09-12 06:55 acct lrwxrwxrwx 1 0 0 50 1970-01-01 09:00 bugreports -> /data/user_de/0/com.android.shell/files/bugreports drwxrwx--- 8 1000 2001 4096 2017-09-02 09:57 cache drwxr-xr-x 3 0 0 0 1970-01-01 09:00 config drwxrwx--x 3 1001 1000 4096 2016-10-18 12:16 cpefs lrwxrwxrwx 1 0 0 17 1970-01-01 09:00 d -> /sys/kernel/debug drwxrwx--x 59 1000 1000 4096 2017-09-12 06:55 data -rw-r--r-- 1 0 0 970 1970-01-01 09:00 default.prop
다시 돌아와서 ps 정보를 ps -n으로 보면 아래와 같습니다.
10274 28170 3283 3331968 37472 SyS_epoll_ 0000000000 S com.samsung.android.messaging 0 28193 2 0 0 rescuer_th 0000000000 S kbase_event 0 28254 2 0 0 rescuer_th 0000000000 S kbase_event 10133 28331 3284 2085420 69492 SyS_epoll_ 0000000000 S com.sec.android.app.sbrowser 0 28371 2 0 0 rescuer_th 0000000000 S kbase_event 99000 28421 3284 2400844 34536 SyS_epoll_ 0000000000 S com.sec.android.app.sbrowser:sandboxed_process0 10185 31540 3284 1973300 30236 SyS_epoll_ 0000000000 S com.kakao.talk 0 31617 2 0 0 rescuer_th 0000000000 S kbase_event 1000 31965 3283 1836980 9148 SyS_epoll_ 0000000000 S com.samsung.SMT
정리해 보자면 u0_a133 이런 id를 가졌다고한다면 실제 uid는 10133 이 됩니다.
사용자가 설치한 앱들의 id는 10000부터 시작하기 때문에 그렇습니다.
android_filesystem_config.h 파일내
#define AID_APP 10000 /* TODO: switch users over to AID_APP_START */
#define AID_APP_START 10000 /* first app user */
#define AID_APP_END 19999 /* last app user */
또한 설치된 app의 uid는 설치한 시점에 따라서 단말마다 다를 수 있습니다.
댓글 없음:
댓글 쓰기