Linux/Tips&News
Error: listen EACCES: permission denied 0.0.0.0:80
드로니뚜벅이
2023. 9. 22. 13:21
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 폴더이름