1
loading 2019-02-19 08:15:06 +08:00
除非 B 应用牺牲存储性能,做了二次加密。
|
2
fan123199 2019-02-19 08:23:05 +08:00 1
1,不可以,除非 b 把数据存在公共区域。
2,没听过 shelter,搜了下,好像是沙箱 app,但理论上也是不可以。 3,本来就不行 |
3
codingadog 2019-02-19 08:26:16 +08:00 via Android
1 )不可以
2 )可以 3 )向你安利一下 storage redirect |
4
fan123199 2019-02-19 08:26:31 +08:00
其实这个不规范,很多是 CSDN 造成的。(手动 doge,玩笑话)。上面的内容比较陈旧,大家开发时直接 xopy 过来,能运行就行。哪管你什么权限、隐私、目录结构等。
|
5
codingadog 2019-02-19 08:27:14 +08:00 via Android
2 我不清楚,蒙的🤣
|
6
greenskinmonster 2019-02-19 08:31:37 +08:00
3,root 后用存储重定向。
其实很多应用可以用 App Ops 忽略读 /写存储的权限,这样就不会向公共区域读写文件。大多数应用忽略存储权限后,也能正常运行。 |
7
TomVista 2019-02-19 08:33:14 +08:00
"不需要存储权限即可运行".
我想问一下,从开发角度,应用不需要存储权限即可运行吗? 我开发移动端用的 hbuilder,最小权限中有存储权限. |
8
codingadog 2019-02-19 08:34:25 +08:00 via Android 1
@TomVista 不然 Android 的应用缓存是干什么用的呢
|
9
TomVista 2019-02-19 08:41:42 +08:00
|
10
honeycomb 2019-02-19 08:41:46 +08:00 via Android
3,有,rikka 写的 storage redirect,依赖于 magisk
|
11
greenskinmonster 2019-02-19 08:50:31 +08:00 1
|
12
ysc3839 2019-02-19 08:51:23 +08:00 via Android
(1) 和 (2) 严格来说都不行。
Android 有分私有存储空间和共享存储空间 (这两个词可能不是官方的称呼,仅仅是我自己的称呼)。 私有存储空间是每个应用单独分开的,其中的数据在正常情况下只有应用自身才能访问,其他应用要访问的话必须要 root 才行,在这里读写数据不需要用户授权。 共享存储空间不单独分开,不过其中 ./Android/data/包名 / 的目录下可以看作是为应用单独划分的空间,在这里读写数据也不需要授权。读写其他地方则需要授权,而且能读写这块“单独划分”的空间。 所以实际上 (1) 和 (2) 能不能实现还要看应用如何设计的,如果把数据全都放在共享存储空间中那是能被授权了的程序读取的。 (3) 可以使用 存储重定向 https://play.google.com/store/apps/details?id=moe.shizuku.redirectstorage |
13
pk000 OP @ysc3839
共享存储空间不单独分开,不过其中 ./Android/data/包名 / 的目录下可以看作是为应用单独划分的空间,在这里读写数据也不需要授权。读写其他地方则需要授权,而且能读写这块“单独划分”的空间。 这个是不是说,应用 A 有存储授权的情况下,可以读取./Android/data/B 包名 /内应用 B 的数据? |
14
TomVista 2019-02-19 09:16:28 +08:00
@ysc3839 问一下,在 /data 下的应用私有路径无法被其他应用申请访问,那么在 /sdcard/android 目录下的应用私有路径可以被申请权限访问吗?
|
15
yukiww233 2019-02-19 09:25:50 +08:00 1
|
16
qwlhappy 2019-02-19 10:01:18 +08:00
#2 说得对。
存储权限对应的是 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 吧...是不是加个外部就不会有理解上的问题了。正常情况下安卓会保护各个应用独立的沙箱环境的 |
17
skylancer 2019-02-19 10:10:26 +08:00
上面说(1)不可以的怕是忘了科恩强奸支付宝那单事情
|
18
skylancer 2019-02-19 10:11:33 +08:00
不过 /data/data/[package]是不可能访问的,只是能访问 /data/media/xxx/(/sdcard)的数据而已
|
19
catalina 2019-02-19 10:20:19 +08:00 7
补充一下:
(以下内容以 Android6 以后为例,前期版本可能没有多用户功能*、或者 /sdcard/干脆就是闪存上直接分出来一块) 对应用来说,Android 有两个存储空间: 一个是用户公共存储空间(/data/media/$user_id/,映射为 /storage/emulated/$user_id/和该应用所在用户的 /sdcard),下称公共空间; 一个是用户私有存储空间(/data/user/user_id/$package_name/)。 (以上,$user_id 为用户的用户 id,机主为 0,Work Profile 一般为 10,部分系统自带的双开应用功能也会使用其他的用户 id 保存数据,$package_name 为应用的包名。) (!!!切记!用户 id 与 Linux/android 系统的 uid 不同!!!) 应用使用私有空间存储数据不需要任何权限,应用使用公共存储空间前需要向系统申请权限(读取需要 android.permission.READ_EXTERNAL_STORAGE,写入需要 android.permission.WRITE_EXTERNAL_STORAGE )。 写在公共存储空间中的任何数据都可以被其它申请了公共空间读权限的应用访问到!!! 使用 su 提权获得 root 权限的应用可以获得对 /(根目录)的读写权限,同时执行 mount -o remount,rw /system 可以重新挂载 /system 以获取读写权限,因此对于获得了 root 权限的应用,数据隔离机制不起作用。(虽然实验发现,即使获得了 root 权限,这些应用还是在规规矩矩地申请公共存储权限。) 在系统启动的情况下,用户可管理的数据,只有公共存储空间这么一部分。 因此,情况如下*3: 假设:A 申请了公共空间读写权限,B 没有申请,C 申请了公共读写和 root 权限。A、B、C 安装在同一个用户下。 访问者 A 的公有数据 A 的私有数据 B 的私有数据 A rw- rwx --- B --- --- rwx C rw- rwx rwx (注:r 读,w 写,x 执行,公有空间以 noexec 参数挂载,所以无法执行任何程序) 假设:A、B 均申请了公共空间读写权限。无应用申请 root 权限。A、C 安装在同一个用户下。 访问者 A 的公有数据 A 的私有数据 B 的公有数据 B 的私有数据 A rw- rwx rw- --- B rw- --- rw- rwx 假设:A 申请了公共空间读写权限,B 没有申请,C 申请了公共读写和 root 权限,D 申请了公共读写权限。A、B 安装在同一个用户(假设为机主)下,C、D 安装在 Work Profile 内。 访问者 A 公 A 私 B 私 C 公 C 私 D 公 D 私 A rw- rwx --- --- --- --- --- B --- --- rwx --- --- --- --- C rw-*4 rwx rwx rw- rwx rw- rwx D --- --- --- rw- --- rw- rwx 注解: * 需要注意的是,设置里面没有多用户功能,不意味着没有!!!如果你的系统能使用 Work Profile*2,那么你的系统就有多用户功能 *2 Shelter、Island 均为 Work Profile 的具体应用,在 Island 内=在 Work Profile 内 *3 访问权限根据“应用的能力”,即通过回答一系列“什么应用想干什么能成功?”来得出结论 *4 C 对机主用户的公共空间的读写通过对 /data/media/0 的访问进行 @honeycomb 并不,storage 的 basic mode 使用 magisksu 或者 supersu 都可运行,虽然高级功能需要 magisk 模块 Riru 支持。 ** 我尽力了,但排版还是不太好看 |
20
catalina 2019-02-19 10:34:54 +08:00
我去,v2 把我的排版彻底毁了!
|
21
zcm3579 2019-02-19 10:52:27 +08:00
然而 B 应用按照储存规范把数据存在 sdcard/Android/data/包名 里面, 但还是能被获取了存储权限的应用访问读取 , 这点才是最骚的
|
24
skylancer 2019-02-19 12:02:55 +08:00
@catalina 规规矩矩申请是很正常的,因为你当前进程上下文不能直接提升至 root,直接用 root 来处理比你乖乖申请权限其实要麻烦的多
|
26
catalina 2019-02-19 14:42:41 +08:00 via Android 1
@honeycomb
呃。。。我的这个版本是出去后用 ApkPure 下载的。至于版本号。。。太长,直接看截图吧。。。 https://imgchr.com/i/kgmR0g https://imgchr.com/i/kgmW7Q 还有,为啥这么厉害,可以问 @RikkaW @skylancer 好的,谢谢告知。 |