grsec chroot 内で Java を実行できません

grsec chroot 内で Java を実行できません

Java は共通 chroot 内で正常に実行されます。

ただし、grsec 強化 chroot では、VM を構築するのに十分なメモリがないというエラーが発生します。

強化された chroot が本当に必要なので、これを実行するためのアイデアはありますか。

ありがとう。

答え1

一般的に、Java は grsec とうまく連携します。

しかし、grsec には Java にとって問題となるオプションがあります。

カーネルでそのオプションが有効になっているようです。

以下で確認してください:

[*] Grsecurity 
  Customize Configuration  --->
    PaX  --->
      Miscellaneous hardening features  ---> 
        [ ] Sanitize all freed memory

オプションが無効になっていることを確認しSanitize all freed memory、カーネルを再コンパイルして (sysctl 経由では管理できないと思います)、再試行してください。

答え2

エラー メッセージの正確なテキスト、使用している JVM など、より詳細な情報を提供する必要があります。

32 ビット Gentoo Hardened (grsec も使用、ただし chroot なし) で Java を実行すると、同様の問題が発生しました。https://bugs.gentoo.org/show_bug.cgi?id=344135

この問題を回避するには、jvm.cfg を変更して、「server」ではなく「client」を使用します。次に例を示します。

[jvm.cfg.patch]
--client IF_SERVER_CLASS -server
--server KNOWN
+-client KNOWN

また、-client や -Xmx256m オプションを使用して java を実行することもできます。

関連情報