Как дважды щелкнуть Java Jar и запустить его без sudo

Моя текущая ситуация:

  • на моем компьютере запущено Xubuntu 16.04
  • приложение java jar на рабочем столе Xubunutu
  • термопринтер USB (модель: DigiPOS 920 ) подключен через USB к моему компьютеру
  • приложение java общается с термопринтером через Java-POS, а не через CUPS

Мой вопрос:

Я могу печатать, но только если я запустил свое приложение через терминал как su. Если я просто дважды щелкну по файлу jar, я могу запустить приложение, но оно не найдет принтер, поэтому не будет печатать. Guys 'n Girls, пожалуйста, дайте мне подсказку о:

Как я могу запустить приложение java jar без необходимости sudo? Или есть даже лучший подход для этого случая?

1
задан 2 June 2016 в 00:29

2 ответа

  1. Добавьте своего пользователя к dialout у группы как эта группа есть разрешение к последовательным устройствам чтения-записи tty* или serial*.

    sudo usermod -a -G dialout $USER
    

    Ссылка: Как я предоставляю некорневой доступ к/ttyUSB0 на 12,04?

    Если это имеет интерфейс параллельного порта lp* (как текущий случай с DigiPOS 920), добавляет Ваш пользователь к lp группа.

    sudo usermod -a -G lp $USER
    
  2. Выход из системы/Вход в систему


Дальнейшие инструкции: Если это не работало, продолжают шаги ниже

  1. Выполненный watch lsusb, включите и отключите принтер, отредактируйте вопрос и добавьте строку информации о принтере как показанный в выводе.

  2. Выполненный

    watch "find /dev/ -iregex '.*lp.*' -printf '%p '; find /dev/ -iregex '.*tty.*' -printf '%p '"
    

    Включите и отключите принтер, отредактируйте вопрос и добавьте узел устройства, который создал, когда Вы включаете принтер.

  3. Добавьте вывод:

    ls -l /dev/...
    udevadm info /dev/...
    udevadm info -a /dev/...
    
  4. Быстрый тест, разрешение изменения

    sudo chmod +rw /dev/tty...
    

    Попробуйте свою программу без sudo, это работает?

  5. Теперь, мы должны добавить правило udev сделать это постоянным.

0
ответ дан 2 June 2016 в 10:29

У Вас есть 4 опции от наименее безопасного до самого безопасного:

  1. Выполнение java как корень:

    a. Отмечание java как setuid корень. ИЛИ

    b. Используя sudo, чтобы сказать, что приложение может быть запущено как корень без пароля. См. NOPASSWD опция в /etc/sudoers; или

  2. Предоставляют весь пользовательский доступ к USB-устройству, упомянул:

    a. Путем маркировки устройства как чтение-запись всеми; или

    b. Путем маркировки устройства как setuid корень.

Это зависит , как приложение получает доступ к устройству, относительно которого будет работать опция. Я рекомендую пробовать опцию 2a сначала и проложить себе путь список.

Примечание, что при маркировке чего-либо как setuid корень, необходимо найти фактический двоичный файл /usr/lib/java-....-/bin/java. setuid-root-ing символьная ссылка "альтернатив" не собирается работать.

0
ответ дан 2 June 2016 в 10:29

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

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