it-swarm-ko.com

SVN에서 액세스 제어를 어떻게 설정합니까?

SVN 및 업로드 된 프로젝트를 사용하여 저장소를 설정했습니다. 이 프로젝트에는 여러 명의 사용자가 있습니다. 그러나 모든 사람이 모든 프로젝트에 액세스해야하는 것은 아닙니다. 각 프로젝트에 대한 사용자 권한을 설정하고 싶습니다.

어떻게하면 되나요?

79
user15425

svn\repos\YourRepo\conf 폴더에는 authzpasswd라는 두 개의 파일이 있습니다. 이것들은 조정해야 할 두 가지입니다.

passwd 파일에서 일부 사용자 이름과 비밀번호를 추가해야합니다. 나는 사람들이 그것을 사용하기 때문에 이미 이것을했다고 가정합니다.

[users]
User1=password1
User2=password2

그런 다음 authz 파일에 따라 권한을 할당하려고합니다.

원하는 개념 그룹을 만들고 사람들을 추가하십시오.

[groups]
allaccess = user1
someaccess = user2

그런 다음 권한과 프로젝트 수준에서 액세스 권한을 선택하십시오.

그래서 우리의 "모든 액세스"녀석들에게 루트에서 모든 액세스 권한을 부여합시다 :

[/]
@allaccess = rw

그러나 우리의 "일부 액세스"녀석들에게 하위 프로젝트에 대한 읽기 전용 액세스 권한 만 부여하십시오.

[/someproject]
@someaccess = r

authzpasswd 파일에도 간단한 설명서가 있습니다.

82
Stephen Bailey

@ 스테판 베일리

답변을 완성하기 위해 리포지토리의 일반 텍스트 파일을 통해 프로젝트 관리자에게 사용자 권한을 위임 할 수도 있습니다.

이를 위해 다음을 포함하는 기본 authz 파일로 SVN 데이터베이스를 설정합니다.

###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....

[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =

[/admin/acl_descriptions.txt]
@projadmins = rw

이 기본 authz 파일은 SVN 관리자가 SVN 저장소 내에서 SVN 관리자 또는 프로젝트 관리자가 '/ admin/acl_descriptions.txt'라고하는 일반 텍스트 파일을 수정할 수있는 권한을 부여합니다. 사용자를 수정하고 등록합니다.

그런 다음 개정판이 해당 파일 (및 해당 파일 만)로 구성되어 있는지 감지하는 사전 커미트 후크를 설정합니다.

그렇다면이 후크의 스크립트는 일반 텍스트 파일의 내용을 확인하고 각 줄이 SVN 구문을 준수하는지 확인합니다.

그런 다음 커밋 후 후크는 다음과 같이 concatenation으로 \conf\authz 파일을 업데이트합니다.

  • 위에 제시된 TEMPLATE authz 파일
  • 일반 텍스트 파일 /admin/acl_descriptions.txt

첫 번째 반복은 SVN 관리자가 수행하며 다음을 추가합니다.

[groups]
projadmins = zzzz

그는 수정을 커밋하고 authz 파일을 업데이트합니다.

그런 다음 프로젝트 관리자 'zzzz'는 사용자 그룹과 원하는 사용자를 추가, 제거 또는 선언 할 수 있습니다. 파일을 커밋하고 authz 파일이 업데이트됩니다.

따라서 SVN 관리자는 모든 SVN 저장소에 대해 모든 사용자를 개별적으로 관리 할 필요는 없습니다.

27
VonC

나를 사로 잡은 한 가지 문제 :

[repos:/path/to/dir/] # this won't work

그러나

[repos:/path/to/dir]  # this is right

디렉토리에 슬래시를 포함하지 않아도되거나 OPTIONS 요청에 403이 표시됩니다.

26
Chris Burgess

Svn + ssh :를 사용할 수 있으며 주어진 위치의 저장소에 대한 액세스 제어를 기반으로합니다.

이것이 내 유니에서 프로젝트 그룹 저장소를 호스팅하는 방법으로 다른 것을 설정할 수 없습니다. 그룹이 소유 한 디렉토리를 가지고 있고 svn-admin (또는 그 무엇이든)을 실행하면 구성을 할 필요가 없다는 것을 의미합니다.

8
Matthew Schinckel

Apache 접근 방식이 더 낫다고 제안하지만 SVN Serve는 잘 작동하며 매우 간단합니다.

저장소가 "my_repo"라고 가정하고 C :\svn_repos에 저장됩니다.

  1. "C :\svn_repos\my_repo\conf"에 "passwd"라는 파일을 작성하십시오. 이 파일은 다음과 같아야합니다.

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. C :\svn_repos\my_repo\conf\svnserve.conf에서 다음을 설정하십시오.

    [general]
    password-db = passwd
    auth-access=read
    auth-access=write
    

그러면 사용자가 로그인하여이 저장소를 읽거나 쓸 수 있습니다.

각 저장소의 passwd 파일에 적절한 사용자 만 포함하여 각 저장소에 대해 다음 단계를 수행하십시오.

5
RB.

가장 좋은 방법은 Apache를 설정하고이를 통해 액세스를 설정하는 것입니다. 도움이 필요하면 svn book 을 확인하십시오. Apache를 사용하지 않으려면 svnserve를 사용하여 최소한의 액세스 제어를 수행 할 수도 있습니다.

3
Mladen Mihajlovic