Вопрос или проблема
У меня есть это в моем .bashrc
файле
export ANDROID_HOME=$HOME/Android
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
Я могу запускать программу в любом месте внутри заданного каталога:
adb devices // но устройство не отображается
Поскольку есть проблема с привилегиями, команда adb требует sudo
, чтобы отображать результаты:
sudo adb devices // команда не найдена
Я получил команда не найдена
. Однако я могу выполнить команду, перейдя в каталог, где находится adb
, и получить правильные результаты.
Мои вопросы:
- Как я могу настроить
sudo
, чтобы он находилadb
вcmdline-tools/latest/bin
без смены каталога - Как я могу выполнить команду
adb devices
безsudo
и все равно получить результаты.
Ответ или решение
Как запустить программу с привилегиями su без использования sudo
Введение
Ситуация, описанная вами, связана с необходимостью использования команды adb
(Android Debug Bridge) для взаимодействия с Android-устройствами. При этом вы столкнулись с проблемами, связанными с правами доступа и окружением исполнения команды. В этом ответе мы рассмотрим два ваших вопроса: как сделать так, чтобы команда sudo
могла найти adb
в заданной директории, и как запустить adb devices
без использования sudo
, чтобы получать необходимые результаты.
1. Как сделать так, чтобы sudo
находил adb
Когда вы вызываете sudo
, среда окружения по умолчанию не наследуется, и PATH
может не содержать пользовательские директории. Для решения этой проблемы можно изменить поведение sudo
, чтобы оно знало, где искать ваши команды. Сделайте следующие шаги:
-
Измените файл конфигурации sudoers:
Откройте файл конфигурации sudoers с помощью командыvisudo
(это лучший способ, так как он проверяет синтаксис перед сохранением):sudo visudo
Найдите строку, начинающуюся с
Defaults
, и добавьте к ней:Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$HOME/Android/cmdline-tools/latest/bin"
Это добавит директорию
adb
в путь, которыйsudo
использует при выполнении команд. -
Проверьте изменение:
Теперь вы можете попробовать следующую команду:sudo adb devices
adb
должен корректно выполниться.
2. Запустить adb devices
без использования sudo
Для того чтобы выполнить команду adb devices
без привилегий sudo
, необходимо убедиться, что у текущего пользователя есть доступ к нужным ресурсам. Причина, по которой adb
требует sudo
, обычно связана с правами доступа к устройствам в /dev
.
-
Добавление пользователя в группу
plugdev
:
Убедитесь, что ваш пользователь добавлен в группуplugdev
, которая обычно предоставляет доступ к устройствам:sudo usermod -aG plugdev $USER
После этого необходимо завершить текущую сессию и заново войти в систему, чтобы изменения вступили в силу.
-
Запуск
adb
с необходимыми правами:
Попробуйте выполнить командуadb devices
снова после выхода и входа в систему:adb devices
Убедитесь, что ваше устройство подключено к компьютеру и включен режим отладки.
Заключение
Таким образом, вы можете обеспечить доступ к команде adb
и избежать необходимости использования sudo
, что сделает работу с Android-устройствами более удобной и безопасной. Обязательно следуйте предложенным рекомендациям для настройки sudo
и управления правами доступа. Если у вас остались вопросы или требуется дополнительная помощь, не стесняйтесь обращаться!