본문 바로가기
Linux/Tips&News

Error: listen EACCES: permission denied 0.0.0.0:80

by 드로니뚜벅이 2023. 9. 22.

Node.js 에서 80 포트에서 실행하려고 하면 제목과 같은 오류가 발생합니다.

1024 이하 포트를 실행하려면 루트 권한이 있어야 하는데 일반 유저 권한으로 실행해서 발생한 문제입니다.

웹서버 실행 포트를 1024보다 큰 값으로 바꾸던지 아래처럼 포트포워딩을 시켜줘야 합니다.

즉, 서버를 1024번 이상의 폴더에서 열고 iptable을 사용해서 redirect 해주는 방법을 사용합니다.

$ lsof -i :80
...
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

또 다른 방법으로 아래처럼 해도 되는 것 같습니다.

$ sudo apt install libcap2-bin 
$ sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``

 

다음처럼 해도 된다는데 해 보지는 않았습니다.

작업 폴더(모든 하위 폴더와 파일)를 루트 소유자로 변경하고 루트 권한으로 실행합니다.

$ sudo chown -R root:root 폴더이름