2012-03-21 2 views
4

Я использую Eclipse CDT для написания приложения. Приложение использует третью часть API, который требует, чтобы работать как Судо, чтобы открыть сырые сокеты и т.д.Linux, Eclipse CDT run as su

В командной строке, я могу запустить программу что-то вроде

su 
./program 

Но в Eclipse CDT среда, это не сработает, если я нажму Ctrl + F11 (Run-> Run Last Launched), я думаю, причина в том, что мой Linux GUI логин не является су.

Есть ли в любом случае, что я могу работать как su (с паролем su) в Eclipse CDT?

Спасибо.

ответ

3

Некоторые из вариантов у вас есть:

  1. Run Eclipse в качестве корня. (Не очень хорошая идея, имхо, но самый простой)

  2. Временно разрешите пользователю использовать эту библиотеку. (Может быть беспорядочно)

  3. Создайте новую конфигурацию запуска и создайте сценарий для запуска исполняемого файла. (Вы должны вводить пароль каждый раз).

  4. (@Others, не стесняйтесь, чтобы добавить больше.)

0

Вы можете создать конфигурацию запуска, в котором вы используете Sudo, чтобы запустить приложение. Поскольку sudo не имеет доступа к терминалу, если вы запускаете его таким образом, для настройки среды запуска необходимо установить переменную среды SUDO_ASKPASS. Эти меры заключаются в следующем:

  1. Создание новой конфигурации Run (для полноты картины):

    1. В затмении, щелкните правой кнопкой исполняемый файл (например, в результате сборки приложения) чтобы открыть контекстное меню
    2. в контекстном меню выберите Run как - конфигурации>Run ...
    3. в Run configuratio ns Окно, которое появляется, щелкните правой кнопкой мыши Приложение C/C++ и нажмите Новый.
  2. Изменение конфигурации Run

    1. В Main вкладки конфигурации запуска, в замене C/C++ Application поля,
      /usr/bin/sudo.
    2. Перейдите на вкладку и введите путь к исполняемому файлу, например.
      ./bin/my-executable. Примечание: рабочий каталог sudo - это проект eclipse, поэтому путь должен быть относительно этого.
    3. Если для вашего исполняемого файла требуются любые аргументы командной строки, добавьте их, например.
      ./bin/my-executable arg1 arg2
  3. Добавление пути sudo попросить ваш пароль.

    1. Это самая сложная деталь. Поскольку sudo не имеет терминала (tty) в его распоряжении при запуске из (eclipse) gui, нам необходимо предоставить ему программу, которая может получить для нее пароль, то есть askpass. Для получения дополнительной информации см. this stackoverflow answer.
    2. В моей системе (Ubuntu 15.04) пакет ssh-askpass-gnome предоставляет программу прошивки, как я узнал, запустив dpkg --get-selections | grep askpass. Поскольку это все еще не давало мне исполняемого имени, я грубо заставлял поиск, запустив
      sudo find -name *askpass*. В любом случае, если такая утилита не установлена, найдите ее, используя ваш любимый менеджер пакетов.
    3. После того, как мы установили и/или разместили программу askpass, мы можем продолжить создание нашей конфигурации запуска в eclipse; перейдите к шагу 2.3
    4. В окне «Конфигурация запуска» выберите вкладку «Среда» и щелкните новыми.
    5. В появившемся диалоговом окне введите SUDO_ASKPASS как имя и полный путь к программе askpass как значение, например. /usr/bin/ssh-askpass.
    6. Press Применить, чтобы сохранить наши изменения.
  4. Выполнение конфигурации запуска
    1. В конфигурации Run окно, нажмите Run запустить наш исполняемый файл, используя только что созданную конфигурацию запуска.
    2. Появится всплывающее окно для ввода пароля sudo.
    3. После успешного ввода пароля наш исполняемый файл будет работать с привилегиями root.
Смежные вопросы