[INSTALL] 나도 Trac을 써보자! Apache-2.2.2/SVN-1.3.1/Trac-0.9.5/FastCGI (6) - 권한 설정

이 글에 들어있는 내용

  1. apache + svn 의 권한 설정
  2. apache + trac 의 권한 설정

사실 svn 자체에도 권한을 부여하는 항목이 있습니다. 하지만 여기서는 subversion 을 데몬이나 inetd 형태로 작동시키지 않고, http 를 통해 접근하고 사용하는 방법에 대해 이야기 하도록 하겠습니다.

1. apache + svn 의 권한 설정.

    (0) 해당 저장소의 파일 시스템 권한을 먼저 확인하셔야 합니다.

             저같은 경우에 apache 서버는 apache 유저로 실행 됩니다. 이 유저는 svnusers 그룹에 같이 포함시켜 두었구요.

             따라서 svnadmin create /path/to/svn/repos 했다면, 다음과 같은 두 명령어를 실행합니다.

             chgrp -R svnusers /path/to/svn/repos
         chmod -R g+rw
/path/to/svn/repos

    (1)  매우 쉬운 방법

        이 방법은 정말 간단합니다. 단지 단점이 있다면 비밀번호가 일반 텍스트로 인터넷 공간을 왔다갔다 한다는 것이지요.
        - apache 인증 파일을 생성한다. (최초 사용자 등록)

            htpasswd2 -cm /data/www/localhost/trac/newface/apache-auth-file admin

           * -c 옵션은 최초에 파일을 생성할 때 필요한 옵션입니다.
             -m 옵션은 비밀번호를 md5 형태로 저장하라는 것이구요,
             apache-auth-file 는 비밀번호 파일 이름입니다.(디렉터리 명이 아닙니다)
             디렉터리와 파일명은 특별히 지정된 것이 없습니다.
             마지막의 admin 은 사용자 아이디입니다.

           위의 명령어를 실행하면 비밀번호를 물어봅니다. 두번 입력해 주면 됩니다.

        - 추가 사용자를 등록한다.

            htpasswd2 -m /data/www/localhost/trac/newface/apache-auth-file testuser

            * -c 옵션은 사용하지 않습니다. testuser 라는 사용자를 추가 하였습니다.

        - 접근 권한을 설정합니다. 이전에 [INSTALL] 나도 Trac을 써보자! Apache-2.2.2/SVN-1.3.1/Trac-0.9.5/FastCGI (4) 에서 설정했던 파일을 엽니다. 권한 부분이 주석처리 되어있을 것입니다. 주석을 해제하고 다음과 같이 고친 후 저장. 아파치를 재 기동합니다.

            <Location /svn/newface>
                DAV svn
                SVNPath /data/svn/newface
                AddDefaultCharset utf-8
                AuthType Basic
                AuthName "Subversion repository"
                AuthUserFile /data/www/localhost/trac/newface/apache-auth-file
                Require valid-user
            </Location>


        - 테스트.

            http://localhost/svn/newface 로 접속해서 ID/PASSWORD 를 물어보는지 확인해 봅니다. 커밋도 한번 해보시죠. ^^

    (2) 조금 복잡한 방법

        이 방법은 (1)의 방법을 확장하여 디렉터리 별로 권한을 부여할 수 있는 방법입니다. 물론 역시 비밀번호는 일반 텍스트로 인터넷 공간을 날아다닙니다.

        - 저와 같은 방법으로 apache 와 subversion 을 설치하신 분들은 이미 아래와 같은 내용이 47_mod_dav_svn.conf 파일에 들어있을 것입니다. 없다면 적용될 수 있는 파일(httpd.conf 같은)에 추가해 주세요.

            <IfDefine SVN_AUTHZ>
                <IfModule !mod_authz_svn.c>
                    LoadModule authz_svn_module     modules/mod_authz_svn.so
                </IfModule>
            </IfDefine>

        - 다음의 라인을 추가합니다.
 
            <Location /svn/newface>
                ....
                AuthzSVNAccessFile /data/www/localhost/trac/newface/apache-auth-access-file
            </Location>

            * 물론 해당 파일에 대한 디렉터리 및 파일명은 특별한 제한이 없습니다.
 
        - 해당 파일의 내용은 다음과 같습니다.
                [newface:/]
                * = r
                [newface:/new_repos]
                test = rw
                admin =  
                [newface:/repos]
                * = rw
                [newface:/repos/under_svn]
                admin = rw
                * =

                [repos_name:path] 형태로 각 섹션이 구성됩니다. 차례대로 설명해 보자면 newface 저장소의  / 디렉터리는 모두 읽기만 가능합니다. /new_repos 디렉터리는 test 계정은 읽고 쓰기가, admin  계정은 권한이 없습니다. /repos/under_svn 은 admin 만 읽고 쓰기 권한이 있고, 다른 계정은 접근 불가입니다.

          아파치를 재기동하고 접속하여 봅니다.

    (3) SSL 로 접속하기.

          이건 다음기회에..

2. apache + trac 의 권한 설정.

    * 앞서 trac 을 fast cgi 모드로 운영하기 있기 때문에 이 기준으로 설명합니다.

    구축해둔 trac 환경에 사용할 사용자 아이디를 추가합니다.

         trac-admin /data/www/localhost/trac/newface permission add testuser WIKI_VIEW WIKI_MODIFY WIKI_CREATE

     위의 명령어는 testuser 라는 사용자를 추가하는데 위키 조회, 수정, 생성 권한을 주는 것이죠. 자세한 내용은 trac-admin --help 를 이용하면 볼 수 있습니다.

     이렇게 추가한 사용자는 /data/www/localhost/trac/javalangspec/apache-auth-file 에도 존재하는 사용자여야 합니다.

    httpd.conf 파일의  trac 관련 ScriptAlias 이후에 다음을 추가하시고요

    <Location /newface/login>
        AuthType Basic
        AuthName "newface"
        AuthUserFile /data/www/localhost/trac/javalangspec/apache-auth-file
        Require valid-user
    </Location>

    참고로 저렇게 해두면 trac 환경의 anonymous 계정에 부여한 작업은 로그인 없이도 할 수 있습니다.
    만약 아예 anonymous 접근을 못하게 하려면 위의 경로를 /newface/login 에서 /newface 로 변경하시면 됩니다.

    아파치 재기동 후 접속/로그인 테스트 해보세요. ^^

덧글

덧글 입력 영역


구글애드센스