1. 文件(夹)读写权限
init.rc 中建立test1 test2 test3 文件夹
mkdir /data/misc/test1 0770 root root
mkdir /data/misc/test2 0770 wifi wifi
mkdir /data/misc/test3 0770 system misc
其中
test1 目录的owner是root, group 也是root
test2 目录的owner是wifi , group 也是wifi
test3 目录的owner是system , group 是misc (任何用户都属于group misc)
service xxxx /system/bin/xxxx
user root
disabled
oneshot
service yyyy /system/bin/yyyy
user system
disabled
oneshot
service zzzz /system/bin/zzzz
user wifi
disabled
oneshot
结果:
xxxx 服务可以访问 test1, test2, test3
yyyy 服务可以访问 test3
zzzz 服务可以访问 test2, test3
Android 中mkdir 的定义
2. Property 权限
Android Property 也是有权限的。
2.1 以前缀 ctl. 开头的控制属性, 设置前,Android 代码会调用函数check_control_perms()检查调用者的 user id 和 group id
2.2 其它属性, 设置前,Android 代码会调用函数check_perms()检查调用者的 user id 和 group id
check_perms(msg.name, cr.uid, cr.gid)
从代码中可以看到, 任何不以property_perms[] 中定义的前缀开头的property 是
无法被除root以外的用户访问的,包括system用户。
3. 最后补充Android 的uid gid 定义
可见root (AID_ROOT = 0) 的权限最高, app (AID_APP = 10000) 权限最低, misc (AID_MISC = 9998) 权限倒数第三低。
所以#1 中描述的目录test3的group 属性设置成了 misc, 则除了 app/nobody 这两个用户,
android系统中其它所有用户都有该目录的group权限!