it-swarm-pt.tech

Como configurar o controle de acesso no SVN?

Eu configurei um repositório usando SVN e upload de projetos. Existem vários usuários trabalhando nesses projetos. Mas nem todos estão trabalhando em todos os projetos e precisam de acesso. Eu quero configurar permissões para cada um dos projetos com os usuários.

Como faço para conseguir isso?

79
user15425

Na sua pasta svn\repos\YourRepo\conf você encontrará dois arquivos, authz e passwd. Estes são os dois que você precisa ajustar.

No arquivo passwd você precisa adicionar alguns nomes de usuários e senhas. Eu suponho que você já tenha feito isso desde que você tenha pessoas usando:

[users]
User1=password1
User2=password2

Então você deseja atribuir permissões de acordo com o arquivo authz:

Crie os grupos conceituais que você deseja e adicione pessoas a ele:

[groups]
allaccess = user1
someaccess = user2

Em seguida, escolha o acesso que eles têm tanto das permissões quanto do nível do projeto.

Então, vamos dar ao nosso pessoal "acesso total" todos os acessos pela raiz:

[/]
@allaccess = rw

Mas apenas dê ao nosso pessoal de "algum acesso" acesso somente leitura a algum projeto de nível mais baixo:

[/someproject]
@someaccess = r

Você também encontrará alguma documentação simples nos arquivos authz e passwd.

82
Stephen Bailey

@Stephen Bailey

Para completar sua resposta, você também pode delegar os direitos do usuário ao gerente de projeto, através de um arquivo de texto simples em seu repositório.

Para fazer isso, você configura seu banco de dados SVN com um arquivo authz padrão contendo o seguinte.

###########################################################################
# 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

Este arquivo authz padrão autoriza os administradores do SVN a modificar um arquivo de texto visível no seu repositório SVN, chamado '/ admin/acl_descriptions.txt', no qual os administradores ou gerentes de projeto do SVN irão modificar e registrar o arquivo. Comercial.

Em seguida, você configura um gancho de pré-consolidação que detectará se a revisão é composta desse arquivo (e apenas desse arquivo).

Se estiver, esses scripts de gancho validarão o conteúdo do seu arquivo de texto simples e verificarão se cada linha é compatível com a sintaxe correta do SVN.

Em seguida, um gancho post-commit atualizará o arquivo \conf\authz com concatenação de:

  • o arquivo authz do MODELO apresentado acima
  • o arquivo de texto simples /admin/acl_descriptions.txt

A primeira iteração é feita pelo administrador do SVN, ele acrescenta:

[groups]
projadmins = zzzz

Ele confirma sua modificação e atualiza o arquivo authz.

Então o gerente de projeto 'zzzz' pode adicionar, remover ou declarar qualquer grupo de usuários e qualquer usuário que ele queira. Ele confirma o arquivo e o arquivo authz é atualizado.

Dessa forma, o administrador do SVN não precisa seguir nenhum usuário para todos os repositórios SVN.

27
VonC

Um pegadinha que me pegou:

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

mas

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

Você não precisa incluir uma barra no diretório, ou você verá 403 para a solicitação OPTIONS.

26
Chris Burgess

Você pode usar svn + ssh: e, em seguida, é baseado no controle de acesso ao repositório no local fornecido.

É assim que eu hospedo um repositório de grupos de projetos na minha Uni, onde não posso configurar mais nada. Apenas ter um diretório que o grupo possua e rodar o svn-admin (ou o que quer que seja) significa que eu não precisei fazer nenhuma configuração.

8
Matthew Schinckel

Embora eu sugira que a abordagem do Apache seja melhor, o SVN Serve funciona bem e é bastante simples.

Assumindo que seu repositório é chamado "my_repo", e é armazenado em c:\svn_repos:

  1. Crie um arquivo chamado "passwd" em "C:\svn_repos\my_repo\conf". Este arquivo deve se parecer com:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. No conjunto c:\svn_repos\my_repo\conf\svnserve.conf

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

Isso forçará os usuários a fazer login para ler ou gravar neste repositório.

Siga estas etapas para cada repositório, incluindo apenas os usuários apropriados no arquivo passwd para cada repositório.

5
RB.

A melhor maneira é configurar o Apache e definir o acesso através dele. Verifique o svn book para ajuda. Se você não quiser usar o Apache, você também pode fazer um controle de acesso minimalista usando o svnserve.

3
Mladen Mihajlovic