Version courte: Quel est le moyen le plus sûr pour permettre à Java 7 de s'exécuter sur (avec?) SELinux?
Version longue:
Désolé à l'avance si j'utilise une terminologie incorrecte. Je suis vraiment juste un développeur Java avec une maigre poignée de compétences Linux.
Je viens d'installer Java 7 sur la version 5.3 (finale) de CentOS qui a apparemment une sécurité renforcée Linux. Une fois l'installation terminée (que j'ai "installée" en décompressant le fichier tar.gz d'Oracle /usr/java/jdk/jdk1.7.0_25
), j'ai couru java -version
et j'ai eu cette erreur:
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`
J'ai trouvé quelques articles indiquant que cela peut être dû à SELinux et pour essayer de setenforce 0
voir si le problème disparaît. J'ai exécuté cette commande et Java a fonctionné. Mais ces mêmes articles disent que partir setenforce 0
sur un hôte connecté à Internet est dangereux et que mon hôte est connecté à Internet.
Il y a d'autres articles qui suggèrent cette prochaine approche, mais disent aussi que cela peut être dangereux, donc je ne l'ai pas encore essayé.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... dans la commande ci-dessus, le chemin à la fin de la commande est remplacé par le chemin de mon JDK.
Ce que je ne trouve pas, c'est quelque chose d '"officiel" (ce qui peut signifier beaucoup de choses) sur la façon d'exécuter Java 7 sur (avec?) SELinux en toute sécurité. Quelqu'un a-t-il des informations pour moi?
Edit: j'ai découvert un article qui faisait référence à l'édition /etc/selinux/config
. J'ai réglé comme indiqué dans l'exemple ci-dessous. Cela permet à Java de fonctionner mais je suppose que j'ai maintenant des failles de sécurité.
# 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
solution semble raisonnable. La dernière solution n'est pas très différente de cellesetenforce 0
.