短縮版: Java 7をSELinux(で?)で実行することを許可する最も安全な方法は何ですか?
ロングバージョン:
間違った用語を使用した場合は、事前に申し訳ありません。私は本当にJava開発者であり、Linuxのスキルはわずかです。
インストールしたところJava 7はCentOSリリース5.3(最終版)で、明らかにセキュリティが強化されたLinuxがインストールされています。インストールが完了した後(Oracleからtar.gzファイルを/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のパスに置き換えられます。
私が見つけられないのは、SELinuxでJava 7(with?))を安全に実行する方法に関する「公式」(多くのことを意味する可能性があります)です。誰か私に情報がありますか?
編集:/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
現在のインストールをクリーンアップします
RPMファイルをダウンロードします( http://www.Oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html )
yum -y localinstall /path/to/downloaded-Java.rpm
残りは注意されます。