Android权限之一APK对文件的访问控制


/data目录权限:

drwxrwx--x system   system            2011-01-03 23:41 data

这种情况下,用ES Explorer查看/data时,目录为空。File("/data")对象的canRead/canWrite方法测试,不可读不可写文件存在。

说明默认情况下APK的gid中没有system。

/system目录权限:

drwxr-xr-x root     root              2011-03-05 19:23 system

这种情况下,ES Explorer可以进入到/system目录,File("/system")对象的canRead/canWrite方法测试,可读不可写文件存在。

说明默认情况下APK的gid中有root。

对于一个目录来说,假如该目录的权限设置对于APK来说不可读不可写,用File("")对象的canRead/canWrite方法测试,不可读不可写文件存在。

试验了一下午,总结一下:

1、普通APK运行时,属性root组,但不属性system组。

2、对于父目录a没有读写权限但子目录a/b有读写权限的的情况,直接使用File("a/b")方式可以对a/b目录进行读写。

这一点儿对一些特殊场合下的APK比较有意义。比如一个系统的内置程序有一些加密信息需要放在本地,但又不能让其它程序和用户能访问到。就可以对系统做一下定制,在/data下面建立一个someone文件夹,权限为777.因为/data本身是700,所以第三方程序是无法访问到这个目录底下的任何东西的。但对于我们的这个特殊APK来说,通过File("/data/someone")这种方式是可以访问到,并且可读可写的。

3、上面试验中没有提到的一点,我在一个APK中使用ProcessBuilder启动一个本地进程时,本地进程和这个APK具有相同的UID和GID。

4、Android系统中所有查看用户ID相关的命令都被删除了。所以,上面都是猜的。

相关内容