open tty_open seclinux te


<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)

Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制中文件对象管理器分析(3)

tty_ldisc_try函数是一个Linux内核函数,主要用于尝试为给定的tty(终端)设备设置一个新的行规则(line discipline)。行规则是用于解释和处理在tty设备上输入和输出的字符流的一组规则和程序。 函数定义如下: int tty_ldisc_try(struct tty_struct *tty, int disc); 函数参数: - tty:指向tty_struct结构体的指针,表示要设置行规则的tty设备。 - disc:表示要设置的行规则编号。 函数返回值: - 如果行规则设置成功,则返回0。 - 如果设置失败,则返回-EINVAL。 函数功能: 该函数尝试将给定的tty设备的行规则设置为指定的行规则编号。如果设置成功,则返回0;否则返回-EINVAL。如果tty设备已经有一个行规则,则该函数将首先关闭该行规则,然后再尝试设置新的行规则。 注意事项: - 该函数应该在获取tty设备的锁之后调用,以避免并发设置行规则。 - 行规则编号必须是已经注册的行规则之一,否则设置将失败。 - 如果要设置的行规则与当前行规则相同,则该函数将返回成功,而不执行任何操作。 示例代码: 以下示例代码展示了如何使用tty_ldisc_try函数来设置tty设备的行规则: #include <linux/tty.h> struct tty_struct *mytty; int set_ldisc(int disc) { int res; /* 获取tty设备的锁 */ tty_lock(mytty); /* 尝试设置行规则 */ res = tty_ldisc_try(mytty, disc); /* 释放tty设备的锁 */ tty_unlock(mytty); return res; } 在上面的示例代码,set_ldisc函数尝试将全局变量mytty指向的tty设备的行规则设置为指定的行规则编号。函数首先获取tty设备的锁,然后调用tty_ldisc_try函数来尝试设置行规则。最后,函数释放tty设备的锁,并将设置结果返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值