루트가 아닌 사용자로 Android Chrome에서 디버깅

루트가 아닌 사용자로 Android Chrome에서 디버깅

USB를 통해 내 상자에 연결된 Android 장치에서 Google Chrome에 표시된 웹 사이트를 디버깅하려고 합니다. 이를 위해 원격 디버깅 프로토콜은 Google Chrome 및 Chromium의 데스크톱 버전에서 구현됩니다. 이것이 질문의 맥락이지만 내 질문의 본질은 아닙니다.

Chrome 및 DevTools가 루트로 실행되면 데스크톱 크롬은 USB로 연결된 android-chrome과 통신할 수 있습니다. /dev루트가 아닌 사용자에게 일부 문자 장치에 대한 읽기/쓰기 액세스 권한이 없는 것 같습니다 . 그래서 Chrome을 실행하면야로슬라프, USB 장치 목록이 비어 있습니다.

루트로 감지된 장치:

수퍼유저는 USB를 읽을 수 있습니다.

일반 사용자에게는 장비가 부족합니다.

루트가 아닌 사용자는 USB를 읽을 수 없습니다.

스테이스가 구출하러 옵니다(?)

애플리케이션(데스크톱 Chrome)이 내 시스템에서 어떤 리소스에 액세스하려고 하는지 확인하고 싶지만 플랫폼에 대한 지식이 제한되어 있으므로 무엇을 찾아야 할지에 대한 조언이 필요합니다. 다음은 애플리케이션에서 사용되는 고유 시스템 호출 목록입니다. 다음 중 USB 장치와의 통신/협상 통화가 무엇인지 알고 계십니까?

access          getrandom       rename
arch_prctl      getresgid       rt_sigaction
bind            getresuid       rt_sigprocmask
brk             getsockname     rt_sigreturn
clock_getres    gettid          sched_getparam
clone           ioctl           sched_getscheduler
close           listen          sendmsg
connect         lseek           sendto
creat           lstat           setpriority
dup             mkdir           set_robust_list
eventfd2        mmap            setsockopt
execve          mprotect        set_tid_address
fadvise64       mremap          shutdown
fallocate       msync           socket
fcntl           munmap          socketpair
fstat           open            stat
fstatfs         pipe            statfs
ftruncate       poll            symlink
futex           prctl           sysinfo
getdents        prlimit64       uname
geteuid         read            unlink
getpeername     readlink        wait4
getpid          recvfrom        write
getpriority     recvmsg         writev

내 생각에 Chrome은 USB 장치를 검색할 수 있다고 생각합니다(약 80개 호출).

open("/sys/bus/pci/devices/0000:**:**.*/ \
     {class,device,irq,resource,vendor}", O_RDONLY) = 153

하지만 에는 없습니다 /dev. 그러면 일반 사용자가 읽으려면 어떤 장치를 열어야 합니까?

내 콘텐츠는 다음과 같습니다 /dev.

# ls -l hidraw* bus/usb/*/*
crw-rw-r-- 1 root usb     189,   0 180418 17:53 bus/usb/001/001
crw-rw-r-- 1 root usb     189,   1 180418 17:53 bus/usb/001/002
crw-rw-r-- 1 root usb     189, 128 180418 17:53 bus/usb/002/001
crw-rw-r-- 1 root usb     189, 129 180418 17:53 bus/usb/002/002
crw-rw-r-- 1 root usb     189, 256 180418 17:53 bus/usb/003/001
crw-rw-r-- 1 root usb     189, 257 180418 17:53 bus/usb/003/002
crw-rw-r-- 1 root usb     189, 258 180418 17:53 bus/usb/003/003
crw-rw-r-- 1 root usb     189, 259 180418 17:53 bus/usb/003/004
crw-rw-r-- 1 root usb     189, 260 180418 17:53 bus/usb/003/005
crw-rw---- 1 root plugdev 189, 263 180419 10:47 bus/usb/003/008
crw-rw-r-- 1 root usb     189, 384 180418 17:53 bus/usb/004/001
crw-rw-r-- 1 root usb     189, 385 180418 17:53 bus/usb/004/002
crw------- 1 root root    251,   0 180418 11:32 hidraw0
crw------- 1 root root    251,   1 180418 11:32 hidraw1
crw------- 1 root root    251,   2 180418 11:32 hidraw2

어쩌면 내가해야 할 일은 추가하는 것뿐입니다.야로슬라프도착하다플러그 개발자그룹? 그건 그렇고, 이것은 udev 236이 포함된 Linux 4.12.12입니다.

요약하다:

  1. USB 통신과 관련된 시스템 호출은 무엇입니까?
  2. /dev사용자에게 액세스 권한을 부여하려면 어떤 노드가 필요합니까?

관련 정보