SEAndroid를 살펴 봤습니다. 프로세스 도메인이 어떻게 제공되는지 이해하려고 노력해 왔습니다.SEAndroid 프로세스 도메인 지정 방법은 무엇입니까
지금까지 내가 init.rc 파일에서 서비스 선언의 일부에서, 토큰이라고 SECLABEL 있다는 것입니다 무엇을 가지고 :
service adbd /sbin/adbd --root_seclabel=u:r:su:s0
class core
socket adbd stream 660 system system
disabled
seclabel u:r:adbd:s0
나중에 init.c에서 setexeccon에 의해 설정되는 다음과 같이 쓰여진 문맥에 :
if (svc->seclabel) {
if (is_selinux_enabled() > 0 && setexeccon(svc->seclabel) < 0) {
ERROR("cannot setexeccon('%s'): %s\n", svc->seclabel, strerror(errno));
_exit(127);
}
}
위의 예에서 도메인은 적합합니다.
하지만 서비스 선언에 seclabel 토큰이 없으면 어떻게되는지 알 수 없습니다. init.c에서 일어나는 일은 setexeccon을 호출하지 않는다는 것입니다. 부모 도메인을 유지 하시겠습니까?
호출을 : ADB 쉘에서
ps -Z
, 모든 프로세스와 도메인을 보여주고, 그렇지 않으면 보여줍니다.
For example, the servicemanager in init.rc:
class core
user system
group system
critical
onrestart restart healthd
onrestart restart zygote
onrestart restart media
onrestart restart surfaceflinger
onrestart restart drm
하지만 추신 -Z에 전화를 보여줍니다 :
u:r:servicemanager:s0 system 53 1 /system/bin/servicemanager
일 뭐죠?!