gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:32:23 25 4
gpt4 key购买 nike

目前我正试图弄清楚 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 文件系统上时我才能更改上下文,但图像在 fuse 文件系统下。但是当我将图像放入 ext4 格式的分区时,更改那里的上下文(这确实有效)并将其放回原始目录,旧的上下文又回来了。

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

编辑:

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

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

提前致谢,非常感谢您的努力!

最佳答案

首先通过运行禁用selinux:

setenforce 0

那么你的 cmd 可能会成功。

关于java - 在 Android 上更改文件的 SELinux 上下文无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42682348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com