Краткая версия: Какой самый безопасный способ разрешить запуск Java 7 на (с?) SELinux?
Длинная версия:
Извините заранее, если я использую неправильную терминологию. Я на самом деле просто Java-разработчик со слабым знанием Linux.
Я только что установил Java 7 в выпуске CentOS 5.3 (Final), который, по-видимому, имеет систему Enhanced Linux. После завершения установки (которую я «установил», разархивировав файл tar.gz из Oracle в /usr/java/jdk/jdk1.7.0_25
), я запустил java -version
и получил эту ошибку:
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`
Я нашел несколько статей о том, что это может быть связано с SELinux, и попытался setenforce 0
выяснить, исчезла ли проблема. Я выполнил эту команду, и Java сработал. Но в этих же статьях говорится, что выход setenforce 0
на хост, подключенный к Интернету, опасен, и мой хост подключен к Интернету.
Есть другие статьи, которые предлагают этот следующий подход, но также говорят, что он может быть опасным, поэтому я еще не пробовал.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
... в приведенной выше команде путь в конце команды заменяется путем моего JDK.
Что я не могу найти, так это «официального» (что может означать много вещей) о том, как безопасно запускать Java 7 на (с?) SELinux. У кого-нибудь есть информация для меня?
Изменить: я обнаружил статью, которая ссылается на редактирование /etc/selinux/config
. Я установил, как показано в примере ниже. Это позволяет Java работать, но я предполагаю, что теперь у меня есть некоторые дыры в безопасности.
# 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
Решение выглядит разумным. Последнее решение не сильно отличается отsetenforce 0
.