Javaを使用して「selinux sandbox」を実行すると問題が発生します。

Javaを使用して「selinux sandbox」を実行すると問題が発生します。

selinuxサンドボックスを使用してJavaアプリケーションをサンドボックスしようとしています。

システムの詳細:redhat 6 | x86_64 xサーバーがインストールされていませんoracle tar.gzバージョン|

cmd(ルートとして実行)

 sandbox /root/jdk/bin/java -version

上記のコマンドが失敗しました。

 /root/jdk/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

いくつかの調査の終わりに、「libjli.so」がRPATH共有ライブラリであることがわかりました。したがって、サンドボックスが私のbin / javaを/tmp/sandbox_randomにコピーするので、ハードコーディングされたパスが見つからないので大丈夫だと思います。

その後、 ""ユーティリティを使用してRPATHを変更し、chrpathハードコードされた値に変更しましたが、まだ同じエラーが表示されます。

その後、サンドボックスの-M -iオプションを使用し、次のコマンドを実行しました(苦情が発生したすべての.soファイルを含めました)。

sandbox -M -i /root/jdk/lib/amd64/jli/libjli.so -i /root/jdk/jre/lib/amd64/libjava.so -i /root/jdk/jre/lib/amd64/jvm.cfg -i /root/jdk/jre/lib/amd64/server/libjvm.so -i    /root/jdk/jre/lib/amd64/libverify.so -i /root/jdk/jre/lib/amd64/libzip.so /root/jdk/bin/java  -version

次のコマンドが原因でこのエラーが発生します。

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb039000000, 2555904, 1) failed; error='Permission denied' (errno=13)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 2555904 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/hs_err_pid1270.log

straceを使って何が起こっているのかを確認し、straceを印刷します。

clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb15b6359d0) = 8268
close(4)                                = 0
read(3, "", 1048576)                    = 0
close(3)                                = 0
wait4(8268, Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4579000000, 2555904, 1) failed; error='Permission denied' (errno=13)

確かにスペースは十分です。

何が間違っているのかを指摘してもらえますか?

ベストアンサー1

トラブルシューティング済み。私のRedhat 6システムでは、Java関連ファイル(openjdkとoracle Java)にタグが正しく指定されていないことがわかりました。
Redhat 6からRedhat 7にアップグレードすると、正常に動作し始めました。つまり、 sandbox java -version問題なく完璧に動作しました。

私のRedhat 7システムでは、.soと他のJava関連ファイルが次のいずれかで表示されます。

system_u:object_r:textrel_shlib_t:s0
system_u:object_r:lib_t:s0

以前のコンピュータ(redhat 6など)では、すべてのファイルに異なる内容でタグが付けられているため、この問題が発生しました。

おすすめ記事