/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相關的指令都被删除了。是以,上面都是猜的。