簡潔なバージョン: Java 7をSELinuxで実行するための最も安全な方法は何ですか?
長いバージョン:
間違った用語を使用した場合は、事前に申し訳ありません。私は実際にはLinux技術の知識がほとんどないJava開発者に過ぎません。
セキュリティが強化されたLinuxを含むCentOSバージョン5.3(最終リリース)にJava 7をインストールしました。インストールが完了したら(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を安全に実行する方法(多くのことを意味する可能性があります)に関する「公式」の内容です。私についての情報を持っている人はいますか?
編集する: 編集について言及した記事を見つけました/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
答え1
現在のインストールのクリーンアップ
RPMファイルをダウンロードします(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)
yum -y localinstall /path/to/downloaded-java.rpm
残りは調べて処理されます。