Коротка версія: який найбезпечніший спосіб дозволити запуску 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
.