'Linux'에 해당되는 글 1건

  1. 2013.09.22 java.net.BindException: permission denied: 80

Linux에서는 below 1024(1024 아래) 밑의 포트들을 root가 아닌 권한인 유저들이 여는 것을 허용하지 않는다


이것 땜에 좀 문제가 있었는데, 2가지 해결 방법이 있다.


1. iptables에서 port fowarding을 해준다.

reroute를 통해서 8080을 80으로 포워딩해주는 방법이 있다.

(root 권한에서 실행)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080


2. authbind를 설치한다.

 authbind는 debian 패키지에 있는 1024 이하의 포트들을 root가 아닌 유저들이 열 수 있게 하는 것. 사실 나도 1번이 하기 싫어서 찾아보다가 이번에 처음으로 알게 되었다.


원래대로 서비스에 설치해서 쓰는거면 /etc/init.d/tomcat* (해당버전)에 들어가서 authbind 를 YES인가 OK로 설정하면 되는데, 나는 서비스에 설치해서 안쓰니까..험난하다


우선 authbind를 설치한 다음에.. 80포트를 접근 가능하게 바꿔준다. 백형 블로그 참고했다

http://www.2ality.com/2010/07/running-tomcat-on-port-80-in-user.html


ㄱ. authbind를 설치

ㄴ. root 로 authbind 폴더에 쓸 포트(80)을 chown으로 쓸 계정에 줌. 이 백형은 glassfish를 쓰지만 난 촌스럽게 톰캣 쓰므로 톰캣으로 간다

* ipv6은 지원안한다는데, 음.. 아직 신경쓰지 않기로 했다. nginx경우에는 신경을 좀만 쓰면 되지만, 이 놈은 아닌 듯. 그렇다고 톰캣을 root로 올릴 순 없잖음...

ㄷ. setenv.sh 에 CATALINA_OPTS에 IP4stack   쓴다고 설정

ㄹ. startup.sh에 authbind를 통해 구동하게 강제로 바꿈


되나 확인해보면 됨

Posted by TY
,