За замовчуванням на Linux користувачі з без прав доступу root не мають права запускати Java-застосунки на портах менших за 1024. Зокрема, при запуску Spring Boot можна отримати помилку java.net.BindException: Permission denied. Розберемо варіанти, як це можна виправити.
Запуск через sudo
Перед командою запуску можна додати sudo, якщо користувач має право його використовувати. Більше про запуск проєктів на Spring Boot.
Надати користувачу відповідні права
Власне, користувачу можна надати відповідні права адміністратора. Більше про права користувачів у Linux.
Запуск на іншому порту
Якщо на машині є Apache, nginx або інший сервер або його можна встановити, то можна запустити Java-застосунок на іншому порті: 8080, 8443 тощо і зробити відповідні налаштування переадресації.
Надати додаткові дозволи для JDK
Спочатку потрібно дізнати адресу поточного jdk:
readlink -f "$(which java)"
Наприклад, відповідь може бути типу /usr/lib/jvm/java-17-openjdk-amd64/bin/java. Після цього:
sudo setcap 'cap_net_bind_service=+ep' /usr/lib/jvm/java-17-openjdk-amd64/bin/java
Ця команда фактично дає конкретному виконуваному файлу Java право відкривати привілейовані мережеві порти, зокрема 443, без запуску Java від root.
Коментарі
Дописати коментар