2014-11-10 4 views
2

Я смотрел 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); 
    } 
} 

В приведенном выше примере домен будет adbd.

Но я не смог найти, что происходит, когда в декларации сервиса нет токена маркировки. Вещь, которая происходит в init.c, заключается в том, что она не будет вызывать setexeccon, значение .. сохранить домен родителей?

Вызов:

ps -Z 

в AdB оболочки, которая показывает все процессы, и их домены, показывает иное.

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 

Что происходит ?!

ответ

4

Хорошо, я посмотрел на код и, наконец, получил ответ!

Файл:/внешний/sepolicy/seapp_contexts найдено на корневой файловой системы в андроид изображения включает в себя следующее содержание:

isSystemServer=true domain=system_server 
user=system domain=system_app type=system_app_data_file 
user=bluetooth domain=bluetooth type=bluetooth_data_file 
user=nfc domain=nfc type=nfc_data_file 
user=radio domain=radio type=radio_data_file 
user=shared_relro domain=shared_relro 
user=shell domain=shell type=shell_data_file 
user=_isolated domain=isolated_app levelFrom=user 
user=_app seinfo=platform domain=platform_app type=app_data_file levelFrom=user 
user=_app domain=untrusted_app type=app_data_file levelFrom=user 

Это определяет параметры безопасности (выходы) для каждого процесса в соответствии с некоторыми входами , Мы можем увидеть в этом примере в первой строке:

Если его сервер системы, его домен будет system_server

Или в последней строке:

_app Ключевое слово клетей для каждого приложения, которое не имеет связанного с ним правила. Таким образом, по умолчанию домен приложений будет untrusted_app, а файлы, принадлежащие ему, будут app_data_file.

Дополнительная документация по синтаксису файла находится внутри файла.

Смежные вопросы