更改SELinux Android上文件的上下文无法正常工作

时间:2017-03-08 21:35:36

标签: java android selinux

目前我正在试图弄清楚SELinux在Android上能做什么,我遇到了这个问题。基本上我想看看我是否可以禁止使用相册应用程序访问.jpeg文件。我可以同时获得图像的上下文和专辑应用程序流程的上下文。通过反射,我能够从android.os.SELinux.java调用setFileContext(String path,String context)方法,但它返回false。

所以,我通过adb shell尝试了“chcon”命令,基本上得到了相同的结果。

chcon -v u:object_r:fuse:s1 ./storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg

chcon './storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg' to u:object_r:fuse:s1
chcon: './storage/emulated/0/DCIM/100MEDIA/IMAG0001.jpg' to u:object_r:fuse:s1: 
Operation not supported on transport endpoint

经过一些研究后,我发现只有当文件在ext4文件系统上时才能更改上下文,但图像位于保险丝文件系统下。但是当我将图像放到ext4格式的分区时,更改上下文(确实有效)并将其放回原始目录,旧的上下文又回来了。

有人可以向我解释为什么会这样吗?为什么不能在fuse文件系统下更改上下文,为什么新上下文不能使用上面的方法生存?有解决方案或解决方法吗?

编辑:

所以我发现SELinux上下文是文件的扩展,而fuse文件系统不支持这些。当我尝试获取上下文时,我得到该文件的默认上下文。这个默认上下文是来自列表还是其他文件,或者只有一个默认上下文来自SELinux.java?
编辑结束。

我的测试设备是带有Android 6和root访问权限的HTC M8。

在此先感谢您,我们非常感谢您的努力!

1 个答案:

答案 0 :(得分:1)

首先通过运行禁用selinux:

setenforce 0

那么你的cmd可能会成功。