Android tmpfs由用户可写

时间:2016-01-14 01:17:16

标签: android android-shell

在有根的Android 6.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

所以我不能写入/ sdcard / test作为标准用户(通过shell或应用程序)。我究竟做错了什么?我也尝试在/ data /中创建mount,这也是同样的问题。

编辑1:

我尝试使用Android 4.4设备,但它正在运行。因此,某些内容已发生变化,并且在以后的版本中受到限制。我想知道5.x是否也会受到影响。

编辑2:

奇怪的是,mount会两次报告​​挂载点:

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

1 个答案:

答案 0 :(得分:1)

“su -c setenforce 0”解决了这个问题。见https://source.android.com/security/selinux/validate.html