我正在尝试为我的Android创建一些易失性(TMPFS)存储,以避免杂乱。
我正在尝试遵循上一个问题:
制作手动安装的分区文件夹写入可访问所有应用
和
如何用正确的权限绑定内部/ sdcard中的文件夹?
我正在做的方式是通过将"init脚本" 添加到Magisk"service.d" 目录中:
# cat /sbin/.magisk/img/.core/service.d/001-tmpfs.sh #!/system/bin/sh while [ "$(getprop sys.boot_completed)" != 1 ]; do sleep 1 done su -mm -c mount -v none -t tmpfs -o size=4g,nosuid,nodev,noexec,noatime,context=u:object_r:sdcardfs:s0,uid=0,gid=9997,mode=0777 /mnt/runtime/write/emulated/0/Download/tmpfs-cleared-on-reboot
似乎是简单的,简单,只在意义上工作,该文件夹已成功安装,并且重新启动后文件消失,如果通过root复制那里。但普通的应用程序无法复制任何内容。例如,FX Explorer说"访问被拒绝。"
它确实有效,如果我设置 setenforce 0
,似乎指示有一个selinux问题。
DMESG中的唯一相关错误如下所示:
[ 3181.763111] [20200731_13:36:57.002188]@1 type=1400 audit(1596173815.897:12245): avc: denied { create } for pid=5870 comm="Thread-139" name=233339202D5370656E63657220477265656E62657267206F6E20696E7472696E7369632076732E20696E737472756D656E74616C2076616C7565732C206F766572636F6E666964656E63652C20616E6420686F7720746F2061637475616C6C79207570646174652062656C6965667320696D70726F76656420617564696F2E6D7033 scontext=u:r:untrusted_app:s0:c104,c256,c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file permissive=0
如果我尝试将某个文件复制到此目录中会出现。
ls -lahZ /mnt/runtime/write/emulated/0/Download/
给出
drwxrwxrwx 2 root everybody u:object_r:sdcardfs:s0 40 2020-07-31 13:25 tmpfs-cleared-on-reboot
ls -larhtZ /storage/emulated/0/Download/
drwxrwxrwx 2 root everybody u:object_r:sdcardfs:s0 40 2020-07-31 13:25 tmpfs-cleared-on-reboot
是奇怪的,因为目录中的其他文件具有这样的权限:
drwxrwx--x 2 root sdcard_rw u:object_r:sdcardfs:s0 4.0K 2020-07-30 20:04 pdfs-scientific_papers-toread
该组是不同的。我不确定这是否相关或不相关。
但是,无论如何,我无法将任何东西复制到该目录中作为普通应用程序。
我可以像root那里复制填充物,它会随着预期的重启而消失。但权限在哪里?
这是Android 9 OnePlus 5T。