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 -version
dan 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 0
dan melihat apakah masalahnya hilang. Saya menjalankan perintah itu dan Java bekerja. Tetapi artikel yang sama ini mengatakan bahwa meninggalkan setenforce 0
host 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
chcon
solusi tampak wajar. Solusi terakhir tidak jauh berbedasetenforce 0
.