SVN에서 액세스 제어를 설정하려면 어떻게해야합니까?


84

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

어떻게하면 되나요?

답변:


85

SVN \의 repos \ YourRepo \ conf의 폴더에 두 개의 파일을 찾을 수 에는 AuthZpasswd를을 . 조정해야 할 두 가지입니다.

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

[users]
User1=password1
User2=password2

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

원하는 개념 그룹을 만들고 여기에 사람을 추가합니다.

[groups]
allaccess = user1
someaccess = user2

그런 다음 권한과 프로젝트 수준 모두에서 어떤 액세스 권한이 있는지 선택합니다.

그래서 우리의 "모든 액세스"사람들에게 루트로부터의 모든 액세스 권한을 부여합시다.

[/]
@allaccess = rw

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

[/someproject]
@someaccess = r

또한 authzpasswd 파일 에서 몇 가지 간단한 문서를 찾을 수 있습니다.


8
관련 매뉴얼 페이지 : svnbook.red-bean.com/en/1.7/…
ErichBSchulz

1
참고 : ssh를 통해 저장소에 직접 액세스하면 작동하지 않습니다 (svnserve없이)
ALex_hha

예를 들어 저장소 아래의 폴더 하나를 사용자에게 주면 사용자는 직접 링크로만이 폴더에 액세스 할 수 있습니다. 사용자가 저장소를 추가 할 수 있으며 자신에게 할당 된 폴더 만 표시됩니까? 답장을 보내 주셔서 감사합니다 .
maoanz jul.

그룹은 @groupname규칙을 정의 할 때이 하나를 사용 하여 호출 됩니다. 예에서 완벽합니다.
Wolfeh

28

@ 스티븐 베일리

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

이를 위해 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 저장소 내에서 보이는 일반 텍스트 파일 인 '/admin/acl_descriptions.txt' 를 수정할 수있는 권한을 부여합니다 . 여기서 SVN 관리자 또는 프로젝트 관리자는 사용자를 수정하고 등록합니다.

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

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

그런 다음 커밋 후 후크는 \conf\authz다음을 연결 하여 파일을 업데이트합니다 .

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

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

[groups]
projadmins = zzzz

그는 자신의 수정을 커밋하고 authz 파일 합니다.

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

이렇게하면 SVN 관리자가 모든 SVN 저장소에 대한 모든 사용자를 개별적으로 관리 할 필요가 없습니다 .


27

나를 잡은 한 가지 잡았다 :

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

그러나

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

디렉토리에 후행 슬래시를 포함하지 않아도됩니다. 그렇지 않으면 OPTIONS 요청에 대해 403이 표시됩니다.


8

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

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


이것은 끔찍한 대답입니다. 이 ssh 방법은 제대로 문서화되어 있지 않으며 Linux에서만 작동하는 것 같습니다.
user1040323

1
사실이 아닙니다. Windows 서버에서 SSH 데몬을 실행하기 만하면되며 svn + ssh는 Linux에서와 똑같이 Windows에서도 작동합니다. Windows 시스템에서 SSH를 실행하는 방법을 설명하는 많은 자습서가 있습니다.
척 Wolber

또한 @ user1040323 님, Windows 이외의 다른 비 Linux 플랫폼이 있습니다. 제가 사용했던 컴퓨터 Linux가 아니라 일부 BSD 변형이었습니다.
매튜 Schinckel

5

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파일에 적절한 사용자 만 포함하여 각 저장소에 대해 다음 단계를 따르십시오 .


주의 : 비밀번호는 SVN conf 파일에 일반 텍스트로 저장됩니다!
AVA 2015

3

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


0

Apache Subversion은 저장소 (파일 또는 디렉토리)의 경로에서 사용자 및 그룹 계정에 대한 세분화 된 권한을 구성하는 데 도움이되는 경로 기반 인증 을 지원합니다. 경로 기반 인증은 액세스 없음, 읽기 전용 및 읽기 / 쓰기의 세 가지 액세스 수준을 지원합니다.

경로 기반 권한 부여 권한은 특수 구문을 사용하여 저장소 별 또는 서버 별 권한 파일에 저장됩니다. 다음은 SVNBook의 예입니다.

[calc:/branches/calc/bug-142]
harry = rw
sally = r

경로와 계정이 많은 복잡한 권한 구조가 필요한 경우 VisualSVN Server에서 제공하는 GUI 기반 권한 관리 도구를 활용할 수 있습니다.

  • 서버 관리자는 VisualSVN Server Manager 콘솔 또는 PowerShell을 통해 사용자 및 그룹 권한을 관리 할 수 ​​있습니다.
  • 관리자가 아닌 사용자는 RepoCfg를 통해 권한을 관리 할 수 ​​있습니다.

VisualSVN Server Manager의 리포지토리 권한 여기에 이미지 설명 입력

PowerShell의 리포지토리 권한 여기에 이미지 설명 입력

관리자가 아닌 사용자는 RepoCfg 도구를 통해 권한을 관리 할 수 ​​있습니다. 여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.