<4>[ 16.709009] .(4)[1:init]pan... do_sys_open() name=/dev/ttyS1 fd=16
<4>[ 16.709826] .(4)[1:init]pan... path_openat() 111
<4>[ 16.710439] .(4)[1:init]pan... link_path_walk() 111
<4>[ 16.710975] .(6)[1484:m.android.phone]pan... path_openat() 111
<4>[ 16.711088] .(4)[1:init]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711477] .(3)[1718:AsyncTask #1]pan... link_path_walk() 111
<4>[ 16.711483] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711486] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711510] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711516] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711518] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711545] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711548] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711550] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711553] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711588] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711591] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711593] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711596] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711598] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711600] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711603] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.711606] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.711608] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.711852] .(6)[1484:m.android.phone]pan... link_path_walk() 111
<4>[ 16.712007] .(3)[1718:AsyncTask #1]pan... path_openat() 111
<4>[ 16.712011] .(3)[1718:AsyncTask #1]pan... link_path_walk() 111
<4>[ 16.712014] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712016] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712020] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712023] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712027] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712030] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712033] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712035] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712037] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712041] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712044] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712046] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712049] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712051] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712055] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712058] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 111, mask=0x81
<4>[ 16.712061] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 222, sid=1401
<4>[ 16.712063] .(3)[1718:AsyncTask #1]pan... selinux_inode_permission() 333, rc=0
<4>[ 16.712139] .(3)[1718:AsyncTask #1]pan... path_openat() 333
<4>[ 16.712388] .(1)[1718:AsyncTask #1]pan... do_sys_open() exit fd=-2
<4>[ 16.712777] .(4)[1:init]pan... tty_open() 111
<4>[ 16.713510] .(4)[1:init]pan... tty_port_open() 111
<4>[ 16.732802] .(4)[1:init]pan... mtk8250_do_pm() irq=287, state=0, old=3
<4>[ 16.762608] .(7)[1:init]pan... mtk8250_startup() state=0, irq=287, iobase=0x0
<14>[ 16.768057] .(7)[1:init]init 18: pan... SecondStageMain() open ok fd=16
<4>[ 16.769044] .(7)[1:init]pan... tty_release() 111
<4>[ 16.769677] .(7)[1:init]pan... tty_port_close_start() 111
<4>[ 16.770402] .(7)[1:init]pan... tty_port_shutdown() 111
<4>[ 16.771090] .(7)[1:init]pan... mtk8250_shutdown() state=2, irq=287
<4>[ 16.771895] .(7)[1:init]pan... serial8250_do_shutdown() 11111
<4>[ 16.771946] .(7)[1:init]pan... serial8250_do_shutdown() 22222
<4>[ 16.772747] .(7)[1:init]pan... serial8250_do_shutdown() 33333
<4>[ 16.773503] .(7)[1:init]pan... mtk8250_do_pm() irq=287, state=3, old=0
<4>[ 16.775138] .(7)[1:init]pan... tty_port_close_end() 111
selinux_inode_permission
原始设备制造商 (OEM) 最好从 AOSP 中的政策入手,然后在这些政策的基础上创建自己的自定义政策。
一般应该不需要直接修改 system/sepolicy 中的文件,而只需添加您自己的设备专用政策文件(位于 /device/manufacturer/device-name/sepolicy 目录中)即可。
要实现 SELinux,您必须创建或修改以下文件:
1.新的 SELinux 政策源代码 (*.te) 文件 - 位于 /device/manufacturer/device-name/sepolicy 目录中。这些文件用于定义域及其标签。在编译到单个 SELinux 内核政策文件时,新的政策文件会与现有的政策文件组合在一起。
> 请勿更改 Android 开放源代码项目提供的 app.te 文件,否则可能会破坏所有第三方应用。
2.更新后的 BoardConfig.mk makefile - 位于包含 sepolicy 子目录的目录中。如果初始实现中没有 sepolicy 子目录,那么在该子目录创建之后,必须更新 BoardConfig.mk makefile,以引用该子目录。
3.file_contexts - 位于 sepolicy 子目录中。该文件用于为文件分配标签,并且可供多种用户空间组件使用。在创建新政策时,请创建或更新该文件,以便为文件分配新标签。
4.genfs_contexts - 位于 sepolicy 子目录中。该文件用于为不支持扩展属性的文件系统(例如,proc 或 vfat)分配标签。此配置会作为内核政策的一部分进行加载,但更改可能对核心内 inode 无效。要全面应用更改,需要重
新启动设备,或卸载后重新装载文件系统。此外,通过使用 context=mount 选项,还可以为装载的特定系统文件(例如 vfat)分配特定标签。
5.property_contexts - 位于 sepolicy 子目录中。该文件用于为 Android 系统属性分配标签,以便控制哪些进程可以设置这些属性。在启动期间,init 进程会读取此配置。
6.service_contexts - 位于 sepolicy 子目录中。该文件用于为 Android Binder 服务分配标签,以便控制哪些进行可以为相应服务添加(注册)和查找(查询)Binder 引用。在启动期间,servicemanager 进程会读取此配置。
7.seapp_contexts - 位于 sepolicy 子目录中。该文件用于为应用进程和 /data/data 目录分配标签。在每次应用启动时,zygote 进程都会读取此配置;在启动期间,installd 会读取此配置。
8.mac_permissions.xml - 位于 sepolicy 子目录中。该文件用于根据应用签名和应用软件包名称(后者可选)为应用分配 seinfo 标记。然后,分配的 seinfo 标记可在 seapp_contexts 文件中用作密钥,以便为带有该 seinfo
标记的所有应用分配特定标签。在启动期间,system_server 会读取此配置。
security_inode_permission()函数用于通过挂载到LSM的安全策略模块来对文件的访问权限进行检查,以判断某一主体是否可以访问指定的文件,其代码如下所示:
int security_inode_permission(struct inode*inode, int mask)