Qual è il modo sicuro per consentire l'esecuzione di Java 7 su SELinux


9

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 -versione 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 0vedere se il problema scompare. Ho eseguito quel comando e Java ha funzionato. Ma questi stessi articoli affermano che lasciare setenforce 0su 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

La chconsoluzione sembra ragionevole. L'ultima soluzione non è molto diversa da setenforce 0.
Giordania,

Puoi semplicemente installarlo nella tua home directory invece?
Thorbjørn Ravn Andersen,

@ ThorbjørnRavnAndersen: Beh, suppongo di poterlo fare, ma funziona come un demone, un server Tomcat per essere più specifico, e in qualche modo sembra un po 'sciatto avere un server Tomcat in esecuzione dalla mia directory home.
John Fitzpatrick,

Risposte:


2
  1. Pulisci l'installazione corrente

  2. Scarica il file RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

    yum -y localinstall /path/to/downloaded-java.rpm
    

il resto sarà curato.


Grazie. Puoi approfondire "Pulisci l'installazione corrente"? Vuoi dire rimuovere ciò che ho installato?
John Fitzpatrick,

Sì, è giusto! Rimuovi la tua attuale installazione di Oracle Java. Seguire "Disinstallazione file autoestraente" java.com/en/download/help/linux_uninstall.xml#self
user44441

4
Perché questa è la soluzione?
Razze di leggerezza in orbita,

Se @LightnessRacesinOrbit non sa perché questa sia la soluzione corretta, leggi su cos'è SELinux . Fondamentalmente lo script RPM imposta le autorizzazioni appropriate per gli ACL, ecc.
eyoung100,

3
@ eyoung100: No, il mio punto è che questa risposta non spiega nulla. Dovrebbe spiegare perché la rimozione e la sostituzione dell'installazione dovrebbero risolvere il problema, oltre a fornire i passaggi per farlo. Inoltre chiedo perché ho installato da RPM ma ho ancora il problema.
Razze di leggerezza in orbita,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.