adb 권한이 부족한 경우를 디버깅하는 방법

adb 권한이 부족한 경우를 디버깅하는 방법

오래 전에 그룹을 설정하여 휴대폰(기기)으로 adb에 대한 udev 규칙을 작성했습니다. 최근 몇 가지 사항이 변경되기 전까지는 모든 것이 괜찮았습니다.

  1. 장치 롬
  2. udev 패킷
  3. adb 패킷

이제 나는 사용자 아래에 있습니다.

$ adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device: verify udev rules.
See [http://developer.android.com/tools/device.html] for more information.

$ adb devices -l
List of devices attached xxxxxxx no permissions (verify udev rules); see 
[http://developer.android.com/tools/device.html] usb:2-1

$ lsusb
// here we have the mentioned device
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

// udev rules newly added after i received an error (did'd change anything - still error i can open adb only using root)  
SUBSYSTEM=="usb", ATTR{idVendor}=="1d6b", MODE="0666", GROUP="adbusers"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", GROUP="adbusers"

// this rule was added very long time ago was working perfect till now 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0666", GROUP="adbusers"

listed now as Bus 002 Device 007: ID 18d1:4ee7 Google Inc. 

// 사용자는 aduser 그룹에 속해 있습니다.

추신. 장치에 대한 권한을 확인했는데 다음과 같은 결과가 나왔습니다.

 $ ls -l /dev/bus/usb/002/001
 crw-rw-r-- 1 root root 189, 128 kwi 22 13:26 /dev/bus/usb/002/001

udev 규칙이 적용되지 않습니까?

ps2. 1) udev deug 활성화 2) 규칙 수정 + udev의 변경 사항을 추적하기 위한 심볼릭 링크 추가

SUBSYSTEM=="usb", ATTR{idVendor}=="1d6b", MODE="0666", GROUP="adbusers", SYMLINK+="android%n"
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0666", GROUP="adbusers", SYMLINK+="x-android%n"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0666", GROUP="adbusers", SYMLINK+="s-android%n"

장치 플러그 후

Apr 22 18:50:04 et27 systemd-udevd[304]: seq 2437 queued, 'add' 'usb'
Apr 22 18:50:04 et27 systemd-udevd[304]: Validate module index
Apr 22 18:50:04 et27 systemd-udevd[304]: Check if link configuration needs reloading.
Apr 22 18:50:04 et27 systemd-udevd[304]: seq 2437 forked new worker [1143]
Apr 22 18:50:04 et27 systemd-udevd[1143]: seq 2437 running
Apr 22 18:50:04 et27 systemd-udevd[1143]: IMPORT builtin 'usb_id' /lib/udev/rules.d/50-udev-default.rules:13
Apr 22 18:50:04 et27 systemd-udevd[304]: seq 2438 queued, 'add' 'usb'
Apr 22 18:50:04 et27 systemd-udevd[1143]: IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:13
Apr 22 18:50:04 et27 systemd-udevd[1143]: MODE 0664 /lib/udev/rules.d/50-udev-default.rules:41
Apr 22 18:50:04 et27 systemd-udevd[1143]: GROUP 1008 /etc/udev/rules.d/51-android.rules:4
Apr 22 18:50:04 et27 systemd-udevd[1143]: MODE 0666 /etc/udev/rules.d/51-android.rules:4
Apr 22 18:50:04 et27 systemd-udevd[1143]: LINK 's-android1' /etc/udev/rules.d/51-android.rules:4
Apr 22 18:50:04 et27 systemd-udevd[1143]: RUN '/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}' /etc/udev/rules.d/60-vboxdrv.rules:5
Apr 22 18:50:04 et27 systemd-udevd[1143]: PROGRAM 'mtp-probe /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1 2 5' /lib/udev/rules.d/69-libmtp.rules:2283
Apr 22 18:50:04 et27 systemd-udevd[1144]: starting 'mtp-probe /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1 2 5'
Apr 22 18:50:04 et27 systemd-udevd[1144]: failed to execute '/lib/udev/mtp-probe' 'mtp-probe /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1 2 5': No such file or directory
Apr 22 18:50:04 et27 systemd-udevd[1143]: Process 'mtp-probe /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1 2 5' failed with exit code 2.
Apr 22 18:50:04 et27 systemd-udevd[1143]: handling device node '/dev/bus/usb/002/005', devnum=c189:132, mode=0666, uid=0, gid=1008
Apr 22 18:50:04 et27 systemd-udevd[1143]: set permissions /dev/bus/usb/002/005, 020666, uid=0, gid=1008
Apr 22 18:50:04 et27 systemd-udevd[1143]: creating symlink '/dev/char/189:132' to '../bus/usb/002/005'
Apr 22 18:50:04 et27 systemd-udevd[1143]: creating link '/dev/s-android1' to '/dev/bus/usb/002/005'
Apr 22 18:50:04 et27 systemd-udevd[1143]: creating symlink '/dev/s-android1' to 'bus/usb/002/005'
Apr 22 18:50:04 et27 systemd-udevd[1143]: created db file '/run/udev/data/c189:132' for '/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1'
Apr 22 18:50:04 et27 systemd-udevd[1145]: starting '/usr/lib/virtualbox/VBoxCreateUSBNode.sh 189 132 00'
Apr 22 18:50:04 et27 systemd-udevd[1143]: Process '/usr/lib/virtualbox/VBoxCreateUSBNode.sh 189 132 00' succeeded.
Apr 22 18:50:04 et27 systemd-udevd[1143]: passed device to netlink monitor 0x562b37096e00
Apr 22 18:50:04 et27 systemd-udevd[1143]: seq 2437 processed
Apr 22 18:50:04 et27 systemd-udevd[304]: passed 308 byte device to netlink monitor 0x562b37076610
Apr 22 18:50:04 et27 systemd-udevd[1143]: seq 2438 running
Apr 22 18:50:04 et27 systemd-udevd[1143]: IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:15
Apr 22 18:50:04 et27 systemd-udevd[1143]: IMPORT builtin 'usb_id' /lib/udev/rules.d/60-libgphoto2-6.rules:9
Apr 22 18:50:04 et27 systemd-udevd[1143]: unable to access usb_interface device of '/sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1/2-1:1.0'
Apr 22 18:50:04 et27 systemd-udevd[1143]: IMPORT builtin 'usb_id' returned non-zero
Apr 22 18:50:04 et27 systemd-udevd[1143]: RUN 'kmod load $env{MODALIAS}' /lib/udev/rules.d/80-drivers.rules:5
Apr 22 18:50:04 et27 systemd-udevd[1143]: created db file '/run/udev/data/+usb:2-1:1.0' for '/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/usb2/2-1/2-1:1.0'
Apr 22 18:50:04 et27 systemd-udevd[1143]: Execute 'load' 'usb:v18D1p4EE7d0232dc00dsc00dp00icFFisc42ip01in00'
Apr 22 18:50:04 et27 systemd-udevd[1143]: No module matches 'usb:v18D1p4EE7d0232dc00dsc00dp00icFFisc42ip01in00'
Apr 22 18:50:04 et27 systemd-udevd[1143]: passed device to netlink monitor 0x562b37096e00
Apr 22 18:50:04 et27 systemd-udevd[1143]: seq 2438 processed
Apr 22 18:50:04 et27 systemd-udevd[304]: cleanup idle workers
Apr 22 18:50:04 et27 systemd-udevd[1143]: Unload module index
Apr 22 18:50:04 et27 systemd-udevd[1143]: Unloaded link configuration context.
Apr 22 18:50:04 et27 systemd-udevd[304]: worker [1143] exited

내가 구입한 기기에 그룹이 적용되지 않습니다.

$ ls -al /dev/android1
lrwxrwxrwx 1 root root 15 kwi 22 18:42 /dev/android1 -> bus/usb/001/001
$ ls -al /dev/s-android1
lrwxrwxrwx 1 root root 15 kwi 22 18:50 /dev/s-android1 -> bus/usb/002/005

숫자 그룹 값 대신 문자열에 문제가 있을 수 있습니까? 또는 GROUP="" 대신 GROUP:="" ? 그렇다면 왜 udev가 이에 대해 양보하지 않습니까?

  1. 기호 링크는 이전 표기법과 작동하므로 표기법은 없습니다.
  2. 대신 문자열은 로그에서 -> 1008로 해결되었으므로 숫자 없음입니다.

ok 권한이 예상대로 설정되었습니다. 심볼릭 링크에 권한이 표시되지 않기 때문입니다.

$ ls -al /dev/bus/usb/002/001 
crw-rw-rw- 1 root adbusers 189, 128 kwi 22 19:04 /dev/bus/usb/002/001

하지만 아직도 난 부족해

답변1

나에게도 같은 문제가 있었습니다. (사용자는 Plugdev 그룹의 구성원이었습니다.) 누락된 부분은 다음과 같습니다.

장치를 연결한 후 장치에서 데이터 교환을 위해 USB를 활성화해야 했습니다(Android 7.1.2 사용).

답변2

네, 문제가 무엇인지 찾았습니다.

파일 ~/android에는 장치 플래시/지우기 후에 다른 디버그 키를 저장할 수 있는 일부 파일이 포함되어 있습니다. 간단히 제거하세요.

정확히는:

~/.android/adbkey

답변3

가장 좋은 솔루션과 나에게 더 잘 맞았던 것은 우분투 패키지에서 adb를 설치하는 것입니다. 이를 통해 모든 Android 장치에 대해 커뮤니티에서 관리하는 기본 udev 규칙 세트가 제공됩니다.

예: sudo apt-get install adb

관련 정보