Apa cara aman untuk memungkinkan Java 7 berjalan pada SELinux

9

Versi singkat: Apa cara paling aman untuk memungkinkan Java 7 berjalan pada (with?) SELinux?

Versi panjang:

Maaf sebelumnya jika saya menggunakan terminologi yang salah. Saya benar-benar hanya seorang pengembang Java dengan sedikit sekali ketrampilan Linux.

Saya baru saja menginstal Java 7 pada rilis CentOS 5.3 (Final) yang ternyata memiliki Security Enhanced Linux. Setelah instalasi selesai (yang saya "instal" dengan membuka zip file tar.gz dari Oracle /usr/java/jdk/jdk1.7.0_25), saya berlari java -versiondan mendapatkan kesalahan ini:

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`

Saya menemukan beberapa artikel yang menyatakan ini bisa disebabkan SELinux dan untuk mencoba setenforce 0dan melihat apakah masalahnya hilang. Saya menjalankan perintah itu dan Java bekerja. Tetapi artikel yang sama ini mengatakan bahwa meninggalkan setenforce 0host yang terhubung ke Internet berbahaya, dan host saya terhubung ke Internet.

Ada artikel lain yang menyarankan pendekatan berikutnya, tetapi juga mengatakan itu bisa berbahaya, jadi saya belum mencobanya.

chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so

... pada perintah di atas path di akhir perintah diganti dengan path JDK saya.

Apa yang tidak dapat saya temukan adalah sesuatu yang "resmi" (yang dapat berarti banyak hal) tentang cara menjalankan Java 7 di (with?) SELinux dengan aman. Adakah yang punya informasi untuk saya?

Sunting: Saya menemukan artikel yang merujuk pada pengeditan /etc/selinux/config. Saya telah menetapkan seperti yang ditunjukkan pada contoh di bawah ini. Ini memungkinkan Java untuk menjalankan tetapi saya berasumsi saya sekarang memiliki beberapa lubang keamanan.

# 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
John Fitzpatrick
sumber
The chconsolusi tampak wajar. Solusi terakhir tidak jauh berbeda setenforce 0.
jordanm
Bisakah Anda menginstalnya di direktori home Anda saja?
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen: Ya, saya kira saya bisa, tetapi berjalan sebagai daemon, server Tomcat lebih spesifik, dan entah bagaimana rasanya agak ceroboh untuk memiliki server Tomcat berjalan dari direktori home saya.
John Fitzpatrick
Pada dasarnya dupe dari stackoverflow.com/q/14723474/560648 .
Lightness Races in Orbit

Jawaban:

2
  1. Bersihkan instalasi saat ini

  2. Unduh file RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

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

sisanya akan diurus.

pengguna44441
sumber
Terima kasih. Bisakah Anda menguraikan "Bersihkan instalasi saat ini"? Apakah maksud Anda menghapus apa yang saya instal?
John Fitzpatrick
Ya itu betul! Hapus instalasi Oracle Java Anda saat ini. Silakan ikuti "Uninstal file yang dicabut sendiri
user44441
4
Mengapa ini solusinya?
Lightness Races in Orbit
Jika @LightnessRacesinOrbit tidak tahu mengapa ini adalah solusi yang tepat, silakan baca Apa itu SELinux . Pada dasarnya skrip RPM menetapkan izin yang sesuai, ACL, dll
eyoung100
3
@ eyoung100: Tidak, maksud saya adalah bahwa jawaban ini tidak menjelaskan apa pun. Itu harus menjelaskan mengapa menghapus dan mengganti instalasi harus menyelesaikan masalah, serta memberikan langkah-langkah untuk melakukannya. Saya juga bertanya karena saya menginstal dari RPM tetapi masih mendapatkan masalah.
Lightness Races in Orbit