adb no permissions on Ubuntu 17.04

Это вызвано ошибкой регрессии в Startup Disk Creator, которая превратилась в создателя CD-ROM. С 16 апреля они записывали USB-накопитель как CD-ROM iso9660 вместо USB-накопителя. См. Мой ответ здесь для исправления.

Ошибка загрузки блока запуска автозапуска USB

25
задан 26 April 2017 в 19:29

111 ответов

Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.

23
ответ дан 6 August 2018 в 22:29

Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.

Найдите ваше устройство в lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Точка интереса в этом случае:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Проверьте соответствующий файл устройства

$ ls -l /dev/bus/usb/001/006

Вероятно, вы увидите что-то вроде

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.

Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules - для добавления устройства в группу plugdev, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).

Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik

15
ответ дан 6 August 2018 в 22:29

Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb с консоли.

Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.

Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.

Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.

2
ответ дан 6 August 2018 в 22:29

Сообщество GitHub поддерживает udev-rules

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Это самый полный список правил udev, который я видел до сих пор, даже больше, чем рекомендуемый в настоящий момент sudo apt-get install android-tools-adb в официальной документации , попробуйте.

0
ответ дан 9 August 2018 в 02:55

Пожалуйста, НЕ ИСПОЛЬЗУЙТЕ решения, предлагающие использовать sudo (sudo adb start-server)! Это запустить adb как root (administrator), и он НЕ должен работать так! Это обходное решение BAD!

Все, что работает от имени root, может делать что-либо в вашей системе, если оно создает или изменяет файл, может изменить его разрешение, которое будет использоваться только root. Опять же, DO NOT!

Правильная вещь - настроить вашу систему, чтобы ПОЛЬЗОВАТЕЛЬ имел разрешение, проверил это руководство , я написал о том, как это сделать правильно .

0
ответ дан 9 August 2018 в 02:55

Вам необходимо предоставить разрешение на Android-устройство. Перейдите в Настройки> Параметры разработчика. Попробуйте отключить отладку Usb и снова включить его. Удалите кабель и снова подключите его. Также попробуйте удалить все сохраненные авторизации из параметров разработчика. Теперь он должен запросить разрешение на отладку с помощью подсказки на вашем телефоне. Примите это.

2
ответ дан 9 August 2018 в 02:55

Перейдите в Настройки >> Обслуживание >> Хранение. Затем проверьте меню верхнего левого меню и щелкните по USB-соединению компьютера, затем переключитесь на медиа-устройство (MTP).

1
ответ дан 9 August 2018 в 02:55

Я не знаю, почему это работает, но это единственное решение, которое сработало для меня

. Найдите, где работает adb (если вы похожи на меня, у вас установлено несколько версий). Имейте в виду, что такие инструменты, как реакция native, могут решить использовать случайные другие версии, чтобы сделать вашу жизнь сложнее. Для меня это ~/Android/Sdk/platform-tools/adb. Итак, я запустил:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Android-инструменты очень раздражают.

0
ответ дан 9 August 2018 в 02:55

Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.

23
ответ дан 9 August 2018 в 02:55

Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.

Найдите ваше устройство в lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Точка интереса в этом случае:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Проверьте соответствующий файл устройства

$ ls -l /dev/bus/usb/001/006

Вероятно, вы увидите что-то вроде

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.

Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules - для добавления устройства в группу plugdev, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).

Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik

15
ответ дан 9 August 2018 в 02:55

Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb с консоли.

Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.

Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.

Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.

2
ответ дан 9 August 2018 в 02:55

Сообщество GitHub поддерживает udev-rules

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Это самый полный список правил udev, который я видел до сих пор, даже больше, чем рекомендуемый в настоящий момент sudo apt-get install android-tools-adb в официальной документации , попробуйте.

0
ответ дан 14 August 2018 в 21:10

Пожалуйста, НЕ ИСПОЛЬЗУЙТЕ решения, предлагающие использовать sudo (sudo adb start-server)! Это запустить adb как root (administrator), и он НЕ должен работать так! Это обходное решение BAD!

Все, что работает от имени root, может делать что-либо в вашей системе, если оно создает или изменяет файл, может изменить его разрешение, которое будет использоваться только root. Опять же, DO NOT!

Правильная вещь - настроить вашу систему, чтобы ПОЛЬЗОВАТЕЛЬ имел разрешение, проверил это руководство , я написал о том, как это сделать правильно .

0
ответ дан 14 August 2018 в 21:10

Вам необходимо предоставить разрешение на Android-устройство. Перейдите в Настройки> Параметры разработчика. Попробуйте отключить отладку Usb и снова включить его. Удалите кабель и снова подключите его. Также попробуйте удалить все сохраненные авторизации из параметров разработчика. Теперь он должен запросить разрешение на отладку с помощью подсказки на вашем телефоне. Примите это.

2
ответ дан 14 August 2018 в 21:10
  • 1
    не работает, я уже пробовал, если это имеет значение, я использую android 7.1.2, а на другом устройстве, работающем на 7.1.1, это действительно сработало. – Nadav Tasher 24 April 2017 в 13:17
  • 2
    Пробовал удалить все разрешения хоста? После этого перезагрузились? – Droidzone 24 April 2017 в 13:17
  • 3
    не перезагрузился. я попробую это и скажу вам, если это сработает. – Nadav Tasher 24 April 2017 в 13:22
  • 4
    Если это сработает, вы можете принять ответ. – Droidzone 26 April 2017 в 16:06
  • 5
    сегодня плохо проверить – Nadav Tasher 26 April 2017 в 16:18

Перейдите в Настройки >> Обслуживание >> Хранение. Затем проверьте меню верхнего левого меню и щелкните по USB-соединению компьютера, затем переключитесь на медиа-устройство (MTP).

1
ответ дан 14 August 2018 в 21:10

Я не знаю, почему это работает, но это единственное решение, которое сработало для меня

. Найдите, где работает adb (если вы похожи на меня, у вас установлено несколько версий). Имейте в виду, что такие инструменты, как реакция native, могут решить использовать случайные другие версии, чтобы сделать вашу жизнь сложнее. Для меня это ~/Android/Sdk/platform-tools/adb. Итак, я запустил:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Android-инструменты очень раздражают.

0
ответ дан 14 August 2018 в 21:10

Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.

25
ответ дан 14 August 2018 в 21:10
  • 1
    То же самое здесь, я изменил правила Udev без каких-либо результатов, изменил USB на общий доступ к файлам и presto. В предыдущей версии ubuntu устройство не требовало никаких правил udev или определенных режимов USB. – Fco P. 22 May 2017 в 09:31
  • 2
    Это должен быть правильный ответ (не сервер повторной загрузки adb) – RumburaK 7 March 2018 в 14:50
  • 3
    Правильный ответ для меня. – Alvaro Gutierrez Perez 28 April 2018 в 09:07
  • 4
    не должен быть правильным ответом, но работал. – Uzumaki D. Ichigo 12 August 2018 в 13:32

Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.

Найдите ваше устройство в lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Точка интереса в этом случае:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Проверьте соответствующий файл устройства

$ ls -l /dev/bus/usb/001/006

Вероятно, вы увидите что-то вроде

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.

Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules - для добавления устройства в группу plugdev, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).

Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik

15
ответ дан 14 August 2018 в 21:10
  • 1
    Этот ответ решил мою проблему. Отлично, спасибо. – alexmeia 3 April 2018 в 18:15
  • 2
    Спасибо @Paul Это помогло мне. Хорошо объяснил причину. Я думаю, что также требуется перезапуск службы. – Gagan 18 April 2018 в 13:16
  • 3
    это, безусловно, правильное решение, если вы не хотите использовать sudo для вещей, которые вам не нужно использовать sudo для – aholt 22 June 2018 в 17:02
  • 4
    Это должен быть принятый ответ, так как это правильный ответ correct . Самый высокий рейтинг - это всего лишь обходной путь. – Joel Cross 10 September 2018 в 00:57
  • 5

Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb с консоли.

Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.

Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.

Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.

2
ответ дан 14 August 2018 в 21:10
  • 1
    Большое вам спасибо, хотя это была ошибка, исправленная системным обновлением (по телефону) и обновлением студии. – Nadav Tasher 17 August 2017 в 23:08

Изменение режима USB с Телефон сделал трюк для меня. (Я установил его в Передача файлов .)

1
ответ дан 16 August 2018 в 11:48

Это не сработало для меня после того, как я добавил себя в группу plugdev и перезагрузил машину, чтобы убедиться, что изменение вступает в силу во всех сеансах моей оболочки. Затем я обнаружил, что в файле /etc/udev/rules.d нет файла 51-android.rules, и для устранения проблемы пришлось сделать следующее:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

Мне также пришлось отключить и снова подключить мое Android-устройство.

1
ответ дан 8 October 2018 в 01:39

Другие вопросы по тегам:

Похожие вопросы: