Saltar al contenido

¿Cómo hacer que un repositorio de git sea de solo lectura?

Solución:

Hay más de una forma posible de hacer esto.

  • Si cada uno de sus usuarios tiene una cuenta shell (quizás limitada) y cada uno de ellos accede a los repositorios de git a través de su propia cuenta, puede usar permisos del sistema de archivos para controlar el acceso SSH a los repositorios de git. En Unix esos serían permisos de escritura en directorios, quizás con la ayuda de la creación de un grupo y permisos específicos para un grupo (con el “ID de grupo fijo” configurado).

  • Empujar requiere git-receive-pack estar en $ PATH del usuario y ser ejecutable para ellos … aunque no estoy seguro de cuán factible sería este enfoque.

  • Puedes usar update o pre-receive gancho para hacer control de acceso al repositorio, por ejemplo, usando el gancho de ejemplo update-paranoid de contrib/hooks en fuentes git.

  • Con una mayor cantidad de usuarios, podría mejorar con el uso de un herramienta para administrar el acceso a los repositorios de git, como Gitosis (en Python, requiere herramientas de configuración) o Gitolite (en Perl).

  • Para acceso de solo lectura, puede configurar demonio git para proporcionar acceso anónimo (y no autenticado) de solo lectura a través de git:// protocolo, en lugar de acceder a través del protocolo SSH.

    Ver documentación para url.<base>.insteadOf config variable para facilitar la transición del protocolo SSH al protocolo GIT.


Consulte también el Capítulo 4. “Git en el servidor” del libro Pro Git de Scott Chacon (con licencia CC-BY-NC-SA).

A pre-receive gancho que simplemente imprime un mensaje informativo y sale con un estado distinto de cero hace el trabajo.

Suponiendo que pones información significativa en tu mensaje, también reduce las consultas de los usuarios frustrados que preguntan por qué no pueden presionar:

#!/bin/bash
echo "=================================================="
echo "This repository is no longer available for pushes."
echo "Please visit blah blah yadda yadda ...."
echo "=================================================="
exit 1

Recuerde establecer el permiso ejecutable para el script y asegurarse de que sea propiedad del usuario y / o grupo correcto, o de lo contrario no se ejecutará y no dará ninguna advertencia.

chmod -R a-w /path/to/repo.git
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *