如何安装允许读取和写入任何应用程序的TMPFS目录? (root可用) -- storage 领域 和 permissions 领域 和 mount 领域 和 magisk 领域 和 selinux 领域 android 相关 的问题

How to mount a tmpfs directory that would be allowed to be read and written to by any app? (root available)


简体版||繁體版
1
vote

问题

中文

我正在尝试为我的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。

english

I am trying to create some volatile (tmpfs) storage for my Android, to avoid clutter.

I am trying to follow the previous questions:

making manually mounted partition folders write accessible to all apps

and

How to bind mount a folder inside /sdcard with correct permissions?

The way I am doing is by adding an "init script" into a magisk "service.d" directory:

# 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  

Seems plain and simple, only doesn't work in the sense that the folder is mounted successfully, and files disappear after a reboot, if copied there by root. But an ordinary app cannot copy anything there. FX Explorer, for example, says "Access was denied."

It does work though if I set setenforce 0, which seems to indicate that there is a SELinux problem.

The only relevant error in dmesg looks the following:

[ 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 

It appears if I try to copy some file into this directory.

ls -lahZ /mnt/runtime/write/emulated/0/Download/ gives

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 

Which is strange, because the other files in the directory have permissions like this:

drwxrwx--x   2 root sdcard_rw u:object_r:sdcardfs:s0 4.0K 2020-07-30 20:04 pdfs-scientific_papers-toread 

the group is different. I am not sure whether this is related or not.

But anyway, I cannot copy anything into this directory as a normal app.

I can copy stuff there as root, and it disappears on reboot, as expected. But where is the permissions problem?

This is Android 9 on OnePlus 5t.

              
         
         

回答列表


相关问题

0  SELinux政策从许可才能执行  ( Selinux policy from permissive to enforcing ) 
使用Nexus 5与AoSpexted ROM(Android 9)19/04/05 默认情况下,rom将selinux策略设置为允许而不是强制执行。 是否有任何方式,也许使用TWRP恢复,更改SELInux策略来实施?也许是一个类似的Android 9 Rom 一些应用程序,例如Google Pay,如果手...

1  将SELinux模式设置为永久允许  ( Set selinux mode to permissive permanently ) 
我的三星galaxy note s2(gt-n7102)运行股票4.3 jellybean默认阻止谷歌(由中国政府提供的礼貌)的所有应用程序。我遵循一个教程,可以访问依赖于Selinux的GAPPS设置为允许的GAPP,但模式更改了重启,我可以获得一个连续的弹出流,说: 不幸的是,com.google.gapps已...

3  如何修复Android 5上的文件权限,以便某个应用程序可以访问某些文件?  ( How to fix file permissions on android 5 so that a certain app can access certai ) 
背景:我有一个rooted nexus 4与Android 4.4.4工作良好。然后我收到了更新到Android 5的通知。到目前为止,我从谷歌开始浏览股票恢复4.4.4并开始升级(但我没有彻底手机,也许这是一个错误)。升级过程本身顺利进行。升级后,我重新闪烁了TWRP 2.8.2并重新扎根于Supersu 2.36...

2  Selinux如何保护Android从根生根  ( How selinux protects android from rooting ) 
我知道rooting rooting何时执行脚本,我们使用已root的 thing ,并告诉它,如果它以root执行脚本,然后ronoto the to to the手机,那么selinux如何帮助防止它 示例我利用内核以作为root执行的脚本它将在已有root的内核域中执行,因此它将将脚本身份执行root,并为ro...

0  验证设备完整性。 Galaxy Tab S2 9.7“  ( Verifying device integrity galaxy tab s2 9 7 ) 
我想root我的星系标签s2 9.7"lte(sm-t815y),我花了更好的一部分完成以下操作。(我之前从未扎根了任何东西) 从某些网站获得了自动启动的IMG,并通过Odin闪烁。 odin应用程序显示成功,但是在屏幕顶部的屏幕顶部的红色文本拒绝启动徽标 RECOVERY NOT SEANDROID ENFOR...

1  LS -LA在adb shell中的结果  ( Result of ls la in adb shell ) 
如果我进入我的大型手机的adb shell(三星Galaxy S7 Android 8)我得到了类似的结果: dr-xr-xr-x 921 root root 0 2020-01-26 10:06 acct -rw-r--r-- 1 root root 225 1970-0...

3  无法重新汇编/系统作为RW,因为“只读文件系统”(SELinux问题)  ( Cant remount system as rw because read only filesystem selinux problem ) 
你好我试图用Supersu取代kingroot,因为在较新版本的Kingroot你不能阻止它的所有连接,我有一些问题,Supersu始终未能安装较新的二进制文件,Kingroot并没有完全卸载,有时我丢失了root 。 无法安装Supersu,因为它始终无法安装二进制文件,即使是系统应用程序,我都会放弃并决定继续使用...

0  如何根据拒绝“execute_no_trans”创建Android Sepolicy?  ( How to create android sepolicy based on the denial execute no trans ) 
我正在尝试使用以下方法执行我的脚本 /vendor/bin/init.inmod.sh : 脚本 init.inmod.sh : #!/shebang??? /vendor/bin/test_disp hdcp disable 在供应商特定 .rc 文件: on ??? start inmod...

1  在SELinux Enforcing Mode中启动Shell脚本[已关闭]  ( Starting shell script at boot in selinux enforcing mode ) 
关闭。这个问题是 off-topic 。它目前不接受答案。 想要改进这个问题?更新这个问题,所以它是关于android爱好者堆栈交换的主题。 关闭 ...

8  如何更改SELinux在三星Galaxy Note 3上执行允许?  ( How can i change selinux from enforcing to permissive on samsung galaxy note 3 ) 
我的设备是三星Galaxy Note 3 SM-N9005。 此手机附带SELinux设置为默认情况下执行。 我一直在尝试将其更改为宽容,但无济于。 我从Samsung指令之后的源代码中构建了内核,并在Ramdisk中添加了一行到init.rc文件:"setEnforce 0" ,而这效果,但是WiFi破坏了,我并非...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有