Как запустить программу с привилегиями su, не используя sudo?

Вопрос или проблема

У меня есть это в моем .bashrc файле

export ANDROID_HOME=$HOME/Android
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin

Я могу запускать программу в любом месте внутри заданного каталога:

adb devices // но устройство не отображается

Поскольку есть проблема с привилегиями, команда adb требует sudo, чтобы отображать результаты:

sudo adb devices // команда не найдена

Я получил команда не найдена. Однако я могу выполнить команду, перейдя в каталог, где находится adb, и получить правильные результаты.

Мои вопросы:

  1. Как я могу настроить sudo, чтобы он находил adb в cmdline-tools/latest/bin без смены каталога
  2. Как я могу выполнить команду adb devices без sudo и все равно получить результаты.

Ответ или решение

Как запустить программу с привилегиями su без использования sudo

Введение

Ситуация, описанная вами, связана с необходимостью использования команды adb (Android Debug Bridge) для взаимодействия с Android-устройствами. При этом вы столкнулись с проблемами, связанными с правами доступа и окружением исполнения команды. В этом ответе мы рассмотрим два ваших вопроса: как сделать так, чтобы команда sudo могла найти adb в заданной директории, и как запустить adb devices без использования sudo, чтобы получать необходимые результаты.

1. Как сделать так, чтобы sudo находил adb

Когда вы вызываете sudo, среда окружения по умолчанию не наследуется, и PATH может не содержать пользовательские директории. Для решения этой проблемы можно изменить поведение sudo, чтобы оно знало, где искать ваши команды. Сделайте следующие шаги:

  1. Измените файл конфигурации 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 использует при выполнении команд.

  2. Проверьте изменение:
    Теперь вы можете попробовать следующую команду:

    sudo adb devices

    adb должен корректно выполниться.

2. Запустить adb devices без использования sudo

Для того чтобы выполнить команду adb devices без привилегий sudo, необходимо убедиться, что у текущего пользователя есть доступ к нужным ресурсам. Причина, по которой adb требует sudo, обычно связана с правами доступа к устройствам в /dev.

  1. Добавление пользователя в группу plugdev:
    Убедитесь, что ваш пользователь добавлен в группу plugdev, которая обычно предоставляет доступ к устройствам:

    sudo usermod -aG plugdev $USER

    После этого необходимо завершить текущую сессию и заново войти в систему, чтобы изменения вступили в силу.

  2. Запуск adb с необходимыми правами:
    Попробуйте выполнить команду adb devices снова после выхода и входа в систему:

    adb devices

    Убедитесь, что ваше устройство подключено к компьютеру и включен режим отладки.

Заключение

Таким образом, вы можете обеспечить доступ к команде adb и избежать необходимости использования sudo, что сделает работу с Android-устройствами более удобной и безопасной. Обязательно следуйте предложенным рекомендациям для настройки sudo и управления правами доступа. Если у вас остались вопросы или требуется дополнительная помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...