2009-02-18 20 views
9

Estoy usando un repositorio de Subversion alojado en Dreamhost para un proyecto.¿Cómo evito que un usuario de subversión acceda a una parte del repositorio?

Me gustaría permitir el acceso a algunos usuarios de forma restringida. Por lo menos, me gustaría permitir el acceso de solo lectura para algunos usuarios, pero idealmente quisiera evitar que algunos usuarios vean algunas partes del repositorio. No puedo encontrar permisos de usuario mencionados en los documentos web para Subversion, aunque supongo que está allí?

Estoy acostumbrado a usar Perforce, entonces lo que quiero es lo que p4 protect hace por Perforce.

Gracias.

Respuesta

12

Eche un vistazo al archivo authz en el directorio conf /. Puede establecer permisos para usuarios específicos y directorios específicos. En svnserve.conf puede especificar si los usuarios anónimos tienen acceso de lectura o no.

He aquí un ejemplo de un repositorio mío:

[groups] 
project1_team = dave, john, andy 

[/] 
* = 
dave = rw 

[/project1] 
@project1_team = rw 

[/project2] 
andy = r 

lo que está sucediendo aquí es que he definido un grupo de usuarios que tienen acceso completo al proyecto 1; dave (que soy yo) tiene acceso completo a todo el repositorio, mientras que andy tiene acceso de solo lectura a project2.

+0

observe que tiene que establecer 'AuthzSVNAccessFile ' en su dav_svn.conf si está utilizando mod_dav_svn de apache – fishbone

0

No estoy familiarizado con la configuración específica que utiliza Dreamhost, pero la forma típica de aplicar los permisos es utilizar los mecanismos de autenticación de Apache. Aquí está el relevant page de la documentación de Subversion.

0

El Subversion Book tiene su respuesta right here.

En serio, personas: ¿cuándo ha pasado de moda leer la documentación más básica antes de molestar a otras personas?

3

En los servidores web, normalmente hay un archivo de configuración (que se puede llamar cualquier cosa) para ejecutar authorization. Cada depósito tiene una lista como
[mi-repositorio: /]
miUsuario = rw

que daría 'miUsuario' leer & permiso de escritura en el repositorio completo. También puede hacer:

[mi-repositorio/just-este-carpeta /:]
somejerk: r

Qué debe hacer lo que quiera.

0

Ver la respuesta aceptada arriba. Sin embargo, para los detalles de Dreamhost, en el directorio ~/svn hay dos archivos para cada repositorio repo_name.access y repo_name.passwd. Donde repo_name es el nombre que le dio a su repositorio. Puede editar el archivo repo_name.access como se describe en la respuesta aceptada.

No olvide chmod 644 repo_name.access después de editarlo para que apache pueda acceder a él.

2

Si está utilizando SVN y Apache juntos, seguir el siguiente procedimiento:

Tenga en cuenta que el mejor nivel de permiso que puede administrar estará en función de cada repositorio.Suponga que tiene repository1 y repository2

1- Hacer usuario (s) apropiado para cada repositorio en un archivo separado:

sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY1.passwd $user_name_for_repository1 
sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY2.passwd $user_name_for_repository2 

Si desea agregar más usuarios a cada archivo, quitar el -c de la mando. porque es solo para crear el archivo por primera vez.

2- Editar el siguiente archivo:

nano /etc/apache2/mods-available/dav_svn.conf 

tendrá una sección como esta:

<Location /svn> 
    SVNPath $your svn repository path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 

Copiar este bloque para cada repositorio que tiene, en nuestro caso se necesita una cuadra más Me gusta esto . Ahora, deshacerse de (eliminar) el bloque de arriba y añadir el siguiente bloque que son copias alteradas de lo anterior uno:

<Location /svn/repository1> 
    SVNPath $your svn repository1 path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn_REPOSITORY1.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 
<Location /svn/repository2> 
    SVNPath $your svn repository2 path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn_REPOSITORY2.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 

3- Guarde el archivo y reinicie el Apache.

Cuestiones relacionadas