Який безпечний спосіб дозволити Java 7 працювати на SELinux


9

Коротка версія: який найбезпечніший спосіб дозволити запуску Java 7 на (з?) SELinux?

Довга версія:

Вибачте заздалегідь, якщо я використовую неправильну термінологію. Я справді просто розробник Java, який мізерно сприймає навички Linux.

Щойно я встановив Java 7 на версію 5.3 (Final) версії CentOS (Final), яка, мабуть, має Linux 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ørn Ravn Andersen

@ ThorbjørnRavnAndersen: Ну, я думаю, я міг би, але він працює як демон, сервер Tomcat, щоб бути більш конкретним, і мені якось непомітно мати сервер Tomcat, який працює з мого домашнього каталогу.
Джон Фіцпатрік

Відповіді:


2
  1. Очистіть поточну установку

  2. Завантажте файл RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

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

відпочинок подбає.


Дякую. Чи можете ви детальніше розповісти про "Очищення поточної установки"? Ви маєте на увазі видалити те, що я встановив?
Джон Фіцпатрік

Так, правильно! Видаліть поточну установку Oracle Java. Дотримуйтесь "Видалення файлу, що
самозаймається

4
Чому це рішення?
Гонки легкості по орбіті

Якщо @LightnessRacesinOrbit не знає, чому це правильне рішення, будь ласка, прочитайте про те, що таке SELinux . В основному сценарій RPM встановлює належні дозволи ACL тощо
eyoung100

3
@ eyoung100: Ні, я вважаю, що ця відповідь нічого не пояснює. Слід пояснити, чому видалення та заміна установки має вирішити проблему, а також дати кроки для цього. Також я прошу, тому що я встановив з RPM, але все-таки отримав проблему.
Гонки легкості по орбіті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.