本章关键点总结 & 说明:
说明:思维导图是基于之前文章不断迭代的,本章内容我们关注➕android SELinux 部分即可
init中SELinux的源码分析,Android平台中,SEAndroid的初始化由进程的祖先init的main函数完成,相关代码如下所示:
int main(int argc, char **argv)
{
...
//说明:init中对SElinux的控制主要依赖于使用了libselinux库(android的SEAndroid库)
//向SELinux设置两个回调函数,主要是打印log
union selinux_callback cb;
cb.func_log = log_callback;
selinux_set_callback(SELINUX_CB_LOG, cb);
cb.func_audit = audit_callback;
selinux_set_callback(SELINUX_CB_AUDIT, cb);
selinux_initialize(); //SELinux初始化
//restore context:就是根据XXX_contexts中的内容给一些目录做labeling{打SELinux标签}。
restorecon("/dev");
restorecon("/dev/socket");
restorecon(&#