12.04의`adb push` 명령에서 '권한 부족'오류


57

APK 파일을 태블릿에 푸시하려고 할 때이 오류가 발생했습니다. 도와주세요.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

도움을 주셔서 감사합니다.


1
공식 안드로이드 개발자 문서를 참조하여 지원되는 user84207의 답변은 Anwar Shah의 허용되는 답변보다 훨씬 낫습니다. 가능하면 항상 데몬을 루트로 실행하지 않아야하기 때문입니다. 루트로 adb를 실행하면 컴퓨터가 더 많은 공격에 취약 해집니다.
nealmcb

답변:


20

우분투에서 때때로이 같은 오류를 보았습니다. 이에 대한 해결 방법은 sudo명령으로 adb를 실행하는 것입니다. 예를 들어, app.apksdcard를 누르면 명령은 다음과 같습니다.

sudo adb push app.apk /mnt/sdcard

또한 응용 프로그램 설정 (GingerBread) 또는 개발 섹션 (IceCream Sandwich 이상)에서 "USB 디버깅"모드를 선택했는지 확인하십시오. adb가 이미 실행중인 경우 먼저 다음 명령으로 종료해야합니다.sudo adb kill-server

이것이 도움이되기를 바랍니다.


나는 그것을 얻었지만 여전히이 방법을 시도 할 것입니다 ... 도움을 주셔서 감사합니다
Neha Sharad Umachigi

5
"알았습니다"... 해결책을 찾은 경우 다른 사람이 혜택을받을 수 있도록 예의를 갖도록하십시오 (질문을 물었을 때 자신에게 도움이 되었음). 예를 들어, 이제이 문제가 발생했지만 설명하는 것과 동일한 문제 일지라도 다른 곳을 찾아야합니다.
erjoalgo

2
이 답변은 adb의 버그가 전체 컴퓨터를 대신 할 수 있기 때문에 위험합니다. 공식 Android 개발자 문서를 참조하여 지원되는 user84207의 udev 규칙을 사용한 답변은 해당 문제를 피합니다.
nealmcb

이것은 문제에 대한 가장 간단하고 쉽고 최소한의 해결 방법입니다.
Anwar

참고 : 이것은 sudo설치 adb되지 않은 버전과 다른 버전을 찾았 기 때문에 저에게 효과적 이었습니다 . 그렇기 때문에 adb더 많은 권한이 필요 하지 않기 때문에 이것이 작동 합니다.
Kevin Cooper

61

나는이 같은 문제에 부딪쳤다. 여기에 표시된대로 udev 규칙을 추가 하면 트릭이 수행됩니다.

루트로 로그인하고 파일을 작성하고 다음 /etc/udev/rules.d/51-android.rules과 같은 행을 추가하여 plugdev그룹의 모든 사용자에게 권한을 부여하십시오 .

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

이 예에서 공급 업체 ID는 HTC입니다. 장치의 공급 업체 ID를 사용해야합니다. 장치 ID는 다음 lsusb과 같은 줄 을 실행 하여 검색 하여 얻을 수 있습니다.

Bus 002 Device 009: ID 2a47:9e18

이 예에서는 공급 업체 ID가 2a47이므로로 교체 0bb4해야 2a47합니다. 따라서 올바른 줄은 다음과 같습니다.

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

이제 파일에 대한 읽기 권한을 할당하고 udev를 다시로드하고 adb 데몬을 다시로드하십시오.

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

장치를 USB 포트에서 분리했다가 다시 연결해야 할 수도 있습니다.


9
lsusb 명령으로 USB 공급 업체 ID를 얻을 수 있습니다. 콜론으로 구분 된 쌍의 첫 번째 부분입니다. 예를 들어 18d1 : 4e22는 공급 업체 ID가 18d1임을 의미합니다.
피터 램 버거

새 규칙 파일을 추가 한 후 udev를 "트리거"해야 할 수도 있습니다 (확실하지는 않지만). 다음은 askubuntu.com/questions/82470/… 를 "트리거"하는 방법 입니다.
user29020

2
장치를 분리했다가 다시 연결해야 할 수도 있습니다. 그러나이 답변은 저에게 효과적이며 adb를 루트로 실행하는 것보다 훨씬 좋습니다. Ubuntu 사용자도 plugdev그룹의 일부 여야합니다 . id찾아 실행하십시오 .
nealmcb

2
당신이 장치의 많은 작업을해야 할 경우 환매 특약은 매우 유용 github.com/M0Rf30/android-udev-rules
zamber


22

StackOverflow에 대한 Jorch914의 답변 으로이 문제가 해결되었습니다.

Ok 그래서 마침내 문제를 발견했습니다.이 장치에서 분명히 카메라로 연결하도록 설정해야합니다 (USB 디버깅이 이미 활성화 된 후에도)

여기에 이미지 설명을 입력하십시오

또한 이 링크 는 설정 과정을 설명합니다


1
그렇습니다. 기본적으로 "충전"으로 설정되어있는 Android N에서 "USB 구성 선택"을 수행해야했습니다.
Dan Dascalescu

1
어떤 이유로 든 나는 항상 내 픽셀을 Mac에 꽂고 작업을 시작할 수 있었지만 CentOS dev 워크 스테이션으로 옮길 때 디버깅 권한을 묻는 메시지를 표시해야했습니다. 감사합니다
bsautner

2
나를 위해 일했다. 트릭은 "충전"에서 다른 것으로 바꾸는 것 같습니다.
Bim


10

방금 같은 문제를 겪었지만 여기에 내가 어떻게 통과 할 수 있었습니까?

  • 다음 명령을 실행하여 기존 adb 서버를 종료해야합니다. adb kill-server(잘못 될 수 있지만 sudo없이 AND로 발행했습니다
  • 다음을 실행하여 적절한 권한으로 adb 서버를 시작하십시오. sudo adb start-server
  • 짜잔. 당신은 당신이 필요로하는 명령을 발행 알고

당신이 알고 있는지 확실하지 않지만 adb를 포함하는 패키지가 있습니다. 나는 당신이 이전 버전의 adb에 대한 참조를 얻고 있음을 알았 기 때문에 이것을 언급했다. 명령 행에서 다음을 발행하여 설치할 수 있습니다.sudo apt-get install android-tools-adb

이게 도움이 되길 바란다.


플랫폼 도구의 ADB가 더 최신 일 수 있습니다. 이러한 도구는 개별 다운로드로도 제공됩니다.
Martin Zeitler

2

몇 분 전에 예상대로 작동 insufficient permissions for device했지만 오늘 오류 가 발생했습니다 adb. 이제 나는 얻는다 :

$ adb devices
List of devices attached 
????????????    no permissions

$ adb shell
error: insufficient permissions for device

오류가 발생하기 직전 Media device (MTP)에 사용할 필요가 없다는 것을 알았으므로 비활성화했습니다 MTP. 그러나 USB 디버깅 또는 적어도 일부 adb명령에는이 기능 Media device (MTP)이 활성화되어 있어야합니다 .

Media device (MTP)Android 4.4에서 사용하려면 다음으로 이동하십시오.

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

MTP비활성화 되면 lsusb다음을 보여줍니다.

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

을 활성화 한 후 MTPlsusb는 다음을 보여줍니다.

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

idVendor 및 idProduct MTP는 활성화 또는 비활성화 여부에 따라 변경 됩니다.

저는 Android 전문가가 아니므로 위의 동작이 특정 전화 모델에만 해당 될 수 있습니다.


0

다른 이유로 인한 것일 수 있습니다. 장치에 APK를 설치하려고하면이 오류가 발생합니다.

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

장치가 올바른 모드로 준비되지 않았기 때문에 발생했습니다. 이 장치는 USB를 통해 4G 연결을 공유하고있었습니다.

다음과 같이 알 수 있습니다.

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

따라서 전화에서 연결 공유를 비활성화하고 다시 시작하기에 충분했습니다.

일반적으로 adb device장치에서 파일을 푸시하기 전에 명령을 통해 다음 결과를 확인하십시오

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

이 경우 adb 서버를 종료하거나 다시 시작할 필요가 없습니다.

USB를 통한 데이터 전송을 위해 장치를 장착 한 경우에도 같은 상황 일 수 있습니다.


0

동일한 문제가 발생하여 권한이 충분하지 않습니다. 내가 한 일은 랩톱의 USB 권한을 취소하는 것이 었습니다. 그런 다음 USB 디버깅을 중지하고 시작했습니다. 노트북에 다시 연결하고 USB 디버깅 권한을 부여했습니다.


1
이 프로세스에 대한 자세한 정보를 제공해 주시겠습니까? 단계별로 이상적이므로 OP가 귀하의 예를 따를 수 있습니다. :)
ThatGuy

0

나는 같은 문제에 직면했고 your_android_sdk_path의 경로를 환경 변수에 추가하여 이것을 해결했다.

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

이 파일 ~/.bashrc파일 을 편집 ~/.profile 하거나 /etc/profile, /etc/bash.bashrc, or /etc/environment시스템 전체 액세스에 추가하려는 경우 계정이나 시스템 전체에 추가하려는 방법을 원합니다 .

그런 다음 bin에 링크를 만듭니다.

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

adb 장치 또는 명령을 사용한 경우 먼저 다음과 같이 서버를 종료하십시오.

adb kill-server

그런 다음 서버를 시작하십시오

adb start-server
adb devices

이제 문제없이 장치가 올바르게 표시되는 것을 볼 수 있습니다


0

이 문제에 대한 답변은 여기에 있습니다 : https://github.com/snowdream/51-android

안드로이드 개발자로서 나는 당신이 어디서나 adb를 사용하도록 강요하기 위해 "sudo"를 사용하지 말 것을 제안한다. 우리가해야 할 일이 아닙니다. 우리 자신의 안전을 위해 규칙, 정책 ​​및 제한이 있습니다.


0

또 다른 가능성 : USB 테 더링은 adb 와도 충돌합니다. 비활성화하면 문제가 해결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.