本文转载自:http://blog.csdn.net/liyongming1982/article/details/14108111

有的user用户版本的log 不全,且push/pull某些文件或者属性文件

常常会遇到权限不够的情况,给调试带来很多便:

对于user 版本adb shell 开启的还是shell 权限,而不是root 权限,
如果您需要root 权限,需要再改一下system/core/adb/adb.c 里面的should_drop_privileges() 
这个函数,在#ifndef ALLOW_ADBD_ROOT 时return 0; 而不是return 1; 即可。

判断是否降低权限:

  1. static int should_drop_privileges() {
  2. #ifndef ALLOW_ADBD_ROOT
  3. return 1;
  4. #else /* ALLOW_ADBD_ROOT */
  5. int secure = 0;
  6. char value[PROPERTY_VALUE_MAX];
  7. /* run adbd in secure mode if ro.secure is set and
  8. ** we are not in the emulator
  9. */
  10. property_get("ro.kernel.qemu", value, "");
  11. if (strcmp(value, "1") != 0) {
  12. property_get("ro.secure", value, "1");
  13. if (strcmp(value, "1") == 0) {
  14. // don't run as root if ro.secure is set...
  15. secure = 1;
  16. // ... except we allow running as root in userdebug builds if the
  17. // service.adb.root property has been set by the "adb root" command
  18. property_get("ro.debuggable", value, "");
  19. if (strcmp(value, "1") == 0) {
  20. property_get("service.adb.root", value, "");
  21. if (strcmp(value, "1") == 0) {
  22. secure = 0;
  23. }
  24. }
  25. }
  26. }
  27. return secure;
  28. #endif /* ALLOW_ADBD_ROOT */
  29. }

具体怎么降低权限:

    1. if (should_drop_privileges()) {
    2. struct __user_cap_header_struct header;
    3. struct __user_cap_data_struct cap;
    4. if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0) {
    5. exit(1);
    6. }
    7. /* add extra groups:
    8. ** AID_ADB to access the USB driver
    9. ** AID_LOG to read system logs (adb logcat)
    10. ** AID_INPUT to diagnose input issues (getevent)
    11. ** AID_INET to diagnose network issues (netcfg, ping)
    12. ** AID_GRAPHICS to access the frame buffer
    13. ** AID_NET_BT and AID_NET_BT_ADMIN to diagnose bluetooth (hcidump)
    14. ** AID_SDCARD_R to allow reading from the SD card
    15. ** AID_SDCARD_RW to allow writing to the SD card
    16. ** AID_MOUNT to allow unmounting the SD card before rebooting
    17. ** AID_NET_BW_STATS to read out qtaguid statistics
    18. */
    19. gid_t groups[] = { AID_ADB, AID_LOG, AID_INPUT, AID_INET, AID_GRAPHICS,
    20. AID_NET_BT, AID_NET_BT_ADMIN, AID_SDCARD_R, AID_SDCARD_RW,
    21. AID_MOUNT, AID_NET_BW_STATS };
    22. if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) {
    23. exit(1);
    24. }
    25. /* then switch user and group to "shell" */
    26. if (setgid(AID_SHELL) != 0) {
    27. exit(1);
    28. }
    29. if (setuid(AID_SHELL) != 0) {
    30. exit(1);
    31. }
    32. /* set CAP_SYS_BOOT capability, so "adb reboot" will succeed */
    33. header.version = _LINUX_CAPABILITY_VERSION;
    34. header.pid = 0;
    35. cap.effective = cap.permitted = (1 << CAP_SYS_BOOT);
    36. cap.inheritable = 0;
    37. capset(&header, &cap);
    38. D("Local port disabled\n");
    39. }

android user用户版本提高adb权限【转】的更多相关文章

  1. android 开发 实现多个动态权限的方法(并且兼容6.0以下的版本权限授权)

    android开发权限授权因为版本的不同有不同的授权方式,6.0以下的版本使用的是在注册表中添加权限的静态授权(这种授权权限提示只会出现在app安装的时候),而6.0以上(包含6.0)就需要动态授权的 ...

  2. android apk 的root 权限和USB adb 权限的差别

    USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限.通常假设adb shell 看到是: Android 4.0 以后 ...

  3. Vista之前的版本,默认本地登陆用户都以管理员权限启动程序

    Vista之前的版本,默认本地登陆用户都以管理员权限启动程序,之后的OS版本默认都没有管理员权限,需要用户提权才能做某些操作,否则需要管理员权限的操作都会失败MSSQL是用户名账号连接,Socket方 ...

  4. Android P(9.0) userdebug版本执行adb remount失败

    [DESCRIPTION]      在android P版本上如果按照“FAQ18076 android 6.0 M userdebug版本执行adb remount失败”的做法在userdebug ...

  5. Android 6.0 如何默认打开user版本的root权限【转】

    本文转载自:http://blog.csdn.net/wangjicong_215/article/details/77601638 1.system/core/adb/Android.mkdiff ...

  6. 在ubuntu下真机调试android程序出现设备没有访问权限

    今天把android的开发环境从windows平台切换到了ubuntu上. java jdk android-adt android-ndk都下好,环境变量都配好之后, 在调试程序的时候,出现设备没有 ...

  7. 【Android】一种提高Android应用进程存活率新方法

    [Android]一种提高Android应用进程存活率新方法 SkySeraph Jun. 19st 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph ...

  8. 【转】Android Studio-1.2版本设置教程

    如果重新安装Android Studio的话要重新配置风格选项啥的,这篇是个很好的教程,原文链接:http://blog.csdn.net/skykingf/article/details/45485 ...

  9. Android M新的运行时权限开发者需要知道的一切

    android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...

随机推荐

  1. Honey Heist

    5092: Honey Heist 时间限制: 1 Sec  内存限制: 128 MB 题目描述 0x67 is a scout ant searching for food and discover ...

  2. HDU [P3949] XOR

    线性基求第 k 小异或值 http://www.cnblogs.com/Mr-WolframsMgcBox/p/8567844.html 这道题消元下来是一个上三角矩阵,代码简单,但是不使用与本题的情 ...

  3. Log4j2同步异步性能比较以及教程和问题(坑)汇总

    线程数:500个   每个线程日志输出次数: 500次 log4j2其实有两个输出异步日志的方式:AsyncLogger和AsyncAppend 他两的区别在于: AsyncLogger使用的是无锁高 ...

  4. POJ 1182 食物链 [并查集 带权并查集 开拓思路]

    传送门 P - 食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit  ...

  5. golang sort包 排序

    []float64: ls := sort.Float64Slice{ 1.1, 4.4, 5.5, 3.3, 2.2, } fmt.Println(ls) //[1.1 4.4 5.5 3.3 2. ...

  6. hdu 1224 最长路

    开始用dijkstra直接求,发现不行,算法问题(1-2,(30),2-4(20),1--3(10),3--4(100)最后一个点无法更新,导致错误),后用取负,加大数法也没过. 现在(寒假了):求负 ...

  7. 新建JRapid项目(idea创建maven多模块项目)

    1.第一步,新建项目(Create New Project) 2.parent项目,不勾选“Crate from archetype”,直接单击“Next”. 3.groupid填写com.codin ...

  8. Android中View自己定义XML属性具体解释以及R.attr与R.styleable的差别

    为View加入自己定义XML属性 Android中的各种Widget都提供了非常多XML属性,我们能够利用这些XML属性在layout文件里为Widget的属性赋值. 例如以下所看到的: <Te ...

  9. 【转载】C#中的泛型

    1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持.通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱.拆箱,在一定程度上提升 ...

  10. 创建节点createElement

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...