type=1400 audit(22.153:84): avc: denied { getattr } for comm="Binder:435_3" path="/sys/devices/platform/fdd40000.i2c/i2c-0/0-0020/rk808-rtc/rtc/rtc1/hctosys" dev="sysfs" ino=27990 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1在android11源码哪个文件提取出来的
时间: 2024-02-02 15:05:22 浏览: 267
这是一个 SEAndroid 的 AVC(Access Vector Cache)日志,记录了一个进程尝试访问一个文件时被 SELinux 策略拒绝的情况。在 Android 11 源码中,SEAndroid 策略文件位于 `/system/sepolicy/` 目录下。AVC 日志的提取是通过系统日志(logcat)实现的,可以在源码中的 `/system/core/logd/` 目录下查找相关的代码。具体来说,可以查看 `logcatd` 的实现,该程序会将日志缓存到内存中,并通过 `liblog` 库将日志写入到设备文件中。`logd` 程序会读取这些设备文件,并将日志发送给其他进程,比如 `logcat`。
相关问题
[ 62.097451] type=1400 audit(1686032696.903:62): avc: denied { map } for comm="network.sh" path="/system/bin/sh" dev="dm-7" ino=720 scontext=u:r:network_sh:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [ 62.097570] type=1400 audit(1686032696.903:62): avc: denied { read } for comm="network.sh" path="/system/bin/sh" dev="dm-7" ino=720 scontext=u:r:network_sh:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [ 62.097709] type=1400 audit(1686032696.903:62): avc: denied { execute } for comm="network.sh" path="/system/bin/sh" dev="dm-7" ino=720 scontext=u:r:network_sh:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [ 62.113304] type=1400 audit(1686032696.935:63): avc: denied { getattr } for comm="network.sh" path="/system/bin/sh" dev="dm-7" ino=720 scontext=u:r:network_sh:s0 tcontext=u:object_r:shell_exec:s0 tclass=file permissive=1 [ 62.143732] type=1400 audit(1686032696.971:64): avc: denied { read } for comm="network.sh" name="ifconfig" dev="dm-7" ino=561 scontext=u:r:network_sh:s0 tcontext=u:object_r:init-ifconfig_exec:s0 tclass=lnk_file permissive=1 [ 62.150395] type=1400 audit(1686032696.971:64): avc: denied { getattr } for comm="network.sh" path="/system/bin/toybox" dev="dm-7" ino=766 scontext=u:r:network_sh:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1 [ 62.150484] type=1400 audit(1686032696.979:65): avc: denied { execute } for comm="network.sh" name="toybox" dev="dm-7" ino=766 scontext=u:r:network_sh:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1 [ 62.150537] type=1400 audit(1686032696.979:66): avc: denied { read open } for comm="network.sh" path="/system/bin/toybox" dev="dm-7" ino=766 scontext=u:r:network_sh:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1 [ 62.150676] type=1400 audit(1686032696.979:66): avc: denied { execute_no_trans } for comm="network.sh" path="/system/bin/toybox" dev="dm-7" ino=766 scontext=u:r:network_sh:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1 [ 62.151933] type=1400 audit(1686032696.979:66): avc: denied { map } for comm="ifconfig" path="/system/bin/toybox" dev="dm-7" ino=766 scontext=u:r:network_sh:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=1 改写avc规则
AVC(Access Vector Cache)规则是安卓系统中的访问控制规则,用于限制应用程序访问敏感资源的能力。修改这些规则需要 root 权限和对 SELinux 的了解。
如果您想尝试修改这些规则,可以按照以下步骤操作:
1. 获取 root 权限,并安装 SELinux policy 工具。
2. 使用 `audit2allow` 工具将 AVC 规则转换为 SELinux policy 规则。例如,对于上面的日志,可以使用以下命令:
```
$ adb shell dmesg | grep -E 'type=1400 audit' | audit2allow -M network_sh
```
这将生成一个名为 `network_sh.pp` 的 SELinux policy 文件。
3. 将 `network_sh.pp` 文件推送到设备上。
```
$ adb push network_sh.pp /data/local/tmp/
```
4. 使用 `semodule` 工具将 SELinux policy 文件加载到系统中。
```
$ adb shell su -c "semodule -i /data/local/tmp/network_sh.pp"
```
这样就可以成功改写 AVC 规则。但是请注意,这可能会导致系统安全性问题,因此请谨慎操作。
type=1400 audit(22.153:82): avc: denied { read } for comm="Binder:435_3" name="hctosys" dev="sysfs" ino=27990 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1
这是一个 AVC(Access Vector Cache)的日志,它描述了一个 SELinux 策略引擎拒绝了一个进程的读取权限。具体来说,这个进程是一个名为 "Binder:435_3" 的组件,正在尝试读取名为 "hctosys" 的文件。该文件位于 "sysfs" 文件系统中,其 Inode 号为 27990。该进程的安全上下文是 "u:r:system_server:s0",而文件的安全上下文是 "u:object_r:sysfs:s0"。最后一个字段表示 SELinux 在执行该策略时是否允许缺少权限的进程继续执行(在这种情况下,它是允许的)。如果你想更深入了解 SELinux 和 AVC,可以查看 Red Hat 的官方文档。
阅读全文