[RESOLVIDO] Linux - Erro de permissão ao executar .bash chamando-o pelo .jar

13 respostas
F

Olá boa tarde!

Meu cenário é este: tenho um .jar que irá chamar um arquivo bash no linux. Neste arquivo bash existem alguns comandos que deverão ser executados, porém, muitos deles não são por falta de permissão, pois, quando executo somente o bash com “sudo” o script roda normalmente.

Alguém sabe alguma forma de fazer com que todos os comandos que estão no bash sejam executados como root?

Segue o meu código para chamar o terminal:

String cmd[] = {"xterm", "-e", path ," ; le_exec"}; // o path é o local onde está o meu script, por exemplo: /home/joao/script.sh
Terminal.runCommand(cmd);

Segue o bash:

#!/bin/bash
#VARS
dirSist=/opt/ME/
#CODE
echo "Iniciando a instalação, informe a senha do sudo."
sudo rm -f /usr/share/applications/sistcd.desktop
sudo rm -R -f /etc/adobe/
sudo chmod 777 $dirSist
sudo cp -R -f ../linux_files $dirSist // Aqui  não executa por causa de permissão, porém está com sudo... estranho não?
sudo rm -f $dirSist"linux_files/posinstall.sh"
sudo rm -f $dirSist"linux_files/preinstall.sh"
sudo chmod 777 -R $dirSist
sudo echo "Preparação concluída."

Obrigado
Filipe Aguilar Santana

13 Respostas

D

O ideal seria ter um usuário com permissão de escrita no diretório desejado e então fazer este usuário executar o aplicativo.

[]'s

J

Esse caminho parcial na linha 9 está apontando para o lugar certo?

sudo cp -R -f ../linux_files $dirSist
F

[quote=juno.rr]Esse caminho parcial na linha 9 está apontando para o lugar certo?

sudo cp -R -f ../linux_files $dirSist

Está sim! É como falei antes, se executo somente o script pelo terminal com “sudo ./meuscript.sh” funciona normalmente.

Obrigado.

F

davidbuzatto:
O ideal seria ter um usuário com permissão de escrita no diretório desejado e então fazer este usuário executar o aplicativo.

[]'s

Obrigado pela dica.

F

Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

J

Filipe A.:
Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

Isso talvez você consiga com um projeto de instalador apropriado. A parte boa do linux é essa. Você precisa adicionar os usuários nos grupos corretos. Dessa maneira seu pc está protegido.

Talvez a melhor opção seja você empacotar sua aplicação em um pacote da plataforma: ex: programa.deb ou programa.rpm. Normalmente faço isso.

R

Filipe A.:
Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

Depende de onde e como voce quer instalar. Primeiro, unico usuario sem problemas de instalar algo é o root, fora ele, depende das permissoes dos diretorios. Defina onde serao instalados os files do seu jar, apos isso defina as permissoes do usuario nesses diretorios.

F

juliocbq:
Filipe A.:
Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

Isso talvez você consiga com um projeto de instalador apropriado. A parte boa do linux é essa. Você precisa adicionar os usuários nos grupos corretos. Dessa maneira seu pc está protegido.

Talvez a melhor opção seja você empacotar sua aplicação em um pacote da plataforma: ex: programa.deb ou programa.rpm. Normalmente faço isso.

Bom dia! Pensei nesta possibilidade de gerar um .deb, desta forma eu não teria problemas com permissão não é? Saberia de algum tutorial que ensina criar um .deb? Neste .deb eu teria apenas alguns arquivos da minha aplicação e alguns shell scripts. Obrigado.

F

rof20004:
Filipe A.:
Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

Depende de onde e como voce quer instalar. Primeiro, unico usuario sem problemas de instalar algo é o root, fora ele, depende das permissoes dos diretorios. Defina onde serao instalados os files do seu jar, apos isso defina as permissoes do usuario nesses diretorios.

Bom dia! Gostaria de instalar no diretório “opt”. Minha idéia inicial era criar um .jar para o usuário simplesmente clicar com o botão direito e escolher abrir com “Java”, e quando o .jar iniciar ele chamaria um script para liberar a pasta “opt” e fazer mais algumas operações parecidas, mas, parece que o script não está sendo executado totalmente como root. Obrigado.

R

Filipe A.:
rof20004:
Filipe A.:
Alguém teria uma idéia de como eu poderia instalar algo no linux atráves de um .jar sem ter problemas com permissões?

Obrigado.

Depende de onde e como voce quer instalar. Primeiro, unico usuario sem problemas de instalar algo é o root, fora ele, depende das permissoes dos diretorios. Defina onde serao instalados os files do seu jar, apos isso defina as permissoes do usuario nesses diretorios.

Bom dia! Gostaria de instalar no diretório “opt”. Minha idéia inicial era criar um .jar para o usuário simplesmente clicar com o botão direito e escolher abrir com “Java”, e quando o .jar iniciar ele chamaria um script para liberar a pasta “opt” e fazer mais algumas operações parecidas, mas, parece que o script não está sendo executado totalmente como root. Obrigado.

Eu ja criei um .deb, faz um tempo, segui o proprio tutorial do site do debian: http://www.debian.org/doc/manuals/maint-guide/

F

Novidades :smiley:

Aparentemente consegui resolver o problema, que não era bem de permissão como disse.

Testei executando o .jar pelo terminal com o comando “java -jar myApp.jar” e funcionou certinho liberou tudo que eu precisava, então percebi que só não funcionava quando eu executava o .jar clicando com o botão direito e escolhendo abrir com “Java” (e era exatamente isto que eu estava fazendo antes). Mas por quê?

Não sei bem o motivo, mas de alguma forma o código a seguir não funcionava quando o .jar era executado diretamente:

sudo cp -R -f ../linux_files $dirSist

Não era possível localizar a pasta “…/linux_files”… Então tive que especificar o caminho completo da seguinte forma:

DIR=$(cd $(dirname "$0"); pwd)
sudo cp -R -f "$DIR/linux_files" /opt

Assim, foi possível realizar o comando quando o “.jar” é executado diretamente.

Acho que não terei mais problemas…

Agradeço a ajuda de todos!
Filipe Santana.

R

Parabens xD

F

Valeu! :smiley:

Criado 7 de janeiro de 2013
Ultima resposta 8 de jan. de 2013
Respostas 13
Participantes 5