진짜 개발자
본문 바로가기

Linux/Linux

Linux - Caused by: java.net.SocketException: Permission denied 에러 해결방법

728x90
Caused by java.net.SocketException Permission denied Error

Caused by: java.net.SocketException: Permission denied Error

Server 구동 환경운영체제가 Linux를 사용하고 계신다면, 종종 Caused by: java.net.SocketException: Permission denied를 볼 수 있습니다. 저는 Spring Boot에서 Server를 개발한 뒤 Linux에 배포하여 실행하는 도중 위와 같은 에러가 나타났습니다. 원인이 무엇일까요?

 

로그 메시지에서 조금만 아래로 내려보면 Port가 이미 사용 중이라는 에러가 나타납니다. 하지만 netstat -nlp 를 이용해 확인을 해보아도 우리가 서버에 설정한 Port를 사용중인 프로세스는 보이지 않는 경우가 있는데요, 이는 Port가 사용중이어서 나타나는 에러가 아닌 확률이 높습니다.

 

 

원인

위 그림의 SocketException: 뒷 부분을 자세히 보시면 Permission denied라는 문구가 보입니다. 눈치가 빠르신 분들은 이를 통해 어느정도 유추를 하실 수 있을겁니다. (저의 경우에는 1을 알려주면 10을 알지는 못했나봅니다..)

네, Linux일반 사용자에게 WellKnown Port(<= 1024) 사용권한을 주지 않습니다. 바로 이 때문에 위와 같은 에러가 발생했던 것이죠.

 

 

 

해결방법

사실 해결방법은 간단합니다. 일반 사용자가 아닌 상태로 Server를 구동하면 됩니다.

 

1. sudo

첫번째 해결방법은 sudo + server 실행 명령어를 통해 root권한으로 서버를 구동시키는 것입니다.

 

2. root 계정에서 실행

두번째 방법은 root 계정으로 linux에 접속하여 Server를 실행하는 방법입니다.