IT/WEBWAS

일반계정으로 Apache 80포트 기동

동구멍폴로 2020. 7. 6. 13:17
반응형

일반적으로 root 계정이 아닌 계정으로 80포트를 사용한 WEB 기동시 다음과 같은 메시지가 확인된다.

-------------------------------------------------------------------------------------------------------------------

(13)Permission denied: AH00072: make_sock: could not bind to address 127.0.0.1:80 no listening sockets available, shutting down AH00015: Unable to open logs

-------------------------------------------------------------------------------------------------------------------

( * 참고 :  1024 이하의 포트는 root권한으로만 사용가능하다.)

 

Apache HTTP Server 사용시 다음과 같은 방법으로 root외 계정으로 기동가능하다.

 

특정 계정(여기서는 apaadm) 외 다른 계정으로는 기동되지 않도록 할 수 있는 방법은 다음과 같다.(Linux)

=====================================================================

1. httpd.conf 수정 : User 및 Group 을 기동할 계정으로 변경한다. 여기서는 apaadm 계정으로 기동하는 경우이다.

--------------------------------

User apaadm

Group apaadm

--------------------------------

(* User/Group을 Default 값인 nobody로 설정시는 문제없음)

 

2. httpd 파일 권한자 변경 : 

1) ps -ef | grep httpd 명령어 수행을 통해 httpd 파일의 경로로 이동

  * 여기서는 /engn/apache2.4/bin으로 확인되었을 때의 경우임.

2) chown 명령어를 통해 httpd 파일에 대한 소유자 root 그룹 apaadm 으로 변경한다.

 root: /engn/apache2.4/bin/ > chown root:apaadm httpd

 

 ** 만약 엔진 디렉토리의 권한을 root:root로 설정해 놓은 상태라면, 엔진 전체에 대해 권한 변경이 우선되어야 한다.

  ex. root: /engn/apache2.4/bin/ > chown -R apaadm:apaadm /engn/apache2.4 

 

3. 특수권한 부여 : chmod +s 파일명 형태(SetUID/SetGID 권한 부여) 로 권한 부여한다.

root: /engn/apache2.4/bin/ > chmod +s httpd

 

4. 기타 파일 수정 : root로 기동된 apache 중지 후 log 디렉토리 하위의 root:root로 생성된 파일들의 권한을 apaadm 소유로 변경한다.

=====================================================================

 

apaadm 으로 기동시 80포트로 기동가능하며, 기동 후 netstat -an | grep 80 으로 확인가능하다.

프로세스의 경우, ps -ef | grep httpd 로 확인시 부모 프로세스는 root로/나머지는 apaadm 계정으로 기동되어 있음을 확인가능하다.

반응형