Versione breve: qual è il modo più sicuro per consentire l'esecuzione di Java 7 su (con?) SELinux?
Versione lunga:
Scusatemi in anticipo se utilizzo una terminologia errata. Sono davvero solo uno sviluppatore Java con una scarsa conoscenza delle abilità di Linux.
Ho appena installato Java 7 su CentOS versione 5.3 (Final) che apparentemente ha Security Enhanced Linux. Dopo che l'installazione è stata completata (che ho "installato" decomprimendo il file tar.gz da Oracle in /usr/java/jdk/jdk1.7.0_25
), ho eseguito java -version
e ho ricevuto questo errore:
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`
Ho trovato alcuni articoli che affermano che ciò può essere dovuto a SELinux e per provare a setenforce 0
vedere se il problema scompare. Ho eseguito quel comando e Java ha funzionato. Ma questi stessi articoli affermano che lasciare setenforce 0
su un host connesso a Internet è pericoloso e il mio host è connesso a Internet.
Ci sono altri articoli che suggeriscono questo prossimo approccio, ma dicono anche che può essere pericoloso, quindi non l'ho ancora provato.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... nel comando sopra il percorso alla fine del comando viene sostituito con il percorso del mio JDK.
Quello che non riesco a trovare è qualcosa di "ufficiale" (che può significare molte cose) su come eseguire Java 7 su (con?) SELinux in modo sicuro. Qualcuno ha qualche informazione per me?
Modifica: ho scoperto un articolo che si riferiva alla modifica /etc/selinux/config
. Ho impostato come mostrato nell'esempio seguente. Ciò consente l'esecuzione di Java, ma suppongo che ora ho alcune falle di sicurezza.
# 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
soluzione sembra ragionevole. L'ultima soluzione non è molto diversa dasetenforce 0
.