Какой безопасный способ разрешить запуск Java 7 на SELinux

9

Краткая версия: Какой самый безопасный способ разрешить запуск 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.
Иордания
Можете ли вы просто установить его в свой домашний каталог?
Турбьёрн Равн Андерсен
@ ThorbjørnRavnAndersen: Ну, я полагаю, что мог бы, но он работает как демон, сервер Tomcat, если быть более конкретным, и почему-то немного неаккуратно работать на сервере Tomcat из моего домашнего каталога.
Джон Фицпатрик,
В основном это дуплет stackoverflow.com/q/14723474/560648 .
Гонки легкости на орбите

Ответы:

2
  1. Очистить текущую установку

  2. Загрузите файл RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

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

Остальные позаботятся.

user44441
источник
Спасибо. Можете ли вы уточнить «Очистить текущую установку»? Вы имеете в виду удалить то, что я установил?
Джон Фицпатрик
Да все верно! Удалите текущую установку Oracle Java. Пожалуйста, следуйте "Самораспаковывающемуся удалению файла" java.com/en/download/help/linux_uninstall.xml#self
user44441
4
Почему это решение?
Гонки легкости на орбите
Если @LightnessRacesinOrbit не знает, почему это правильное решение, прочитайте, что такое SELinux . В основном скрипт RPM устанавливает правильные разрешения ACL и т. Д.
eyoung100
3
@ eyoung100: Нет, я хочу сказать, что этот ответ ничего не объясняет. В нем должно быть объяснено, почему удаление и замена установки должны решить проблему, а также приведены шаги для этого. Также я спрашиваю, потому что я установил из RPM, но все еще получил проблему.
Гонки легкости на орбите