SOC: Rk3399, Platform: Android 8.0.
一: 文件不可写,未获取到write属性。
在打印错误log中获取主要信息 denied -->需要获取的权限,name-->需要获取权限的文件,scontext-->需要配置的文件,tcontext-->文件所在路径,tclass-->文件类型。
type=1400 audit(0.0:49): avc: denied { write } for name="dwc3_mode" dev="sysfs" ino=20703 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs_usb0:s0 tclass=file permissive=0
- 分析
- 缺少的权限:{write/read}
- 谁缺少权限:scontext=u:r:system_app:s0
- 哪个文件的权限:tcontext=u:object_r:sysfs_usb0:s0
- 文件的类型:tclass=file
- 解决
- allow system_app sysfs_usb0:file {open read write };
- 公式:allow + scontext + tcontext + “:” + file + permission
SELinux 的三种模式:
- enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了;
- permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
- disabled:关闭,SELinux 并没有实际运作。
模式切换
1)getenforce
得到当前的SELinux值
[root@python bin]# getenforce
Permissive
2)setenforce
更改当前的SELINUX值 ,后面可以跟 enforcing,permissive 或者 1, 0。
[root@python bin]# setenforce permissive
3)sestatus
显示当前的 SELinux的信息