Blame docs/manual/suexec.html.ko.euc-kr

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
Packit 90a5c9
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>suEXEC 지원 - Apache HTTP Server Version 2.4</title>
Packit 90a5c9
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
Packit 90a5c9
<script src="./style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

모듈 | 지시어들 | FAQ | 용어 | 사이트맵

Packit 90a5c9

Apache HTTP Server Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP Server > Documentation > Version 2.4

suEXEC 지원

Packit 90a5c9
Packit 90a5c9

가능한 언어:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ja  |
Packit 90a5c9
 ko  |
Packit 90a5c9
 tr 

Packit 90a5c9
Packit 90a5c9
이 문서는 최신판 번역이 아닙니다.
Packit 90a5c9
            최근에 변경된 내용은 영어 문서를 참고하세요.
Packit 90a5c9
Packit 90a5c9
    

suEXEC 기능은 아파치가 CGI

Packit 90a5c9
    SSI 프로그램을 웹서버를 실행한 사용자 ID가
Packit 90a5c9
    아닌 다른 사용자 ID로 실행하도록 한다. 보통 CGI나 SSI 프로그램을
Packit 90a5c9
    실행하면 웹서버를 실행한 사용자와 같은 사용자로 실행한다.

Packit 90a5c9
Packit 90a5c9
    

이 기능을 적절히 사용하면 사용자가 직접 CGI나 SSI 프로그램을

Packit 90a5c9
    개발하고 실행할때 발생할 수 있는 보안위험을 상당히 줄일
Packit 90a5c9
    수 있다. 그러나 suEXEC가 부적절하게 설정되면 많은 문제와
Packit 90a5c9
    컴퓨터에 새로운 보안 허점을 만들 수 있다. 만약 setuid root
Packit 90a5c9
    프로그램과 이런 프로그램의 보안 문제에 생소하다면 suEXEC를
Packit 90a5c9
    사용하지않길 진심으로 바란다.

Packit 90a5c9
  
Packit 90a5c9
Packit 90a5c9
  • suEXEC 보안모델
  • Packit 90a5c9
  • suEXEC 구성과 설치
  • Packit 90a5c9
  • suEXEC 키고 끄기
  • Packit 90a5c9
  • suEXEC 사용하기
  • Packit 90a5c9
  • suEXEC 디버깅하기
  • Packit 90a5c9
  • 다시 한번 조심하라: 경고와 예제
  • Packit 90a5c9

    참고

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    시작하기 전에

    Packit 90a5c9
    Packit 90a5c9
        

    시작하기 전에 우선 아파치그룹과 이 문서의 가정을 밝힌다.

    Packit 90a5c9
    Packit 90a5c9
        

    먼저 setuidsetgid

    Packit 90a5c9
        기능이 가능한 유닉스류 운영체제를 사용한다고 가정한다. 모든
    Packit 90a5c9
        명령어 예들도 같은 가정을 한다. suEXEC를 지원하는 다른 플래폼을
    Packit 90a5c9
        사용하다면 설정이 다를 수 있다.

    Packit 90a5c9
    Packit 90a5c9
        

    두번째, 당신이 컴퓨터 보안의 기본 개념과 관리에 익숙하다고

    Packit 90a5c9
        가정한다. 여기에는 setuid/setgid 기능과
    Packit 90a5c9
        이들이 시스템과 보안에 미치는 여러 영향에 대한 이해가 포함된다.

    Packit 90a5c9
    Packit 90a5c9
        

    세번째, suEXEC 코드의 수정하지않은

    Packit 90a5c9
        버전을 사용한다고 가정한다. 개발자와 여러 베타테스터들은
    Packit 90a5c9
        suEXEC와 관련된 모든 코드를 조심스럽게 조사하고 검사했다.
    Packit 90a5c9
        코드를 간단하게 하고 확실한 안전을 보장하기위해 모든 주의를
    Packit 90a5c9
        기울였다. 이 코드를 수정하면 예상치못한 문제와 새로운 보안
    Packit 90a5c9
        위험이 발생할 수 있다. 보안 프로그래밍에 대해 매우 잘 알고
    Packit 90a5c9
        코드를 살펴보기위해 아파치그룹과 작업을 공유할 의사가 없다면
    Packit 90a5c9
        suEXEC 코드를 수정하지않길 강력히 권한다.

    Packit 90a5c9
    Packit 90a5c9
        

    네번째이자 마지막으로, 아파치그룹은 suEXEC를 아파치

    Packit 90a5c9
        기본설치에 포함하지 않기로 결정했다. 결국
    Packit 90a5c9
        관리자가 주의를 기울여서 suEXEC를 설정해야 한다. suEXEC의
    Packit 90a5c9
        여러 설정을 잘 고려한후 관리자는 일반적인 설치방법을 suEXEC를
    Packit 90a5c9
        설치할 수 있다. suEXEC 기능을 사용하는 시스템의 보안을 책임지는
    Packit 90a5c9
        관리자는 이 설정값들을 주의있게 살펴보고 지정해야 한다.
    Packit 90a5c9
        이런 상세한 과정은 suEXEC를 사용할만큼 주의있고 단호한 
    Packit 90a5c9
        사람만이 suEXEC를 사용하도록 아파치그룹이 원하기 때문이다.

    Packit 90a5c9
    Packit 90a5c9
        

    아직도 사용하길 원하는가? 그런가? 좋다. 이제 시작하자!

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    suEXEC 보안모델

    Packit 90a5c9
    Packit 90a5c9
        

    suEXEC를 구성하고 설치하기 전에 우리는 보안모델을 먼저

    Packit 90a5c9
        설명한다. 이를 통해 정확히 suEXEC 안에서는 무슨 일이 일어나며
    Packit 90a5c9
        시스템의 보안을 위해 무엇을 조심해야 할지 더 잘 이해할 수
    Packit 90a5c9
        있다.

    Packit 90a5c9
    Packit 90a5c9
        

    suEXEC는 아파치 웹서버가 부르는 setuid

    Packit 90a5c9
        "wrapper" 프로그램을 기반으로 한다. 이 wrapper는 관리자가
    Packit 90a5c9
        주서버와 다른 userid로 실행하도록 설정한 CGI나 SSI 프로그램에
    Packit 90a5c9
        HTTP 요청이 오면 불린다. 이런 요청이 오면 아파치는 suEXEC
    Packit 90a5c9
        wrapper에게 프로그램명과 프로그램을 실행할 사용자와 그룹
    Packit 90a5c9
        ID를 제공한다.

    Packit 90a5c9
    Packit 90a5c9
        

    그러면 wrapper는 다음 과정을 통해 성공과 실패를 결정한다.

    Packit 90a5c9
        이 조건중 하나라도 실패하면 프로그램은 실패로 기록되고 오류를
    Packit 90a5c9
        내며 종료한다. 실패하지 않으면 과정을 계속한다:

    Packit 90a5c9
    Packit 90a5c9
        
      Packit 90a5c9
            
    1. Packit 90a5c9
              wrapper를 실행하는 사용자가 시스템의 정상적인
      Packit 90a5c9
              사용자인가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                wrapper를 실행하는 사용자가 실제로 시스템의 사용자인지
      Packit 90a5c9
                확인한다.
      Packit 90a5c9
              

      Packit 90a5c9
           
      Packit 90a5c9
      Packit 90a5c9
           
    2. Packit 90a5c9
              적절한 수의 아규먼트로 wrapper를 실행하는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                wrapper는 적절한 수의 아규먼트가 있어야만 실행된다.
      Packit 90a5c9
                아파치 웹서버가 이 개수를 안다. wrapper가 적절한 수의
      Packit 90a5c9
                아규먼트를 받지못하면 해킹되었거나 아파치의 suEXEC에
      Packit 90a5c9
                뭔가 문제가 있는 것이다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    3. Packit 90a5c9
              이 사용자가 wrapper를 실행하도록 허용되었나? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                이 사용자가 wrapper를 실행하도록 허용되었나? 오직
      Packit 90a5c9
                한 사용자(아파치 사용자)만이 이 프로그램을 실행할
      Packit 90a5c9
                수 있다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    4. Packit 90a5c9
              지정한 CGI나 SSI 프로그램이 안전하지않은 계층참조를
      Packit 90a5c9
              가지는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                지정한 CGI나 SSI 프로그램이 '/'로 시작하거나 뒷참조
      Packit 90a5c9
                '..'을 가지는가? 이들을 사용할 수 없다. 지정한 CGI/SSI
      Packit 90a5c9
                프로그램은 suEXEC 문서 root (아래
      Packit 90a5c9
                --with-suexec-docroot=DIR 참고)
      Packit 90a5c9
                내에 있어야 한다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    5. Packit 90a5c9
              지정한 사용자명이 유효한가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                지정한 사용자가 존재하는가?
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    6. Packit 90a5c9
              지정한 그룹명이 유효한가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                지정한 그룹이 존재하는가?
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    7. Packit 90a5c9
              지정한 사용자가 superuser가 아닌가?
      Packit 90a5c9
              
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                현재 suEXEC는 root가 CGI/SSI
      Packit 90a5c9
                프로그램을 실행할 수 없도록 한다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    8. Packit 90a5c9
              지정한 userid가 최소 ID 숫자보다 큰가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                설정에서 최소 사용자 ID 숫자를 지정한다. 그래서 CGI/SSI
      Packit 90a5c9
                프로그램을 실행할 수 있는 userid의 최소치를 지정할
      Packit 90a5c9
                수 있다. "시스템용" 계정을 제외할때 유용하다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    9. Packit 90a5c9
              지정한 그룹이 superuser 그룹이 아닌가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                현재 suEXEC는 root 그룹이 CGI/SSI
      Packit 90a5c9
                프로그램을 실행할 수 없도록 한다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    10. Packit 90a5c9
              지정한 groupid가 최소 ID 숫자보다 큰가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                설정에서 최소 그룹 ID 숫자를 지정한다. 그래서 CGI/SSI
      Packit 90a5c9
                프로그램을 실행할 수 있는 groupid의 최소치를 지정할
      Packit 90a5c9
                수 있다. "시스템용" 그룹을 제외할때 유용하다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    11. Packit 90a5c9
              wrapper가 성공적으로 지정한 사용자와 그룹이
      Packit 90a5c9
              될 수 있는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                이 단계에서 프로그램은 setuid와 setgid 호출을 하여
      Packit 90a5c9
                지정한 사용자와 그룹이 된다. 또, 그룹 접근목록은
      Packit 90a5c9
                사용자가 해당된 모든 그룹으로 초기화된다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    12. Packit 90a5c9
              CGI/SSI 프로그램이 있는 디렉토리로 디렉토리를
      Packit 90a5c9
              변경할 수 있는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                디렉토리가 존재하지 않다면 파일이 있을 수 없다. 이곳으로
      Packit 90a5c9
                디렉토리를 변경할 수 없다면 디렉토리는 존재하지 않을
      Packit 90a5c9
                것이다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    13. Packit 90a5c9
              디렉토리가 아파치 웹공간 안에 있는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                서버의 일반적인 부분을 요청할 경우 요청하는 디렉토리가
      Packit 90a5c9
                suEXEC 문서 root 아래 있는가? UserDir을 요청할 경우
      Packit 90a5c9
                요청하는 디렉토리가 suEXEC userdir로 설정한 (suEXEC 설정 옵션 참고) 디렉토리
      Packit 90a5c9
                아래에 있는가?
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    14. Packit 90a5c9
              다른 누구도 디렉토리에 쓰기권한이 없는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                디렉토리를 다른 사람에게 열어두길 원하지않는다. 오직
      Packit 90a5c9
                소유자만이 디렉토리 내용을 변경할 수 있다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    15. Packit 90a5c9
              지정한 CGI/SSI 프로그램이 존재하는가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                존재하지않다면 실행할 수도 없다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    16. Packit 90a5c9
              다른 누구도 지정한 CGI/SSI 프로그램에 쓰기권한이
      Packit 90a5c9
              없는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                소유자외 누구도 CGI/SSI 프로그램을 변경하길 원하지않는다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    17. Packit 90a5c9
              지정한 CGI/SSI 프로그램이 setuid나 setgid가
      Packit 90a5c9
              아닌가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                우리는 프로그램이 다시 UID/GID를 변경하길 원하지않는다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    18. Packit 90a5c9
              지정한 사용자/그룹이 프로그램의 사용자/그룹과 같은가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                사용자가 파일의 소유자인가?
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    19. Packit 90a5c9
              안전한 동작을 위해 프로세스의 환경변수를 청소할
      Packit 90a5c9
              수 있는가?
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                suEXEC는 (설정에서 정의한) 안전한 실행 PATH를 잡고,
      Packit 90a5c9
                (이것도 설정에서 정의) 안전한 환경변수 목록에 열거된
      Packit 90a5c9
                변수만 남기고 프로세스의 환경변수를 지운다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    20. Packit 90a5c9
              성공적으로 지정한 CGI/SSI 프로그램을 실행할
      Packit 90a5c9
              수 있는가? 
      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                여기서 suEXEC가 끝나고 지정한 CGI/SSI 프로그램이 시작한다.
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      이것이 suEXEC wrapper 보안모델의 표준 동작이다. 다소

      Packit 90a5c9
          엄격하고 CGI/SSI 설계에 새로운 제한이 되지만, 보안을 염두에
      Packit 90a5c9
          두고 한단계씩 조심스럽게 만들어졌다.

      Packit 90a5c9
      Packit 90a5c9
          

      이 보안 모델이 서버 설정에 어떤 제한을 주는지와 적절한

      Packit 90a5c9
          suEXEC 설정으로 어떤 보안 위험을 피할 수 있는지에 대해 이
      Packit 90a5c9
          문서의 "다시 한번 조심하라" 절을
      Packit 90a5c9
          참고하라.

      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      suEXEC 구성과 설치

      Packit 90a5c9
      Packit 90a5c9
          

      이제 재미있는 내용이 시작한다.

      Packit 90a5c9
      Packit 90a5c9
          

      suEXEC 구성 옵션

      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
          
      Packit 90a5c9
            
      --enable-suexec
      Packit 90a5c9
      Packit 90a5c9
            
      이 옵션은 기본적으로 설치되거나 활성화되지않는 suEXEC
      Packit 90a5c9
            기능을 활성화한다. APACI가 suEXEC를 받아들이려면
      Packit 90a5c9
            --enable-suexec 옵션외에
      Packit 90a5c9
            --with-suexec-xxxxx 옵션이 최소한 한개
      Packit 90a5c9
            필요하다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-bin=PATH
      Packit 90a5c9
      Packit 90a5c9
            
      suexec 바이너리 경로는 보안상 이유로
      Packit 90a5c9
            서버에 기록되야 한다. 경로 기본값을 무시하려면 이 옵션을
      Packit 90a5c9
            사용한다. 예를 들어
      Packit 90a5c9
            --with-suexec-bin=/usr/sbin/suexec
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-caller=UID
      Packit 90a5c9
      Packit 90a5c9
            
      보통 아파치를 실행하는 사용자명. 프로그램을
      Packit 90a5c9
            실행할 수 있는 유일한 사용자다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-userdir=DIR
      Packit 90a5c9
      Packit 90a5c9
            
      suEXEC 접근이 허용되는 사용자 홈디렉토리의 하위디렉토리를
      Packit 90a5c9
            지정한다. 이 디렉토리에 있는 모든 실행파일을 사용자의
      Packit 90a5c9
            suEXEC로 실행므로, 모든 프로그램이 "안전해야" 한다. (예를
      Packit 90a5c9
            들어, 값에 "*"이 없는) "간단한" UserDir 지시어를 사용한다면
      Packit 90a5c9
            같은 값을 설정해야 한다. UserDir 지시어가 passwd 파일에
      Packit 90a5c9
            나온 사용자 홈디렉토리와 다르면 suEXEC는 정상적으로
      Packit 90a5c9
            작동하지 않는다. 기본값은 "public_html"이다.
      Packit 90a5c9
            가상호스트들이 각각 다른 UserDir을 사용한다면 모두 한
      Packit 90a5c9
            부모 디렉토리 안에 있도록 정의해야 하고, 그 부모 디렉토리명을
      Packit 90a5c9
            여기 적는다. 이렇게 정의하지 않으면, "~userdir"
      Packit 90a5c9
            cgi 요청이 작동하지 않는다!
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-docroot=DIR
      Packit 90a5c9
      Packit 90a5c9
            
      아파치의 DocumentRoot를 정의한다. 이는 suEXEC가 사용할
      Packit 90a5c9
            수 있는 (UserDirs을 제외한) 유일한 공간이다. 기본 디렉토리는
      Packit 90a5c9
            --datadir 값에 "/htdocs"을 붙인 것이다.
      Packit 90a5c9
            예를 들어 "--datadir=/home/apache"로
      Packit 90a5c9
            구성했다면 suEXEC wrapper는 document root로
      Packit 90a5c9
            "/home/apache/htdocs" 디렉토리를 사용한다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-uidmin=UID
      Packit 90a5c9
      Packit 90a5c9
            
      suEXEC에서 지정가능한 사용자의 최소 UID를 정의한다.
      Packit 90a5c9
            대부분의 시스템에서 500이나 100이 적절하다. 기본값은
      Packit 90a5c9
            100이다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-gidmin=GID
      Packit 90a5c9
      Packit 90a5c9
            
      suEXEC에서 지정가능한 그룹의 최소 GID를 정의한다.
      Packit 90a5c9
            대부분의 시스템에서 100이 적절하므로 이 값이 기본값이다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-logfile=FILE
      Packit 90a5c9
      Packit 90a5c9
            
      모든 suEXEC 작동과 오류를 (감시나 디버깅 목적에 유용한)
      Packit 90a5c9
            기록할 로그파일명을 지정한다. 기본적으로 로그파일의 이름은
      Packit 90a5c9
            "suexec_log"이고 표준 로그파일 디렉토리에
      Packit 90a5c9
            (--logfiledir) 위치한다.
      Packit 90a5c9
      Packit 90a5c9
            
      --with-suexec-safepath=PATH
      Packit 90a5c9
      Packit 90a5c9
            
      CGI 실행파일에 넘겨질 안전한 PATH 환경변수를 정의한다.
      Packit 90a5c9
            기본값은 "/usr/local/bin:/usr/bin:/bin"이다.
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      suEXEC wrapper를 컴파일하고 설치하기

      Packit 90a5c9
          --enable-suexec 옵션으로 suEXEC 기능을 가능하게한
      Packit 90a5c9
          경우 make 명령어를 실행하면 suexec
      Packit 90a5c9
          실행파일이 (아파치와 함께) 자동으로 만들어진다.
      Packit 90a5c9
          모든것을 컴파일한 후 make install 명령어를
      Packit 90a5c9
          실행하여 설치할 수 있다. 바이너리파일 suexec
      Packit 90a5c9
          --sbindir 옵션으로 지정한 디렉토리에 설치된다.
      Packit 90a5c9
          기본 위치는 "/usr/local/apache2/sbin/suexec"이다.
      Packit 90a5c9
          설치 과정에 root 권한이 필요함을
      Packit 90a5c9
          주의하라. wrapper가 사용자 ID를 설정하기위해서는 소유자가
      Packit 90a5c9
          root이고 파일모드로 setuserid 실행비트가
      Packit 90a5c9
          설정되야 한다.

      Packit 90a5c9
      Packit 90a5c9
          

      편집증적인 권한설정

      Packit 90a5c9
          suEXEC wrapper는 자신을 실행한 사용자가 구성 옵션
      Packit 90a5c9
          --with-suexec-caller로 지정한 올바른 사용자인지
      Packit 90a5c9
          확인을 하지만, 이 검사 이전에 suEXEC가 사용하는 시스템호출
      Packit 90a5c9
          혹은 라이브러리 함수가 조작되었을 수 있다. 이를 대비하며
      Packit 90a5c9
          일반적으로 좋은 습관이므로 오직 아파치를 실행하는 그룹만이
      Packit 90a5c9
          suEXEC를 실행할 수 있도록 파일시스템 권한을 지정해야 한다.

      Packit 90a5c9
      Packit 90a5c9
          

      예를 들어, 웹서버를 다음과 같이 설정하고:

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
          User www
      Packit 90a5c9
          Group webgroup
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      suexec를 "/usr/local/apache2/sbin/suexec"에

      Packit 90a5c9
          설치하였다면, 다음을 실행해야 한다:

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
          chgrp webgroup /usr/local/apache2/bin/suexec
      Packit 90a5c9
          chmod 4750 /usr/local/apache2/bin/suexec
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      그러면 오직 아파치를 실행하는 그룹만이 suEXEC wrapper를

      Packit 90a5c9
          실행할 수 있다.

      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      suEXEC 키고 끄기

      Packit 90a5c9
      Packit 90a5c9
          

      아파치는 시작할때 --sbindir 옵션으로 지정한

      Packit 90a5c9
          디렉토리에서 suexec 파일을 (기본값
      Packit 90a5c9
          "/usr/local/apache2/sbin/suexec") 찾는다. 아파치가
      Packit 90a5c9
          정상적으로 구성된 suEXEC wrapper를 발견하면 오류 로그(error
      Packit 90a5c9
          log)에 다음과 같이 출력한다:

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
          [notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      서버 시작중에 이런 문구를 없다면 서버는 기대한 장소에서

      Packit 90a5c9
          wrapper 프로그램을 찾지 못했거나, 실행파일이 setuid
      Packit 90a5c9
          root로 설치되지않았기 때문일 것이다.

      Packit 90a5c9
      Packit 90a5c9
           

      처음으로 suEXEC 기능을 사용하고 싶고 이미 아파치 서버가

      Packit 90a5c9
           실행중이라면, 아파치를 죽이고 다시 시작해야 한다. 간단히
      Packit 90a5c9
           HUP이나 USR1 시그널로 재시작하는 것으로는 충분하지 않다. 

      Packit 90a5c9
           

      suEXEC를 안사용하려면 suexec 파일을 지운후

      Packit 90a5c9
           아파치를 죽이고 재시작해야 한다. 

      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      suEXEC 사용하기

      Packit 90a5c9
      Packit 90a5c9
          

      CGI 프로그램 요청의 경우 SuexecUserGroup 지시어를

      Packit 90a5c9
          사용한 가상호스트에 요청을 하였거나 mod_userdir
      Packit 90a5c9
          요청을 처리하는 경우에만 suEXEC wrapper를 호출한다.

      Packit 90a5c9
      Packit 90a5c9
          

      가상호스트:
      suEXEC wrapper를

      Packit 90a5c9
          사용하는 한가지 방법은 VirtualHost 정의에 SuexecUserGroup 지시어를
      Packit 90a5c9
          사용하는 것이다. 이 지시어를 주서버 사용자 ID와 다르게
      Packit 90a5c9
          설정하면 CGI 자원의 모든 요청이 <VirtualHost>에서
      Packit 90a5c9
          지정한 UserGroup으로 실행된다. 이
      Packit 90a5c9
          지시어들이 <VirtualHost>에 없으면 주서버
      Packit 90a5c9
          userid를 사용한다.

      Packit 90a5c9
      Packit 90a5c9
          

      사용자 디렉토리:

      Packit 90a5c9
           mod_userdir이 요청을 처리한다면 suEXEC
      Packit 90a5c9
           wrapper를 호출하여, 요청한 사용자 디렉토리에 해당하는 사용자
      Packit 90a5c9
           ID로 CGI 프로그램을 실행한다. 이 기능이 동작하려면 사용자
      Packit 90a5c9
           ID로 CGI를 실행할 수 있고 스크립트가 위의 보안
      Packit 90a5c9
           검사 항목을 만족해야 한다. 구성
      Packit 90a5c9
           옵션 --with-suexec-userdir을 참고하라.

      top
      Packit 90a5c9
      Packit 90a5c9

      suEXEC 디버깅하기

      Packit 90a5c9
      Packit 90a5c9
          

      suEXEC wrapper는 로그 정보를 위에서 다룬

      Packit 90a5c9
          --with-suexec-logfile 옵션으로 지정한 파일에
      Packit 90a5c9
          쓴다. wrapper를 올바로 구성하고 설치했다면 어디서 잘못되었는지
      Packit 90a5c9
          이 로그파일와 서버의 error_log를 살펴봐라.

      Packit 90a5c9
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      다시 한번 조심하라: 경고와 예제

      Packit 90a5c9
      Packit 90a5c9
          

      주의! 이 섹션은 완전하지 않을 수 있다.

      Packit 90a5c9
          아파치그룹의 온라인
      Packit 90a5c9
          문서에서 이 문서의 최신판을 참고하라.

      Packit 90a5c9
      Packit 90a5c9
          

      wrapper가 서버 설정을 제약하는 몇가지 흥미로운 점이 있다.

      Packit 90a5c9
          suEXEC와 관련된 "버그"를 보고하기 전에 이들을 살펴보길 바란다.

      Packit 90a5c9
      Packit 90a5c9
          
        Packit 90a5c9
              
      • suEXEC 제약 사항
      • Packit 90a5c9
        Packit 90a5c9
              
      • Packit 90a5c9
                디렉토리 구조 제한
        Packit 90a5c9
        Packit 90a5c9
                

        Packit 90a5c9
                  보안과 효율성을 위해 모든 suEXEC 요청은 가상호스트의
        Packit 90a5c9
                  경우 최상위 document root 혹은 userdir 요청의 경우
        Packit 90a5c9
                  최상위 개인 document root 안에서 발생해야 한다. 예를
        Packit 90a5c9
                  들어, 가상호스트 네개를 설정했다면 가상호스트에서
        Packit 90a5c9
                  suEXEC를 이용하기위해 가상호스트의 document root를
        Packit 90a5c9
                  주 아파치 문서 계층구조 밖에 설정할 필요가 있다.
        Packit 90a5c9
                  (예제는 다음에.)
        Packit 90a5c9
                

        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
      • Packit 90a5c9
                suEXEC의 PATH 환경변수
        Packit 90a5c9
        Packit 90a5c9
                

        Packit 90a5c9
                  변경하면 위험할 수 있다.  여기에 포함하는 모든 경로가
        Packit 90a5c9
                  믿을 수 있는 디렉토리인지 확인하라. 
        Packit 90a5c9
                  이 지구상의 누군가가 그곳에 있는 트로이목마를 실행하길
        Packit 90a5c9
                  원하지 않을 것이다.
        Packit 90a5c9
                

        Packit 90a5c9
              
        Packit 90a5c9
        Packit 90a5c9
              
      • Packit 90a5c9
                suEXEC 코드 수정하기
        Packit 90a5c9
        Packit 90a5c9
                

        Packit 90a5c9
                  반복해서 말하지만, 당신이 무엇을 하는지 모르고 시도한다면
        Packit 90a5c9
                  큰 문제가 발생할 수 있다. 어떤 경우에도
        Packit 90a5c9
                  수정하지마라.
        Packit 90a5c9
                

        Packit 90a5c9
              
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
        Packit 90a5c9
        Packit 90a5c9

        가능한 언어:  en  |

        Packit 90a5c9
         fr  |
        Packit 90a5c9
         ja  |
        Packit 90a5c9
         ko  |
        Packit 90a5c9
         tr 

        Packit 90a5c9
        top

        Comments

        Notice:
        This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
        Packit 90a5c9
        <script type="text/javascript">
        Packit 90a5c9
        var comments_shortname = 'httpd';
        Packit 90a5c9
        var comments_identifier = 'http://httpd.apache.org/docs/2.4/suexec.html';
        Packit 90a5c9
        (function(w, d) {
        Packit 90a5c9
            if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        Packit 90a5c9
                d.write('
        <\/div>');
        Packit 90a5c9
                var s = d.createElement('script');
        Packit 90a5c9
                s.type = 'text/javascript';
        Packit 90a5c9
                s.async = true;
        Packit 90a5c9
                s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        Packit 90a5c9
                (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
        Packit 90a5c9
            }
        Packit 90a5c9
            else { 
        Packit 90a5c9
                d.write('
        Comments are disabled for this page at the moment.<\/div>');
        Packit 90a5c9
            }
        Packit 90a5c9
        })(window, document);
        Packit 90a5c9
        //--></script>
        Packit 90a5c9

        Copyright 2018 The Apache Software Foundation.
        Licensed under the Apache License, Version 2.0.

        Packit 90a5c9

        모듈 | 지시어들 | FAQ | 용어 | 사이트맵

        <script type="text/javascript">
        Packit 90a5c9
        if (typeof(prettyPrint) !== 'undefined') {
        Packit 90a5c9
            prettyPrint();
        Packit 90a5c9
        }
        Packit 90a5c9
        //--></script>
        Packit 90a5c9
        </body></html>