[RK3288][Android6.0] 系统中UID(用户ID)知识点小结
来源:互联网 发布:人工智能工程师培训 编辑:程序博客网 时间:2024/06/05 23:03
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
概念:
基于Linux中的user id,区别:
- Linux 主要用于权限管理,一个用户创建的都是同一个id
- android 每个应用程序都都创建一个新的uid, 用来表示一个应用程序
定义:
在文件 system/core/include/private/android_filesystem_config.h
#define AID_ROOT 0 /* traditional unix root user */#define AID_SYSTEM 1000 /* system server */#define AID_RADIO 1001 /* telephony subsystem, RIL */#define AID_BLUETOOTH 1002 /* bluetooth subsystem */#define AID_GRAPHICS 1003 /* graphics devices */#define AID_INPUT 1004 /* input devices */#define AID_AUDIO 1005 /* audio devices */#define AID_CAMERA 1006 /* camera devices */#define AID_LOG 1007 /* log devices */#define AID_COMPASS 1008 /* compass device */#define AID_MOUNT 1009 /* mountd socket */#define AID_WIFI 1010 /* wifi subsystem */#define AID_ADB 1011 /* android debug bridge (adbd) */......#define AID_USER 100000 /* offset for uid ranges for each user */
这些宏定义会在代码中被直接使用,比如su命令判断如果不是root或者shell权限就不让使用:
int main(int argc, char** argv) { uid_t current_uid = getuid(); if (current_uid != AID_ROOT && current_uid != AID_SHELL) error(1, 0, "not allowed");}
宏定义又被转换成字符串:
static const struct android_id_info android_ids[] = { { "root", AID_ROOT, }, { "system", AID_SYSTEM, }, { "radio", AID_RADIO, }, { "bluetooth", AID_BLUETOOTH, }, { "graphics", AID_GRAPHICS, }, { "input", AID_INPUT, }, { "audio", AID_AUDIO, }, { "camera", AID_CAMERA, }, { "log", AID_LOG, }, { "compass", AID_COMPASS, }, ...... };
转换成字符串后方便记忆使用,比如在init.rc中:
service surfaceflinger /system/bin/surfaceflinger class core user system
查看:
查看当前系统所有现有UID方法:
kris@:~$ adb pull /data/system/packages.list113 KB/s (4701 bytes in 0.040s)
packages.list:
com.android.providers.telephony 1001 0 /data/data/com.android.providers.telephony platform 3002,3003,3001com.android.providers.media 10005 0 /data/data/com.android.providers.media default 1023,1015,1024com.sohu.inputmethod.sogou 10041 0 /data/data/com.sohu.inputmethod.sogou default 3003com.android.wallpapercropper 10014 0 /data/data/com.android.wallpapercropper platform nonecom.android.documentsui 10021 0 /data/data/com.android.documentsui platform nonecom.android.galaxy4 10022 0 /data/data/com.android.galaxy4 default nonecom.android.externalstorage 10002 0 /data/data/com.android.externalstorage platform 1023,1015com.android.htmlviewer 10024 0 /data/data/com.android.htmlviewer platform nonecom.android.browser 10017 0 /data/data/com.android.browser platform 3003com.android.soundrecorder 1000 0 /data/data/com.android.soundrecorder platform 3002,1023,1015,3003,3001
文件各个列的意义见文件package.c中的注释:
其中第二列的值就表示UID
参考:
Android系统中UID
ANDROID 中UID与PID的作用与区别
阅读全文
1 0
- [RK3288][Android6.0] 系统中UID(用户ID)知识点小结
- [RK3288][Android6.0] 关于uboot中logo相关知识点小结
- [RK3288][Android6.0] WiFi之cfg80211知识点小结
- [RK3288][Android6.0] WiFi之mac80211知识点小结
- [RK3288][Android6.0] 系统调试串口驱动流程小结
- [RK3288][Android6.0] ART虚拟机对APK的优化知识点小结
- [RK3288][Android6.0] Camera HAL流程小结
- [RK3288][Android6.0] StageFright解码流程小结
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] USB UVC 驱动小结
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] 串口驱动流程小结
- [RK3288][Android6.0] USB ECHI 驱动小结
- [RK3288][Android6.0] ION 驱动流程小结
- [RK3288][Android6.0] SettingsProvider数据库小结
- [RK3288][Android6.0] 音频调试方法小结
- [RK3288][Android6.0] MediaCodec初始化过程小结
- [RK3288][Android6.0] 有线耳机驱动小结
- 简单防范SYN_RECV攻击
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- 给蛋姐姐写的txt拼接
- pringMvc+Spring+Mybatis+Maven整合
- 欢迎使用CSDN-markdown编辑器
- [RK3288][Android6.0] 系统中UID(用户ID)知识点小结
- Angular数据绑定
- iOS8自定义输入法教程:如何创建第三方输入法
- 树
- 数据库的水平/垂直切分的一些概念
- ASP.NET运行报错HTTP 404
- bzoj3996[TJOI2015]线性代数 网络流
- 为什么需要DTO(数据传输对象)(转载)
- [ Activiti ] Spring 整合Activiti工作流开发