Ubuntu上解决adb设备权限问题(insufficient permissions / missing udev rules)
在Ubuntu开发环境中使用
adb(Android Debug Bridge)连接Android设备或开发板时,经常遇到权限不足的提示,这是Linux系统USB设备访问控制的常见问题。本文将综合Android官方文档和社区实践,提供一套完整、可靠的解决方案。
博主博客
一、问题现象
当您连接设备并运行adb devices时,可能会看到如下错误信息:
$ adb devices
List of devices attached
4a093191 no permissions (missing udev rules? user is in the plugdev group); see [http://developer.android.com/tools/device.html]
或者尝试进入adb shell时:
$ adb shell
adb: insufficient permissions for device: missing udev rules? user is in the plugdev group
See [http://developer.android.com/tools/device.html] for more information
这表明当前Linux系统没有为您的Android设备授予足够的USB访问权限。
二、问题原因
在Linux系统(如Ubuntu)中,访问USB设备需要相应的权限。adb要正常与设备通信,必须满足两个核心条件:
- 用户属于特定用户组:执行
adb命令的用户需要属于plugdev组。 - 系统存在udev规则:需要为Android设备创建
udev规则,告知系统当接入此类USB设备时,应将其所属组设为plugdev并赋予适当的权限。
三、解决方法
您可以按照以下步骤,从官方推荐到手动配置,系统地解决此问题。
步骤1:确保当前用户在plugdev组中
首先,检查您的用户是否已经属于plugdev组。
# 查看当前用户所属的组
$ id
在输出结果中查找是否存在plugdev。例如:46(plugdev)。
- 如果已经存在,请继续步骤2。
- 如果不存在,需要将当前用户添加到
plugdev组:
重要:组变更在重新登录后才能生效。请注销当前用户或重启系统,然后再次使用$ sudo usermod -aG plugdev $LOGNAMEid命令确认。
步骤2:配置udev规则
这是解决问题的关键。有两种方法可以实现,推荐优先使用方法A。
方法 A:安装社区维护的规则包(官方推荐)
Ubuntu提供了一个包含常见Android设备udev规则的软件包,这是最简单、最安全的方法。
$ sudo apt-get install android-sdk-platform-tools-common
安装完成后,重新插拔您的设备。
方法 B:手动创建udev规则文件
如果方法A执行后问题依旧,或者您想了解其原理,可以手动创建规则文件。
- 使用
sudo权限创建并编辑规则文件:$ sudo vim /etc/udev/rules.d/51-android.rules - 在文件中添加以下内容:
这条规则的含义是:对于所有USB子系统设备,将其用户组设置为SUBSYSTEM=="usb", MODE="0660", GROUP="plugdev", SYMLINK+="android%n"plugdev,权限设置为0660(即属组内用户可读写),并创建一个以android开头的符号链接。 - 保存并退出编辑器。然后,重新加载udev规则并触发生效:
或者,为了确保万无一失,也可以直接重新插拔USB线。$ sudo udevadm control --reload-rules $ sudo udevadm trigger
步骤3:验证结果
完成上述任一方法后,再次运行adb命令验证。
# 重启adb服务器(可选,确保状态刷新)
$ adb kill-server
$ adb start-server
# 查看设备列表
$ adb devices
如果一切正常,您应该看到设备的状态变为device,而不再是no permissions。
List of devices attached
4a093191 device
此时,运行adb shell也应能成功进入设备终端。
四、进阶内容:使用无线调试
对于Android 11及更高版本的设备,官方还提供了无线调试方式,可以有效规避USB连接带来的驱动和权限问题。您可以通过Android Studio的“Pair Devices Using Wi-Fi”功能,或使用adb pair命令行工具进行配对连接。具体步骤请参考官方文档的“使用 WLAN 连接到设备”部分。
参考文献
Ubuntu上解决adb设备权限问题(insufficient permissions / missing udev rules)
https://blog.uso6.com/archives/ubuntushang-jie-jue-adbshe-bei-quan-xian-wen-ti-insufficient-permissions-missing-udev-rules
评论