在一个有根的Android6.0.1设备上,我希望用户可以写一个tmpfs。我知道:
mkdir /sdcard/test
su
mount -t tmpfs -o size=512m tmpfs /sdcard/test
#Note that the permissions of /sdcard/test have changed
chmod 0771 /sdcard/test
chown root:sdcard_rw /sdcard/test
exit
touch /sdcard/test/aa登载报告:
tmpfs /storage/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0但我明白:
touch: '/sdcard/test/aa': Permission denied因此,我不能作为标准用户(通过shell或应用程序)写入/sdcard/test。我做错了什么?我还尝试在/data/中创建挂载,这也是同样的问题。
编辑1:
我在Android4.4设备上试过了,它已经开始工作了。所以,有些东西已经改变了,并且被限制在一个更晚的版本上。我想知道5.x是否也受到了影响。
编辑2:
奇怪的是,挂载报告了两次安装点:
tmpfs /mnt/runtime/default/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0
tmpfs /storage/emulated/0/test tmpfs rw,seclabel,relatime,size=524288k 0 0编辑3:
当我以用户身份进行文件触摸时,内核报告如下:
[54484.588865] type=1400 audit(1452975001.917:150): avc: denied { write } for pid=30781 comm="touch" name="/" dev="tmpfs" ino=398770 scontext=u:r:shell:s0 tcontext=u:object_r:tmpfs:s0 tclass=dir permissive=0发布于 2016-01-17 01:34:01
"su -c setenforce 0“解决了这个问题。请参阅https://source.android.com/security/selinux/validate.html
https://stackoverflow.com/questions/34780093
复制相似问题