/data目錄權(quán)限:
drwxrwx--x system system 2011-01-03 23:41 data
這種情況下,用ES Explorer查看/data時,目錄為空。File("/data")對象的canRead/canWrite方法測試,不可讀不可寫文件存在。
說明默認(rèn)情況下APK的gid中沒有system。
/system目錄權(quán)限:
drwxr-xr-x root root 2011-03-05 19:23 system
這種情況下,ES Explorer可以進入到/system目錄,File("/system")對象的canRead/canWrite方法測試,可讀不可寫文件存在。
說明默認(rèn)情況下APK的gid中有root。
對于一個目錄來說,假如該目錄的權(quán)限設(shè)置對于APK來說不可讀不可寫,用File("")對象的canRead/canWrite方法測試,不可讀不可寫文件存在。
試驗了一下午,總結(jié)一下:
1、普通APK運行時,屬性root組,但不屬性system組。
2、對于父目錄a沒有讀寫權(quán)限但子目錄a/b有讀寫權(quán)限的的情況,直接使用File("a/b")方式可以對a/b目錄進行讀寫。
這一點兒對一些特殊場合下的APK比較有意義。比如一個系統(tǒng)的內(nèi)置程序有一些加密信息需要放在本地,但又不能讓其它程序和用戶能訪問到。就可以對系統(tǒng)做一下定制,在/data下面建立一個someone文件夾,權(quán)限為777.因為/data本身是700,所以第三方程序是無法訪問到這個目錄底下的任何東西的。但對于我們的這個特殊APK來說,通過File("/data/someone")這種方式是可以訪問到,并且可讀可寫的。
3、上面試驗中沒有提到的一點,我在一個APK中使用ProcessBuilder啟動一個本地進程時,本地進程和這個APK具有相同的UID和GID。
4、Android系統(tǒng)中所有查看用戶ID相關(guān)的命令都被刪除了。所以,上面都是猜的。。。