这个问题已经在这里有一个答案:
- 设立显影设备(????????????没有权限) 23个回答
我在调试模式下我的Fedora Linux系统17.亚行说,连接HTC野火A3333的问题:
./adb devices
List of devices attached
???????????? no permissions
我的udev规则(三星第一规则,它工作得很好,第二次对HTC这是不是):
SUBSYSTEM=="usb",SYSFS{idVendor}=="04e8",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"
SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android_adb",MODE="0666",GROUP="plugdev"
三星设备一切正常:
./adb devices
List of devices attached
00198a9422618e device
我一直在尝试所有的simmilar线程wthout任何运气给出的答案: 使用HTC野火的Android开发
Answer 1:
我只是有这个问题,我自己在Debian喘息。 我重新开始使用sudo adb的守护进程:
sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices
一切工作:)
Answer 2:
这个问题的原因有系统权限(感谢@ IsaacCisneros这一建议)做。 不知怎的,HTC野火(也许其他人)需要更多的东西从系统比三星设备。 简单的解决方法是运行Eclipse为根本,但这不是很舒服的非sudo的Linux系统如Fedora。
我发现实现同一个目标,这似乎是更加用户友好的和较小的安全漏洞,然后运行整个IDE与超级用户权限的另一种方式。 记住,这是仍然只是问题的一个解决方法。 系统根目录的使用应minimalized只管理任务,而“亚行”的设计没有SUID与普通用户帐户的工作。 尽管事实上,SUID的正确的设置是相当安全的,每一个许可增加是一个潜在的系统安全漏洞。
1.设置在ADB二进制(所有者 - 根,所有者组 - USER_GROUP)的所有权:
chown root:user_group adb
2.设置与SUID权限:
chmod 4550 adb
这将导致与此类似(LS -llh):
-r-sr-x---. 1 root user_name 1.2M Jan 8 11:42 adb
之后,你就可以尽管你将使用您的普通用户帐户运行ADB为根,事件。 您可以运行Eclipse作为一个普通用户,你的HTC应该正确发现。
./adb devices
List of devices attached
HT0BPPY15230 device
Answer 3:
我有一个类似的问题:
$ adb devices
List of devices attached
4df15d6e02a55f15 device
???????????? no permissions
调查
如果我运行lsusb
,我可以看到我已经连接的设备,并且其中:
$ lsusb
...
Bus 002 Device 050: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone ...
Bus 002 Device 049: ID 18d1:4e42 Google Inc.
这被显示我的三星Galaxy S3和我的连接的Nexus 7(2012)。
检查这些权限:
$ ls -l /dev/bus/usb/002/{049,050}
crw-rw-r-- 1 root root 189, 176 Oct 10 10:09 /dev/bus/usb/002/049
crw-rw-r--+ 1 root plugdev 189, 177 Oct 10 10:12 /dev/bus/usb/002/050
等待。 什么? 认为“plugdev”组从哪儿来的?
$ cd /lib/udev/rules.d/
$ grep -R "6860.*plugdev" .
./40-libgphoto2-2.rules:ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
./40-libgphoto2-2.rules:ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", \
ENV{ID_GPHOTO2}="1", ENV{GPHOTO2_DRIVER}="proprietary", \
ENV{ID_MEDIA_PLAYER}="1", MODE="0664", GROUP="plugdev"
(我包裹的那些行)
注意GROUP="plugdev"
线。 还要注意的是,这并不为其他设备ID的工作原理:
$ grep -Ri "4e42.*plugdev" .
(没有返回)
修复它
好。 那么,有什么解决?
添加规则
创建一个文件/etc/udev/rules.d/99-adb.rules
包含以下行:
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e42", ENV{ID_GPHOTO2}="1",
ENV{GPHOTO2_DRIVER}="proprietary", ENV{ID_MEDIA_PLAYER}="1",
MODE="0664", GROUP="plugdev"
这应该是一条线,我在这里已经包好可读性
重新启动的udev
$ sudo udevadm control --reload-rules
$ sudo service udev restart
而已
拔下/重新插入设备。
试试吧
$ adb devices
List of devices attached
4df15d6e02a55f15 device
015d2109ce67fa0c device
Answer 4:
您udev规则似乎是错误的。 我用这个和它的工作:
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
( ATTR
代替SYSFS
)
Answer 5:
ubuntu下12.04,蚀JUNO。 我面临着同样的问题。 这是我上找到意喻博客
该解决方案是同一样莱昂
sudo -s
adb kill-server
adb start-server
adb devices
Answer 6:
斯蒂芬的回答工作(使用sudo ADB杀死服务器),但它是暂时的。 必须每次重新启动后重发。
对于一个永久的解决方案,udev的配置必须进行修改:
Witrant的答案是正确的想法(从官方Android文档复制)。 但它只是一个模板。 如果不为你的设备正常工作,您需要填写您的设备(S)正确的设备ID。
lsusb
Bus 001 Device 002: ID 05c6:9025 Qualcomm, Inc.
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
...
在列表中找到您的Android设备。
然后使用ID(4位)为idVendor上半年(后半段是idProduct,但没有必要让亚行工作)。
sudo vi /etc/udev/rules.d/51-android.rules
并添加一条规则为每一个独特idVendor:
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
就这么简单。 你并不需要在一些问题的答案给出的所有其他领域。 保存文件。
然后重新启动。 这种变化是永久性的。 (罗杰显示了一种方法重新启动udev的,如果你不想重新启动)。
Answer 7:
......在OP自己的答案是错误的,到目前为止,不存在“特殊的系统权限。” - “无许可”的问题归结到......没有权限。
不幸的是它不容易调试,因为亚行使得它试图访问其设备中的秘密! 在Linux上,它试图打开手机,这是例如/ dev /巴士/ USB / 001/115(你的总线编号和设备地址会有所不同)的“USB串口转换器”的设备。 这有时链接和从/ dev / android_adb使用。
lsusb
将有助于找到总线编号和设备地址。 要注意的是该设备的地址将是肯定的,如果你重新插改变,因为可能如果该端口无法了解要使用哪种速度总线编号(例如,一个物理端口一个逻辑总线或其他上结束了)。
一个的lsusb行类似于此:总线001的设备115:ID 4321:FEDC唧唧歪歪
lsusb -v
可以帮助你找到设备如果“唧唧歪歪”是不是暗示就够了(有时既没有包含制造商,也不是手机的型号)。
一旦你知道了设备,请与您自己的眼睛ls -a /dev/bus/usb/001/115
是有问题的用户很容易得到! 然后检查它的工作原理与chmod
和解决您的udev设置。
PS1是:/ dev / android_adb只能指向一个设备,所以确保它你想要做什么。
PS2:无关的这个问题,但少为人知:亚行的供应商ID的固定列表它经历。 这个列表可以从〜/ .android / adb_usb.ini延伸,它应该包含0x4321(如果我们按照我的例子线的lsusb从上面)。 - 这里不是必需的,因为你甚至不得到一个“没有权限”如果供应商ID是不知道。
Answer 8:
改变从手机的USB模式奏效了我。 (我将它设置为文件传输)
Answer 9:
我会在这里顶在前面加上这个后记,所以它不会迷失在我前面的解释。
我可以可靠地生产并通过简单地改变从相机(PTP)到媒体设备(MTP)的USB连接类型解决无权限问题。 相机模式允许调试; 媒体模式引起ADB无权限的响应。
其理由似乎上反映了片刻后相当明显。 在设备上无担保的内容将做出在媒体服务器模式下的调试器访问。
===========
直到你接受调试设备上的RSA加密警告该设备是unpermissioned。 在连接之后的某一点,该设备将要求接受调试连接。 这是一个最低限度的安全协议,以确保您可以访问该设备超出了最初的刷卡锁。 开发模式需要被启用的,我相信。
“无许可”标志其实是一个很好的指标,亚行认为该设备作为一个有效的调试目标。 请注意,它不会列出您的其他USB设备。
在下面和相关网页的详细信息。
http://developer.android.com/tools/device.html
Answer 10:
同样的问题哔S,S升级到4.2.2股票ROM 6月4日之后。
$ adb devices
List of devices attached
???????????? no permissions
所有的上述建议,而有效的让你的识别USB设备,不解决这个问题对我来说。 (安卓调试桥版本1.0.31上薄荷15运行)
更新Android SDK工具等复位~/.android/adb_usb.ini
。
要认识哔厂商ID 0x2207做这些步骤
加入行/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="0x2207", MODE="0666", GROUP="plugdev"
添加行~/.android/adb_usb.ini
:
0x2207
然后取出adbkey文件
rm -f ~/.android/adbkey ~/.android/adbkey.pub
并与设备连接,重建与正确的adb连接的密钥文件。 某些设备会要求重新授权。
sudo adb kill-server
sudo adb start-server
adb devices
Answer 11:
我今天遇到同样的问题。
我跟着官方说明 ,但我没有注意到, 我应该运行命令
“CHMOD一个+ R /etc/udev/rules.d/51-android.rules”
当我设置这个文件为世界可读并重新插入我的USB电缆,将状态变为非法。 然后,只需授予许可,一切顺利。
Answer 12:
有同样的问题。 正是有了udev规则的问题。 尝试了一些上面提到的规则,但因此未解决问题。 发现一组规则在这里, https://github.com/M0Rf30/android-udev-rules 。 其次导向那里,瞧,固定。
Answer 13:
我同意罗伯特Siemer和迈克尔Witrant 。 如果它不工作,尝试调试strace
strace adb devices
在我的情况下,它有助于杀死所有实例和删除套接字文件/tmp/ADB_PORT
(默认是/tmp/5037
)。
Answer 14:
这个问题的另一个可能的来源是USB数据连线。 如果您已经使用USB数据连线,把它关掉,然后从USB拔出设备,再插上,然后做
adb kill-server
adb devices
该诀窍在我的情况(Ubuntu的12.04的Nexus S,SDK中的家目录,从来不需要根得到它运行)。 根据您的设备,您可能需要运行adb devices
为根,虽然。
Answer 15:
尝试“的Android更新亚行”命令。 它帮助我与三星Galaxy齿轮。
Answer 16:
的输出ls -al /usr/bin/adb
应该显示,它是由用户所拥有的root
和基root
。 您可以使用Linux的ACL(访问控制列表)给你的本地用户权限adb
如下:
setfacl -m "u:userName:rwx" /usr/bin/adb
这是最好的设置上SUID位/usr/bin/adb
也限制谁可以使用该用户adb
至USERNAME和根 。
Answer 17:
答案是编织各个岗位之间在这里,我将让我的最好的,但它看起来像一个非常简单和明显的原因。
1)是有通常在udev规则“用户”变量一些东西一样USER =“your_user”可能是GROUP =“plugdev”之后
2)你需要使用正确的SYSFS {idVendor} ==” ####“和SYSFS {} idProduct == ”####“ 为您的设备/ S值。 如果你从一个以上的制造设备,比方说像一个三星,一个来自HTC,那么你需要为每个供应商,而不是针对每个设备,但是对于每个不同的供应商,你将使用一个条目的条目(规则),所以你需要HTC和三星的条目。 它看起来像你有你的三星入门现在你需要另一个。 记住USER = “your_user”。 使用“的lsusb”像罗伯特Seimer提示找到idVendor和idProduct,他们通常都是这种格式X#X#一些数字和字母:#X#XI第一个想到的是idVendor和第二idProduct但您将需要对于手机/平板电脑的每个品牌必须做到这一点。
3)我还没有想通了51 adb.rules和99 adb.rules如何不同,或者为什么。
4)也许尝试加入“plugdev”组到用户使用“usermod命令-a -G plugdev your_user”,尝试,在你自己的风险,但我不认为它比anyriskier推出贵为根,但我相信,如果你需要至少应该使用“gksudo日食”来代替。
我希望帮助clearify一些事情时,udev规则语法是一个谜给我的藏汉,但是从我听到的也可以是不同的不同的系统,因此尝试一些东西出来,一个吃了一段时间,并注意什么样的变革作品。
Answer 18:
关闭正在运行的adb
,可以关闭运行Android工作室。
列表中的设备,
/usr/local/android-studio/sdk/platform-tools/adb devices
Answer 19:
上THL W100运行设备作为根(如上所述)的工作仅连同束缚启用(我用AirDroid为该)。
Answer 20:
我曾在那里三个设备连接到一个相同的主机同样的情况,但只有一个已经“没有权限”其他人在线。
亚行添加SUID或SGID对我来说是另一个问题。 设备离线看到每次重新启动亚行 - 直到你的设备上,每次承认。
我加入“O + W”权限的设备文件解决了这个“没有权限”的问题。
CHMOD O +瓦特的/ dev /总线/ USB / 00N / XXX
文章来源: Android Debug Bridge (adb) device - no permissions [duplicate]