Versão curta: Qual é a maneira mais segura de permitir que o Java 7 seja executado no (com?) SELinux?
Versão longa:
Desculpe antecipadamente se eu usar terminologia incorreta. Na verdade, sou apenas um desenvolvedor Java com poucas habilidades em Linux.
Acabei de instalar o Java 7 no CentOS, versão 5.3 (Final), que aparentemente possui o Security Enhanced Linux. Depois que a instalação foi concluída (que eu "instalei" descompactando o arquivo tar.gz do Oracle /usr/java/jdk/jdk1.7.0_25
), executei java -version
e obtive este erro:
Error: dl failure on line 864
Error: failed /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so,
because /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so:
cannot restore segment prot after reloc: Permission denied`
Encontrei alguns artigos afirmando que isso pode ser devido ao SELinux e para tentar setenforce 0
ver se o problema desaparece. Eu executei esse comando e o Java funcionou. Mas esses mesmos artigos dizem que deixar setenforce 0
um host conectado à Internet é perigoso e meu host está conectado à Internet.
Existem outros artigos que sugerem essa próxima abordagem, mas também dizem que pode ser perigosa, por isso ainda não a tentei.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... no comando acima, o caminho no final do comando é substituído pelo caminho do meu JDK.
O que não consigo encontrar é algo "oficial" (que pode significar muitas coisas) sobre como executar o Java 7 no (com?) SELinux com segurança. Alguém tem alguma informação para mim?
Editar: descobri um artigo que se referia à edição /etc/selinux/config
. Eu configurei como mostrado na amostra abaixo. Isso permite que o Java seja executado, mas presumo que agora tenho algumas falhas de segurança.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
chcon
solução parece razoável. A última solução não é muito diferentesetenforce 0
.Respostas:
Limpe a instalação atual
Faça o download do arquivo RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )
o resto será cuidado.
fonte