23#ifndef _ANDROID_FILESYSTEM_CONFIG_H_
24#define _ANDROID_FILESYSTEM_CONFIG_H_
32#include <linux/capability.h>
34#include "android_filesystem_capability.h"
43#define AID_SYSTEM 1000
46#define AID_BLUETOOTH 1002
47#define AID_GRAPHICS 1003
50#define AID_CAMERA 1006
52#define AID_COMPASS 1008
56#define AID_INSTALL 1012
59#define AID_SDCARD_RW 1015
61#define AID_KEYSTORE 1017
66#define AID_UNUSED1 1022
67#define AID_MEDIA_RW 1023
69#define AID_UNUSED2 1025
70#define AID_DRMRPC 1026
72#define AID_SDCARD_R 1028
74#define AID_LOOP_RADIO 1030
75#define AID_MEDIA_DRM 1031
76#define AID_PACKAGE_INFO 1032
77#define AID_SDCARD_PICS 1033
78#define AID_SDCARD_AV 1034
79#define AID_SDCARD_ALL 1035
87#define AID_NET_BT_ADMIN 3001
88#define AID_NET_BT 3002
90#define AID_NET_RAW 3004
91#define AID_NET_ADMIN 3005
92#define AID_NET_BW_STATS 3006
93#define AID_NET_BW_ACCT 3007
94#define AID_NET_BT_STACK 3008
97#define AID_NOBODY 9999
101#define AID_ISOLATED_START 99000
102#define AID_ISOLATED_END 99999
104#define AID_USER 100000
106#define AID_SHARED_GID_START 50000
107#define AID_SHARED_GID_END 59999
109#if !defined(EXCLUDE_FS_CONFIG_STRUCTURES)
116 {
"root", AID_ROOT, },
118 {
"system", AID_SYSTEM, },
120 {
"radio", AID_RADIO, },
121 {
"bluetooth", AID_BLUETOOTH, },
122 {
"graphics", AID_GRAPHICS, },
123 {
"input", AID_INPUT, },
124 {
"audio", AID_AUDIO, },
125 {
"camera", AID_CAMERA, },
127 {
"compass", AID_COMPASS, },
128 {
"mount", AID_MOUNT, },
129 {
"wifi", AID_WIFI, },
131 {
"install", AID_INSTALL, },
132 {
"media", AID_MEDIA, },
133 {
"dhcp", AID_DHCP, },
134 {
"sdcard_rw", AID_SDCARD_RW, },
136 {
"keystore", AID_KEYSTORE, },
139 {
"mdnsr", AID_MDNSR, },
142 {
"media_rw", AID_MEDIA_RW, },
145 {
"drmrpc", AID_DRMRPC, },
147 {
"sdcard_r", AID_SDCARD_R, },
148 {
"clat", AID_CLAT, },
149 {
"loop_radio", AID_LOOP_RADIO, },
150 {
"mediadrm", AID_MEDIA_DRM, },
151 {
"package_info", AID_PACKAGE_INFO, },
152 {
"sdcard_pics", AID_SDCARD_PICS, },
153 {
"sdcard_av", AID_SDCARD_AV, },
154 {
"sdcard_all", AID_SDCARD_ALL, },
156 {
"shell", AID_SHELL, },
157 {
"cache", AID_CACHE, },
158 {
"diag", AID_DIAG, },
160 {
"net_bt_admin", AID_NET_BT_ADMIN, },
161 {
"net_bt", AID_NET_BT, },
162 {
"inet", AID_INET, },
163 {
"net_raw", AID_NET_RAW, },
164 {
"net_admin", AID_NET_ADMIN, },
165 {
"net_bw_stats", AID_NET_BW_STATS, },
166 {
"net_bw_acct", AID_NET_BW_ACCT, },
167 {
"net_bt_stack", AID_NET_BT_STACK, },
169 {
"misc", AID_MISC, },
170 {
"nobody", AID_NOBODY, },
173#define android_id_count \
174 (sizeof(android_ids) / sizeof(android_ids[0]))
180 uint64_t capabilities;
191 { 00770, AID_SYSTEM, AID_CACHE, 0,
"cache" },
192 { 00771, AID_SYSTEM, AID_SYSTEM, 0,
"data/app" },
193 { 00771, AID_SYSTEM, AID_SYSTEM, 0,
"data/app-private" },
194 { 00771, AID_SYSTEM, AID_SYSTEM, 0,
"data/dalvik-cache" },
195 { 00771, AID_SYSTEM, AID_SYSTEM, 0,
"data/data" },
196 { 00771, AID_SHELL, AID_SHELL, 0,
"data/local/tmp" },
197 { 00771, AID_SHELL, AID_SHELL, 0,
"data/local" },
198 { 01771, AID_SYSTEM, AID_MISC, 0,
"data/misc" },
199 { 00770, AID_DHCP, AID_DHCP, 0,
"data/misc/dhcp" },
200 { 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0,
"data/media" },
201 { 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0,
"data/media/Music" },
202 { 00771, AID_SYSTEM, AID_SYSTEM, 0,
"data" },
203 { 00750, AID_ROOT, AID_SHELL, 0,
"sbin" },
204 { 00755, AID_ROOT, AID_SHELL, 0,
"system/bin" },
205 { 00755, AID_ROOT, AID_SHELL, 0,
"system/vendor" },
206 { 00755, AID_ROOT, AID_SHELL, 0,
"system/xbin" },
207 { 00755, AID_ROOT, AID_ROOT, 0,
"system/etc/ppp" },
208 { 00755, AID_ROOT, AID_SHELL, 0,
"vendor" },
209 { 00777, AID_ROOT, AID_ROOT, 0,
"sdcard" },
210 { 00755, AID_ROOT, AID_ROOT, 0, 0 },
220 { 00440, AID_ROOT, AID_SHELL, 0,
"system/etc/init.goldfish.rc" },
221 { 00550, AID_ROOT, AID_SHELL, 0,
"system/etc/init.goldfish.sh" },
222 { 00440, AID_ROOT, AID_SHELL, 0,
"system/etc/init.trout.rc" },
223 { 00550, AID_ROOT, AID_SHELL, 0,
"system/etc/init.ril" },
224 { 00550, AID_ROOT, AID_SHELL, 0,
"system/etc/init.testmenu" },
225 { 00550, AID_DHCP, AID_SHELL, 0,
"system/etc/dhcpcd/dhcpcd-run-hooks" },
226 { 00444, AID_RADIO, AID_AUDIO, 0,
"system/etc/AudioPara4.csv" },
227 { 00555, AID_ROOT, AID_ROOT, 0,
"system/etc/ppp/*" },
228 { 00555, AID_ROOT, AID_ROOT, 0,
"system/etc/rc.*" },
229 { 00644, AID_SYSTEM, AID_SYSTEM, 0,
"data/app/*" },
230 { 00644, AID_MEDIA_RW, AID_MEDIA_RW, 0,
"data/media/*" },
231 { 00644, AID_SYSTEM, AID_SYSTEM, 0,
"data/app-private/*" },
232 { 00644, AID_APP, AID_APP, 0,
"data/data/*" },
233 { 00755, AID_ROOT, AID_ROOT, 0,
"system/bin/ping" },
237 { 02750, AID_ROOT, AID_INET, 0,
"system/bin/netcfg" },
241 { 06755, AID_ROOT, AID_ROOT, 0,
"system/xbin/su" },
242 { 06755, AID_ROOT, AID_ROOT, 0,
"system/xbin/librank" },
243 { 06755, AID_ROOT, AID_ROOT, 0,
"system/xbin/procrank" },
244 { 06755, AID_ROOT, AID_ROOT, 0,
"system/xbin/procmem" },
245 { 06755, AID_ROOT, AID_ROOT, 0,
"system/xbin/tcpdump" },
246 { 04770, AID_ROOT, AID_RADIO, 0,
"system/bin/pppd-ril" },
249 { 00750, AID_ROOT, AID_SHELL, (1 << CAP_SETUID) | (1 << CAP_SETGID),
"system/bin/run-as" },
251 { 00755, AID_ROOT, AID_SHELL, 0,
"system/bin/*" },
252 { 00755, AID_ROOT, AID_ROOT, 0,
"system/lib/valgrind/*" },
253 { 00755, AID_ROOT, AID_SHELL, 0,
"system/xbin/*" },
254 { 00755, AID_ROOT, AID_SHELL, 0,
"system/vendor/bin/*" },
255 { 00755, AID_ROOT, AID_SHELL, 0,
"vendor/bin/*" },
256 { 00750, AID_ROOT, AID_SHELL, 0,
"sbin/*" },
257 { 00755, AID_ROOT, AID_ROOT, 0,
"bin/*" },
258 { 00750, AID_ROOT, AID_SHELL, 0,
"init*" },
259 { 00750, AID_ROOT, AID_SHELL, 0,
"charger*" },
260 { 00750, AID_ROOT, AID_SHELL, 0,
"sbin/fs_mgr" },
261 { 00640, AID_ROOT, AID_SHELL, 0,
"fstab.*" },
262 { 00644, AID_ROOT, AID_ROOT, 0, 0 },
265static inline void fs_config(
const char *path,
int dir,
266 unsigned *uid,
unsigned *gid,
unsigned *mode, uint64_t *capabilities)
271 if (path[0] ==
'/') {
275 pc = dir ? android_dirs : android_files;
277 for(; pc->prefix; pc++){
278 int len = strlen(pc->prefix);
280 if(plen < len)
continue;
281 if(!strncmp(pc->prefix, path, len))
break;
285 if (pc->prefix[len -1] ==
'*') {
286 if(!strncmp(pc->prefix, path, len - 1))
break;
287 }
else if (plen == len){
288 if(!strncmp(pc->prefix, path, len))
break;
293 *mode = (*mode & (~07777)) | pc->mode;
294 *capabilities = pc->capabilities;
297 fprintf(stderr,
"< '%s' '%s' %d %d %o >\n",
298 path, pc->prefix ? pc->prefix :
"", *uid, *gid, *mode);
Definition android_filesystem_config.h:110
Definition android_filesystem_config.h:176