Мы установили 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
, поэтому проблема связана с возможностями.