Программа подключается через USB, только если вызывается с помощью sudo

Я скачал пакет JLink и распаковал его в /home/mkru/ARM/JLink_Linux_V498a_x86_64. Затем я добавил этот путь к моей переменной PATH. Когда я пытаюсь выполнить JLinkExe, я получаю следующую ошибку:

Can not connect to J-Link via USB.

Когда я пытаюсь выполнить его с помощью sudo, я получаю:

sudo: JLinkExe: command not found

Единственный способ выполнить его с успехом - :

  1. , чтобы изменить каталог с помощью cd /home/mkru/ARM/JLink_Linux_V498a_x86_64
  2. , затем запустите sudo ./JLinkExe

Почему это работает так и как я могу изменить это поведение ? Я хотел бы использовать JLinkExe без sudo и без необходимости находиться в этом конкретном каталоге.

1
задан 3 April 2015 в 15:16

2 ответа

Определенные функции требуют корневых повышений. Взаимодействие USB низкого уровня является одним из них, я испытал то же, когда я хотел использовать свой робот LEGO NXT.

, В первую очередь, если программа только работает с sudo, отодвиньте его от своего дома. Я предлагаю переместить его в /opt/jlink/ или что-то как этот

, Чтобы продолжать иметь необходимость к cd к исполняемому каталогу, добавляю его к глобальной ванне в /etc/bash.bashrc вместо Вашего дома bashrc. Кроме того, определите псевдоним, который автоматически выполняет программу с корневыми повышениями. Дополнения к файлу могут быть похожими на это:

export PATH=$PATH:/opt/jlink    #or wherever you moved it
alias JLinkExe='sudo /opt/jlink/JLinkExe'

Теперь можно выполнить программу только путем ввода JLinkExe (Вы могли даже присвоить более легко вводимое имя в псевдониме, например, просто alias jlink='sudo /opt/jlink/JLinkExe').

Однако Вас все еще попросят Вашего пароля, поскольку программа все еще требует корневого повышения. Для хитрости этого можно создать запись в установке sudo. Для этого выполните sudo visudo и добавьте эту строку до конца файла

mkru ALL=(ALL) NOPASSWD: /opt/jlink/JLinkExe

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

<час>

ПРИМЕЧАНИЕ: , Если программа имеет GUI, создайте псевдоним как alias jlink='sudo gksudo /opt/jlink/JLinkExe', чтобы препятствовать тому, чтобы она портила владения в Вашем корневом каталоге.

2
ответ дан 3 April 2015 в 15:16

Существует немного лучшее решение. Просто скопируйте 99-jlink.rules файл (часть загруженного пакета) в /etc/udev/rules.d/, и это должно работать как очарование.

1
ответ дан 3 April 2015 в 15:16

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

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