Versión corta: ¿Cuál es la forma más segura de permitir que Java 7 se ejecute en (con?) SELinux?
Versión larga:
Lo siento de antemano si uso una terminología incorrecta. Realmente solo soy un desarrollador de Java con un pequeño conocimiento de las habilidades de Linux.
Acabo de instalar Java 7 en CentOS versión 5.3 (Final) que aparentemente tiene Security Enhanced Linux. Una vez completada la instalación (que "instalé" descomprimiendo el archivo tar.gz de Oracle en /usr/java/jdk/jdk1.7.0_25
), ejecuté java -version
y obtuve este error:
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`
Encontré algunos artículos que indican que esto puede deberse a SELinux e intentar setenforce 0
ver si el problema desaparece. Ejecuté ese comando y Java funcionó. Pero estos mismos artículos dicen que salir setenforce 0
de un host conectado a Internet es peligroso, y mi host está conectado a Internet.
Hay otros artículos que sugieren este próximo enfoque, pero también dicen que puede ser peligroso, por lo que aún no lo he probado.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... en el comando anterior, la ruta al final del comando se reemplaza con la ruta de mi JDK.
Lo que no puedo encontrar es algo "oficial" (que puede significar muchas cosas) sobre cómo ejecutar Java 7 en (¿con?) SELinux de forma segura. ¿Alguien tiene alguna información para mí?
Editar: descubrí un artículo que se refería a la edición /etc/selinux/config
. He configurado como se muestra en la muestra a continuación. Esto permite que Java se ejecute, pero supongo que ahora tengo algunos agujeros de seguridad.
# 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
solución parece razonable. La última solución no es muy diferente asetenforce 0
.