Kesalahan 'Izin tidak memadai' pada perintah `adb push` pada 12,04

57

Ketika saya mencoba mendorong file apk saya ke tablet, saya mendapatkan kesalahan ini, tolong bantu saya.

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

Terima kasih sebelumnya atas bantuannya.

Neha Sharad Umachigi
sumber
1
Jawaban oleh user84207, yang didukung oleh referensi ke dokumentasi resmi pengembang Android, jauh lebih baik daripada jawaban yang diterima oleh Anwar Shah, karena kita harus menghindari menjalankan daemon sebagai root jika memungkinkan. Menjalankan adb sebagai root membuat komputer rentan terhadap lebih banyak serangan.
nealmcb

Jawaban:

20

Terkadang saya melihat kesalahan yang sama di Ubuntu. Solusi untuk ini adalah menjalankan adb with sudocommand. Misalnya, jika Anda mendorong app.apkpada sdcard, perintahnya adalah

sudo adb push app.apk /mnt/sdcard

Juga, pastikan Anda memilih mode "USB debugging" di pengaturan Aplikasi (di GingerBread) atau di bagian Pengembangan (di IceCream Sandwich dan di atas). Jika adb sudah berjalan, pertama-tama Anda harus membunuhnya dengan perintahsudo adb kill-server

Semoga ini bisa membantu.

Anwar
sumber
Saya mengerti tetapi masih akan mencoba metode ini juga ... terima kasih atas bantuannya
Neha Sharad Umachigi
5
"Saya mengerti" ... Tolong beri kesopanan untuk dibagikan jika Anda menemukan solusi, sehingga orang lain dapat memperoleh manfaat (saat Anda mencari manfaat untuk diri sendiri ketika Anda mengajukan pertanyaan). Sebagai contoh, saya sekarang memiliki masalah ini, tetapi saya terpaksa mencari di tempat lain meskipun itu adalah masalah yang persis sama yang Anda gambarkan.
erjoalgo
2
Jawaban ini berisiko karena bug di adb dapat mengambil alih seluruh komputer. Jawabannya menggunakan aturan udev oleh user84207, yang didukung oleh referensi ke dokumentasi pengembang Android resmi, menghindari masalah itu.
nealmcb
Ini adalah solusi paling sederhana dan termudah dan setidaknya bekerja untuk masalah tersebut.
Anwar
Catatan: Ini berfungsi untuk saya karena sudomenemukan versi terinstal yang berbeda adbdari yang bukan sudo. Itu sebabnya ini bekerja, bukan karena adbitu sendiri membutuhkan lebih banyak hak istimewa.
Kevin Cooper
61

Saya mengalami masalah yang sama. Menambahkan aturan udev seperti yang ditunjukkan di sini berhasil:

Masuk sebagai root, buat file /etc/udev/rules.d/51-android.rulesdan tambahkan baris seperti ini untuk memberikan izin kepada siapa pun di plugdevgrup:

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

Dalam contoh ini, ID vendor adalah HTC. Anda perlu menggunakan ID vendor untuk perangkat Anda, yang dapat diperoleh dengan menjalankan lsusbdan mencari garis seperti

Bus 002 Device 009: ID 2a47:9e18

Dalam contoh ini ID vendor Anda 2a47, jadi Anda harus menggantinya 0bb4dengan 2a47. Baris yang benar akan membaca:

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

Sekarang berikan izin baca pada file, muat ulang udev dan muat ulang adb admon:

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

Anda mungkin harus memutuskan koneksi dan menghubungkan kembali perangkat Anda ke port USB.

erjoalgo
sumber
9
Anda bisa mendapatkan id vendor USB dengan perintah lsusb. Ini adalah bagian pertama dari pasangan yang dipisahkan usus besar. Misalnya 18d1: 4e22 berarti id vendor adalah 18d1.
Peter Lamberg
Anda mungkin perlu "memicu" udev setelah menambahkan file aturan baru (meskipun saya tidak yakin). Inilah cara untuk "memicu" askubuntu.com/questions/82470/… .
user29020
2
dan / atau Anda mungkin perlu memutuskan dan menghubungkan kembali perangkat? Tetapi jawaban ini berhasil bagi saya, dan jauh lebih baik daripada menjalankan adb sebagai root. Pengguna Ubuntu Anda juga harus menjadi bagian dari plugdevgrup. Lari iduntuk mencari tahu.
nealmcb
2
Repo ini sangat membantu jika Anda harus bekerja dengan banyak perangkat github.com/M0Rf30/android-udev-rules
zamber
Ada juga daftar ID vendor di dokumen .
Keith
22

Jawaban Jorch914 pada StackOverflow memecahkan masalah ini untuk saya:

Ok Jadi saya akhirnya menemukan masalah, ternyata pada perangkat ini Anda harus mengatur untuk terhubung sebagai kamera (bahkan setelah usb debugging sudah diaktifkan)

masukkan deskripsi gambar di sini

Tautan ini juga menjelaskan proses pengaturan

kas
sumber
1
Ya, ini dia! Saya harus "Pilih konfigurasi USB" di Android N, yang secara default diatur ke "Pengisian daya".
Dan Dascalescu
1
untuk alasan apa pun saya selalu bisa menghubungkan pixel saya ke mac dan mulai bekerja tetapi ketika saya pindah ke workstation dev CentOS saya harus ke ini untuk mendapatkannya untuk meminta izin debugging. Terima kasih
bsautner
2
Bekerja untukku. Triknya tampaknya mengubahnya dari "Pengisian" ke sesuatu yang lain, mengapa.
Bim
11

Dua perintah sederhana ini menyelesaikan masalah bagi saya:

adb kill-server
adb start-server

Perhatikan bahwa tidak seperti jawaban semi-newbie yang tidak saya butuhkan sudo.

Nicolas Raoul
sumber
1
ini berhasil bagiku
Sudip Bhandari
Tidak berfungsi untuk Nexus 5X yang terhubung ke Ubuntu 16.04 ketika saya mencoba menjalankannya adb shell ls.
Dan Dascalescu
10

Saya baru saja mengalami masalah yang sama tetapi di sini adalah bagaimana saya bisa mengatasinya:

  • Anda harus mematikan server adb yang ada dengan mengeluarkan perintah berikut: adb kill-server(mungkin salah, tetapi saya mengeluarkannya dengan DAN tanpa sudo
  • mulai server adb dengan izin yang tepat dengan mengeluarkan: sudo adb start-server
  • voila. Anda mungkin tahu mengeluarkan perintah apa pun yang Anda butuhkan

Tidak yakin apakah Anda tahu, tetapi ada paket yang menyertakan adb. Saya menyebutkan ini karena saya perhatikan bahwa Anda mendapatkan referensi ke versi adb yang lebih lama. Anda dapat menginstal dengan mengeluarkan berikut ini di baris perintah Anda:sudo apt-get install android-tools-adb

Saya harap ini membantu.

semi pemula
sumber
ADB alat platform mungkin lebih baru; alat-alat ini bahkan tersedia sebagai unduhan terpisah.
Martin Zeitler
2

Hari ini saya menemukan insufficient permissions for devicekesalahan, meskipun adbtelah berfungsi seperti yang diharapkan hanya beberapa menit sebelumnya. Sekarang saya dapat:

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

$ adb shell
error: insufficient permissions for device

Tidak lama sebelum menemukan kesalahan, saya telah menonaktifkan Media device (MTP), karena saya pikir saya tidak perlu menggunakan MTP. Namun, tampaknya USB debugging, atau setidaknya beberapa adbperintah, mengharuskan itu Media device (MTP)diaktifkan.

Untuk mengaktifkan Media device (MTP)Android 4.4, buka:

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

Ketika MTPdinonaktifkan, lsusbtampilkan yang berikut:

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

Setelah mengaktifkan MTP, lsusb menunjukkan yang berikut:

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

IdVendor dan idProduct melakukan perubahan, berdasarkan apakah MTPdiaktifkan atau dinonaktifkan atau tidak.

Saya bukan ahli Android, jadi mungkin saja perilaku di atas khusus untuk model ponsel khusus saya.

mpb
sumber
0

Bisa jadi karena alasan lain. Saya baru saja mendapatkan kesalahan ini ketika mencoba menginstal apk pada perangkat:

$ 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 -

Itu terjadi karena perangkat tidak siap pada mode yang benar. Perangkat itu berbagi koneksi 4G melalui USB.

Dapat diketahui seperti itu:

$ 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

Jadi itu cukup untuk menonaktifkan berbagi koneksi di telepon dan mulai lagi.

Secara umum, pastikan memiliki hasil berikut melalui adb deviceperintah sebelum mencoba mendorong file pada perangkat

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

Dalam kasus ini, tidak perlu mematikan atau memulai kembali server adb.

Ini mungkin akan menjadi situasi yang sama jika Anda telah memasang perangkat untuk transfer data melalui USB

Rémi B.
sumber
0

Saya memiliki masalah yang sama dan menerima izin yang tidak mencukupi. Apa yang saya lakukan adalah mencabut otoritas USB untuk laptop saya. Kemudian berhenti dan mulai debugging USB. Dicolokkan kembali ke laptop dan diberikan otoritas debugging usb.

Les Labbauf
sumber
1
Bisakah Anda memberikan informasi lebih lanjut tentang proses ini? Langkah demi langkah akan ideal, sehingga OP dapat mengikuti contoh Anda. :)
ThatGuy
0

Saya telah menghadapi masalah yang sama dan saya telah menyelesaikan ini dengan Menambahkan path your_android_sdk_path ke variabel lingkungan seperti

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

ini adalah keinginan Anda bagaimana Anda ingin menambahkan ini ke akun atau sistem Anda dengan mengedit file ~/.bashrcfile ini atau ~/.profile atau /etc/profile, /etc/bash.bashrc, or /etc/environmentjika Anda ingin menambahkan akses sistem.

dan kemudian buat tautan itu di bin

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

jika Anda telah menggunakan perangkat adb atau perintah apa pun maka bunuh dulu server seperti

adb kill-server

kemudian jalankan server seperti

adb start-server
adb devices

sekarang Anda dapat melihat perangkat Anda terdaftar dengan benar tanpa masalah

Naval Kishor Jha
sumber
0

Jawaban untuk masalah ini ada di sini: https://github.com/snowdream/51-android

Sebagai pengembang Android, saya sarankan Anda TIDAK menggunakan "sudo" untuk memaksa penggunaan adb di mana saja. Bukan itu yang harus kita lakukan. Ada aturan, kebijakan, dan batasan untuk keselamatan kita sendiri.

Pavlos Theodorou
sumber
0

Namun kemungkinan lain: tethering USB juga bertentangan dengan adb. Menonaktifkan itu memecahkan masalah bagi saya.

张 实 唯
sumber