Como dar um clique duplo no Java Jar e iniciá-lo sem sudo

1

Minha situação atual:

  • meu pc está executando o Xubuntu 16.04
  • um aplicativo java jar no Xubunutu desktop
  • uma impressora térmica USB (Modelo: DigiPOS 920) está conectada via USB ao meu pc
  • o aplicativo java fala com a impressora térmica via Java-POS e não via CUPS

Minha pergunta:

Eu posso imprimir, mas somente se eu iniciei meu aplicativo pelo terminal como su. Se eu apenas clicar duas vezes no arquivo jar, posso iniciar o aplicativo, mas ele não encontrará a impressora, portanto, não haverá impressão. Guys 'n Girls, por favor, me dê uma dica sobre:

How can I start the java jar App without the need for sudo? Or is there even a better approach for this case?

    
por Chiggiddi 28.05.2016 / 01:29

2 respostas

0
  1. Adicione seu usuário a dialout group, pois esse grupo tem permissão para ler / gravar dispositivos seriais tty* ou serial* .

    sudo usermod -a -G dialout $USER
    

    Referência: Como eu permito acesso não-root a / ttyUSB0 em 12.04?

    Se tiver interface de porta paralela lp* (como no caso atual do DigiPOS 920), adicione seu usuário ao grupo lp .

    sudo usermod -a -G lp $USER
    
  2. Logout / Login

Mais instruções: se não funcionou, continue com os passos abaixo

  1. Executar watch lsusb , plug & desconecte a impressora, edite a pergunta e adicione a linha de informações da impressora conforme mostrado na saída.

  2. Executar

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

    Plug & desconecte a impressora, edite a pergunta e adicione o nó do dispositivo criado quando você conecta a impressora.

  3. Adicione a saída de:

    ls -l /dev/...
    udevadm info /dev/...
    udevadm info -a /dev/...
    
  4. Teste rápido, altere a permissão

    sudo chmod +rw /dev/tty...
    

    Experimente o seu programa sem sudo , funciona?

  5. Agora, devemos adicionar uma regra do udev para torná-la permanente.

por user.dz 06.06.2016 / 22:37
0

Você tem 4 opções menos seguras para mais seguras:

  1. Execute java como raiz por:

    a. Marcando java como raiz setuid. OU

    b. Usando sudo para dizer que o aplicativo pode ser executado como root sem uma senha. Veja a opção NOPASSWD em /etc/sudoers ; ou

  2. Conceda a todos os usuários acesso ao dispositivo USB mencionado:

    a. Marcando o dispositivo como leitura-escrita por todos; ou

    b. Marcando o dispositivo como root setuid.

Depende como o aplicativo está acessando o dispositivo para saber qual opção funcionará. Eu recomendo tentar a opção 2a primeiro e subir na lista.

Note que ao marcar qualquer coisa como root setuid, você precisa encontrar o binário real /usr/lib/java-....-/bin/java . setuid-root-ing o link simbólico "alternatives" não vai funcionar.

    
por tudor 28.05.2016 / 01:43