adb权限不足问题解决

解决Ubuntu下adb 显示insufficient permissions for device的问题

用USB线连接设备后抓取log时,在命令行输入:adb root后出现了
error:insufficient permissions for device
这显然是不正常的
我们再在命令行上输入
adb device
出现了:

List of devices attached 
????????????    no permissions

这就可以知道了,出问题了,从上面给出的提示翻译成中文是”设备权限不足“,adb devices给出的提示 ”No permission“,所以我们要解决非标设备默认无法被识别的问题。
来看我操作一波:

  • 1、打开文件路径,到/etc/udev/rules.d 下:
    cd /etc/udev/rules.d
  • 2、来到之后在这里创建一个51-android.rules文件:
    sudo vim 51-android.rules
  • 3、然后在文件中添加如下配置:
    SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
  • 4、保存退出
    这时候就只差最后一步
  • 5、再为51-android.rules加上权限
    sudo chmod a+x 51-android.rules
  • 6、最后
    将设备拔下来再连接上就可以了,记得回到主目录下再进行 adb root
    如果不放心就adb devices一下看看

以下是扩展部分:
问题是解决了,但跟着这种傻瓜操作我们又能得到什么呢。作为一个热衷学习的人我们应该了解我们为什么这么做。为什么要在这个路径上添加这么个文件;为什么要在这个文件上加上这么一段命令呢;接下来就来探讨以下。

1、为什么在这个路径下 /etc/udev/rules.d
答:/etc/udev/rules.d这个目录存储的是以.rules结束的文件。下面可能有好几个udev规则文件,每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。
2、为什么输入以上文本
答:规则文件里的规则有一系列的键/值对组成,键/值对之间用逗号(,)分割。每一个键或者是用户匹配键,或者是一个赋值键。匹配键确定规则是否被应用,而赋 值键表示分配某值给该键。这些值将影响udev创建的设备文件。赋值键可以处理一个多值列表。匹配键和赋值键操作符解释见下表:

udev 键/值对操作符

操作符匹配或赋值解释
==匹配相等比较
!=匹配不等比较
=赋值分配一个特定的值给该键,他可以覆盖之前的赋值。
+=赋值追加特定的值给已经存在的键
:=赋值分配一个特定的值给该键,后面的规则不可能覆盖它。

这有点类似我们常见的编程语言,比如C语言。只是这里的键一次可以处理多个值。有一些键在udev规则文件里经常出现,这些键的值可以使用通配符(*,?,甚至范围,比如[0-9]),这些常用键列举如下:

常用udev键

含义
ACTION一个时间活动的名字,比如add,当设备增加的时候
KERNEL在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备
DEVPATH内核设备录进,比如/devices/*
SUBSYSTEM子系统名字,比如sound,net
BUS总线的名字,比如IDE,USB
DRIVER设备驱动的名字,比如ide-cdrom
ID独立于内核名字的设备名字
SYSFS{ value}sysfs属性值,他可以表示任意
ENV{ key}环境变量,可以表示任意
PROGRAM可执行的外部程序,如果程序返回0值,该键则认为为真(true)
RESULT上一个PROGRAM调用返回的标准输出。
NAME根据这个规则创建的设备文件的文件名。注意:仅仅第一行的NAME描述是有效的,后面的均忽略。 如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。
SYMLINK根据规则创建的字符连接名
OWNER设备文件的属组
GROUP设备文件所在的组。
MODE设备文件的权限,采用8进制
RUN为设备而执行的程序列表
LABEL在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务)
GOTO跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTO
IMPORT{ type}导入一个文件或者一个程序执行后而生成的规则集到当前文件
WAIT_FOR_SYSFS等待一个特定的设备文件的创建。主要是用作时序和依赖问题。
PTIONS特定的选项: last_rule 对这类设备终端规则执行; ignore_device 忽略当前规则; ignore_remove 忽略接下来的并移走请求。all_partitions 为所有的磁盘分区创建设备文件。

我们输入的文本是:SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
所以我们可以知道:子系统名字为”USB“,环境变量为”usb_device“,设备权限为”0666“

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
免root获取adb权限是指在Android手机中,不需要进行root操作,仍能够获取并使用adb(Android Debug Bridge)的权限。 在传统的情况下,如果想要使用adb命令进行连接手机并执行一些操作,通常需要先对手机进行root操作,以获得足够的权限来执行adb命令。但是,对手机进行root操作可能会导致潜在的安全问题,例如存在恶意软件或应用的权限滥用风险。 为了解决这个问题,一些手机制造商和开发者提供了一种免root获取adb权限的方法。这种方法通常需要满足以下条件: 1. 开启开发者选项:在手机设置中,需要进入关于手机的页面,点击多次版本号或者构建号,即可激活开发者选项。 2. 启用USB调试:在开发者选项中,需要打开USB调试选项。 3. 授权USB调试,允许电脑或其他设备连接:当你通过USB数据线将手机连接到电脑时,手机会弹出一个提示框,询问是否信任该电脑。选择信任后,即可授权USB调试模式。 4. 安装ADB驱动和平台工具:在电脑中下载并安装相应的ADB驱动和平台工具,以便能够在电脑中执行adb命令。 通过以上步骤,即可在不进行root操作的情况下,使用ADB命令进行相关操作,如文件传输、安装应用程序等。这种方法大大降低了安全风险,并方便了开发者和普通用户的adb操作。同时,具体的步骤可能因手机品牌和操作系统版本的不同而有所差异,可以根据具体操作说明进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值