Java "ошибка поиска символа" для JLI_InitArgProcessing при работе с возможностями setcap - PullRequest
0 голосов
/ 07 декабря 2018

Мы установили Java 11 на сервер, который предназначен для мониторинга сетевого интерфейса на предмет трафика.

После начальной установки (yum install java-11-openjdk-devel.x86_64) команда java работает правильно для обоих root и обычный пользователь.

Однако наше приложение Java не будет работать от имени пользователя root.Затем мы запустили:

setcap cap_net_raw,cap_net_admin=eip /path/to/java

Он устанавливает возможности, и запуск java -version как root работает нормально.

Но после запуска setcap , когда я пытаюсь запустить java -version как обычный пользователь, я вижу:

java: symbol lookup error: java: undefined symbol: JLI_InitArgProcessing

Кажется, это предполагаемая защита, как обсуждалось здесь: Возможности Linux (setcap), кажется, отключают LD_LIBRARY_PATH

Но мой вопрос: Как я могу позволить java использовать эти возможности (захват сетевых пакетов) под учетной записью обычного пользователя?

Примечание: Отключение возможностей с помощью setcap -r /path/to/java позволяет обычному пользователю снова запускать java, поэтому проблема связана с возможностями.

1 Ответ

0 голосов
/ 08 декабря 2018

Мне удалось решить эту проблему, добавив этот файл:

/etc/ld.so.conf.d/java.conf

С однострочным содержимым:

/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.0.1.el7_6.x86_64/lib/jli

и перезагрузкой сервера.

Очевидно, что путь к каталогу должен указывать на ваш конкретный JDK

...