it-swarm-es.com

¿Cómo configurar el control de acceso en SVN?

He configurado un repositorio utilizando SVN y proyectos cargados. Hay múltiples usuarios trabajando en estos proyectos. Pero, no todos están trabajando en todos los proyectos y requieren acceso. Quiero configurar permisos para cada uno de los proyectos con los usuarios.

¿Cómo logro esto?

79
user15425

En su carpeta svn\repos\YourRepo\conf encontrará 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. Supongo que ya lo has hecho ya que hay personas que lo usan:

[users]
User1=password1
User2=password2

Entonces desea asignar permisos de acuerdo con el archivo authz :

Cree los grupos conceptuales que desee y agregue personas a ellos:

[groups]
allaccess = user1
someaccess = user2

Luego, elija qué acceso tienen, tanto de los permisos como del nivel del proyecto.

Así que vamos a darles acceso a nuestros chicos de "acceso total" desde la raíz:

[/]
@allaccess = rw

Pero solo dé a nuestros chicos de "algún acceso" acceso de solo lectura a algún proyecto de nivel inferior:

[/someproject]
@someaccess = r

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

82
Stephen Bailey

@Stephen Bailey

Para completar su respuesta, también puede delegar los derechos de usuario al administrador 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 authz predeterminado 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 archivo authz predeterminado autoriza a los administradores de SVN a modificar un archivo de texto visible dentro de su repositorio de SVN, llamado '/admin/acl_descriptions.txt' , en el cual los administradores de SVN o los gerentes de proyectos modificarán y registrarán a los usuarios.

Luego, configura un gancho de confirmación previa que detectará si la revisión se compone de ese archivo (y solo de ese archivo).

Si es así, estos scripts de enganche validarán el contenido de su archivo de texto sin formato y comprobarán si cada línea cumple con la sintaxis de SVN.

Luego, un enlace posterior a la confirmación actualizará el archivo \conf\authz con la concatenación de:

  • el archivo TEMPLATE authz presentado arriba
  • el archivo de texto plano /admin/acl_descriptions.txt

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

[groups]
projadmins = zzzz

Él confirma su modificación, y eso actualiza el archivo authz.

Luego, el administrador de proyectos 'zzzz' puede agregar, eliminar o declarar cualquier grupo de usuarios y cualquier usuario que desee. Él confirma el archivo y el archivo authz se actualiza.

De esa manera, el administrador de SVN no tiene que seguir a ningún usuario para todos los repositorios de SVN .

27
VonC

Una gotcha que me atrapó:

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

pero

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

No debe incluir una barra diagonal final en el directorio, o verá 403 para la solicitud de OPCIONES.

26
Chris Burgess

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

Así es como alojo un repositorio de grupo de proyectos en mi Uni, donde no puedo configurar nada más. El solo hecho de tener un directorio que el grupo posee y ejecutar svn-admin (o lo que sea que sea) significa que no tuve que hacer ninguna configuración.

8
Matthew Schinckel

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

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

  1. Cree un archivo llamado "passwd" en "C:\svn_repos\my_repo\conf". Este archivo debería verse como:

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

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

Esto obligará a los usuarios a iniciar sesión para leer o escribir en este repositorio.

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

5
RB.

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

3
Mladen Mihajlovic