2008-09-17 62 views
77

He configurado un repositorio usando SVN y proyectos cargados. Hay varios usuarios trabajando en estos proyectos. Pero no todos trabajan en todos los proyectos y requieren acceso. Quiero configurar los permisos para cada uno de los proyectos con los usuarios.¿Cómo configurar el control de acceso en SVN?

¿Cómo logro esto?

Respuesta

3

La mejor manera es configurar Apache y configurar el acceso a través de él. Consulte svn book para obtener ayuda. Si no quiere usar Apache, también puede hacer un control de acceso minimalista usando svnserve.

82

En su carpeta SVN \ repos \ YourRepo \ conf se encuentran dos archivos, authz y passwd. Estos son los dos que necesitas ajustar.

En el archivo passwd, debe agregar algunos nombres de usuario y contraseñas. Asumo que ya ha hecho esto ya que usted tiene personas que lo usan:

[users] 
User1=password1 
User2=password2 

Entonces desea asignar permisos en consecuencia con la authz archivo:

Crear los grupos conceptuales que desea, y agregar personas a it:

[groups] 
allaccess = user1 
someaccess = user2 

A continuación, elija qué acceso tienen desde los permisos y el nivel del proyecto.

Así que vamos a dar a nuestros "All Access" chicos todos los accesos desde la raíz:

[/] 
@allaccess = rw 

Pero sólo dan nuestros "algún tipo de acceso" chicos acceso de sólo lectura a algún proyecto de nivel inferior:

[/someproject] 
@someaccess = r 

También encontrará documentación simple en los archivos authz y passwd.

+7

página del manual de referencia es: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html – ErichBSchulz

+0

Nota: no funcionará si accede al repositorio directamente a través de ssh (sin svnserve) –

+0

Cuando doy por ejemplo una carpeta debajo de un repositorio al usuario, el usuario solo puede acceder a esta carpeta con enlace directo. ¿Es posible para el usuario agregar repositorio y solo se le muestran las carpetas asignadas? Gracias por la respuesta . – maoanz

4

Aunque sugeriría que el enfoque de Apache es mejor, SVN Serve funciona bien y es bastante sencillo.

Asumiendo que su repositorio se llama "my_repo", y se almacena en c: \ svn_repos:

  1. crear un archivo llamado "passwd" en "C: \ svn_repos \ my_repo \ conf". Este archivo debe ser similar:

    [Users] 
    username = password 
    john = johns_password 
    steve = steves_password 
    
  2. en C: \ svn_repos \ my_repo \ conf \ svnserve.conf establece

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

Esto obligará a los usuarios a la cuenta para leer o escribir en este repositorio.

Siga estos pasos para cada repositorio, solo incluya los usuarios apropiados en el archivo passwd para cada repositorio.

+0

Precaución: ¡Las contraseñas se almacenan en texto sin formato en el archivo conf de SVN! – AVA

6

Puede usar svn + ssh :, y luego se basa en el control de acceso al repositorio en la ubicación especificada.

Así es como organizo un repositorio de grupos de proyectos en mi Uni, donde no puedo configurar nada más. Solo tener un directorio que pertenezca al grupo y ejecutar svn-admin (o lo que sea) allí significa que no tuve que hacer ninguna configuración.

+0

Esta es una respuesta pésima. Este método ssh está mal documentado y parece funcionar solo para Linux. – user1040323

+0

Simplemente no es cierto. Solo se necesita ejecutar un daemon SSH en su servidor de Windows y svn + ssh funciona para Windows exactamente igual que para Linux. Hay muchos tutoriales que explican cómo ejecutar SSH en una máquina de Windows. –

+0

También, querida @ user1040323, hay otras plataformas que no son Linux además de Windows: bastante seguro de que la máquina en la que estaba _no era Linux, sino una variante de BSD. –

26

@Stephen Bailey

Para completar su respuesta, también puede delegar derechos de usuario para el director del proyecto, a través de un archivo de texto sin formato en su repositorio.

Para hacer eso, configura su base de datos SVN con un archivo predeterminado authz que contiene lo siguiente.

########################################################################### 
# 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 defecto authz archivo de autorizar a los administradores de SVN para modificar un archivo de texto sin formato visibles dentro de su repositorio SVN, llamados '/admin/acl_descriptions.txt', en la que los administradores de SVN o gestores de proyectos y modificarán registrar a los usuarios.

Luego configura un enganche precompromiso que detectará si la revisión está compuesta por ese archivo (y solo ese archivo).

Si es así, este scripts de gancho validará el contenido de su archivo de texto plano y comprobará si cada línea cumple con la sintaxis correcta de SVN.

A continuación, un post-commit hook se actualizará el archivo \conf\authz con el concatenación de:

  • la PLANTILLA authz archivo presentado anteriormente
  • el archivo de texto plano /admin/acl_descriptions.txt

La primera la iteración es realizada por el administrador SVN, agrega:

[groups] 
projadmins = zzzz 

Confirma su modificación y actualiza el archivo authz.

Luego, el administrador del proyecto 'zzzz' puede agregar, eliminar o declarar cualquier grupo de usuarios y cualquier usuario que desee. Confirma el archivo y se actualiza el archivo authz.

De esta manera, el administrador SVN no tiene que seguir a todos los usuarios de todos los repositorios SVN.

25

Uno de gotcha que me llamó a cabo:

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

pero

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

Es necesario para que no incluya una barra diagonal en el directorio, o verá 403 para la solicitud de OPCIONES.

+0

WTF, no busqué esto, pero fue exactamente la respuesta para mi problema = D – Fox32

Cuestiones relacionadas