selinux(案例) recovery删除data目录下的文件
来源:互联网 发布:centos 7 iso文件太大 编辑:程序博客网 时间:2024/06/03 23:40
在recover升级的时候,我们有个需要从服务器上下载升级包,然后放在data/download,这部分工作是放在一个systemapp中完成的。
然后重启进入recoveyr模式,在recovery升级完之后,我们需要在recovery中删除这个文件,这部分是在recovery中完成。
功能很简单,但是在android6.0上碰到selinux的问题。
我们先来看recovery.te中是不允许recovery操作data下面的目录,也就是下面这个neverallow原则
# Recovery should never touch /data.## In particular, if /data is encrypted, it is not accessible# to recovery anyway.## For now, we only enforce write/execute restrictions, as domain.te# contains a number of read-only rules that apply to all# domains, including recovery.## TODO: tighten this up further.neverallow recovery data_file_type:file { no_w_file_perms no_x_file_perms };neverallow recovery data_file_type:dir no_w_dir_perms;我们再来看下system_data_file在file_contexts.te中的定义
/data(/.*)?u:object_r:system_data_file:s0
而在file.te定义了system_data_file文件属于data_file_type类型,因此recovery也是不能操作data下面的文件
./file.te:56:type system_data_file, file_type, data_file_type;
在我们可以自己定义自己的file类型,我们可以定义data/download属于download_data_file类型
/data/download(/.*)? u:object_r:download_data_file:s0
然后在file.te中定义download_data_file类型, 注意是只属于file_type类型的。
type download_data_file, file_type;然后在recovery.te中增加对download_data_file的权限
allow recovery download_data_file:dir { write search remove_name };allow recovery download_data_file:file { read getattr unlink };
另外我们还需在一个systemapp中先下载升级包,所以需要在system_app.te中增加对如下权限:
allow system_app download_data_file:dir { search write add_name getattr remove_name };allow system_app download_data_file:file { create read write open getattr unlink };
但是最后还是失败了,为什么呢,因为一开始没有data/download这个目录,而是我们再app中自己下载的时候创建的目录,所以是system_data_file类型的。那么我们就需要在一开始就有data/download目录,所以在init.rc中添加如下代码:
mkdir /data/download 0771 system system
最后我们还需要在uncrypt.te中增加如下,因为data目录有可能需要进行加密处理。
allow uncrypt download_data_file:dir { search getattr };allow uncrypt download_data_file:file { getattr read open };
最后这个问题就解决了。
1 0
- selinux(案例) recovery删除data目录下的文件
- selinux(案例) recovery删除data目录下的文件
- Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除
- 删除目录下的文件
- 读写data目录下的文件
- adb如何获取手机data/data目录下的文件
- adb如何获取手机data/data目录下的文件
- 如何使用DDMS读取data/data目录下的文件
- Linux下如何删除/data的空目录
- JavaIO之删除指定目录(递归删除,先删除目录下的文件再删除目录)
- CentOS下彻底删除SELinux的方法
- 删除一个目录下的文件
- 粉碎删除目录下的文件:
- 删除指定目录下的文件
- 删除所有目录下的文件
- iOS删除doucments目录下的文件
- java删除目录下的文件失败
- 删除一个目录下的所有文件
- 简单的邮件开发2--Java
- android AIDL 小结
- Android的材料设计兼容库(Design Support Library)
- 软件测试实习0624-testNG异常测试
- android View 的关键生命周期
- selinux(案例) recovery删除data目录下的文件
- 文章标题 Linux下如何重启nginx
- 九大基础排序总结与对比
- php单例模式连接数据库--代码实现
- PAT 1053. 住房空置率 (20)
- 在非UI线程中处理Bitmap
- 依赖倒置 控制反转 依赖注入 (2)
- 强制关机等导致:remounting file system read-only
- 引用类型和基本类型区别