La ruta del archivo excede el límite del sistema, ¿puede git resolverlo? Por lo tanto, generalmente se crea una cuenta de git en el servidor de git, y otras personas usan esta cuenta para clonar o enviar datos al almacén de git. Por lo general, solo se necesita esta función, pero si no se agregan restricciones, entonces. Otras personas pueden iniciar sesión en el host a través de esta cuenta de git, que no es segura, por lo que debe restringirse. El método es el siguiente: edite el archivo /etc/passwd y busque esta línea al final del archivo: git. :x:1000:1000::/hit passwd file , busque dicha línea al final del archivo: git:x:1000:1000::/home/git:/bin/sh, y luego cambie /bin/sh a /usr/bin/git-shell, de modo que la cuenta de git solo se pueda usar para clonar o enviar datos al repositorio de git, pero no se puede usar para iniciar sesión en el host. Inicie sesión en el anfitrión. Almacenar la clave pública del usuario en el archivo autorizado_keys solo funciona para una pequeña cantidad de desarrolladores, pero si la cantidad de desarrolladores llega a cientos, será engorroso de administrar porque cada vez que se agrega o elimina un usuario, es necesario iniciar sesión en el servidor. y Falta de gestión de permisos necesaria, porque los usuarios tienen permisos de lectura y escritura en todos los proyectos de git en /home/git. Puede utilizar gitosis, un script que gestiona archivos de claves_autorizadas y restricciones de conexión simples. Agregar o eliminar usuarios o configurar permisos se realiza administrando un repositorio git especial, simplemente lo configura en consecuencia y lo envía al servidor, y gitosis cambiará sus políticas en consecuencia. Suena bien, ¿verdad? Lo primero que debe hacer es instalar gitosis, que depende de algunas herramientas de Python, por lo que necesita instalar los paquetes necesarios: $ sudo apt-get install python-setuptools A continuación, clone el repositorio de gitosis e instale: $ git clone /tv42/ gitosis.git $ cd gitosis $ sudo python setup. Si cambió /bin/sh a /usr/bin/git-shell en /etc/passwd, entonces necesita volver a cambiarlo (no sé cómo cambiarlo). , pero si es así, puedes iniciar sesión en el host con tu cuenta de git). El siguiente paso es inicializar gitosis y ejecutar el comando gitosis-init (tenga en cuenta que gitosis-init debe ejecutarse en el servidor): $ sudo -H -u git gitosis-init lt /tmp/id_rsa.pub Git vacío inicializado; repositorio en /home/git /repositories/gitosis-admin.git/ Reinicializado el repositorio Git existente en /home/git/repositories/gitosis-admin.git/ El propietario de la clave pública ahora puede configurar el repositorio git especial de gitosis y luego ejecutar manualmente el script posterior a la actualización en ese repositorio Agregue permisos ejecutables: $ sudo chmod x /home/git/repositories/gitosis-admin.git/hooks/post-update Nota: Primero, debe eliminar el directorio .ssh en el servidor (incluido el archivo de claves_autorizadas).
La razón por la que necesita eliminar el directorio .ssh es porque el comando gitosis-init creará el directorio .ssh en el directorio /home/git, creará el archivo autorizado_keys en el directorio .ssh y luego escribirá la clave id_rsa.pub. en el archivo autorizado_keys, para que el propietario de la clave pueda acceder al repositorio gitosis-admin.git. Este repositorio de git en particular, gitosis-admin.git, ha sido creado y el propietario de la clave tiene acceso, por lo que el siguiente paso es desplegarlo: $ git clone git@gitserver:repositories/gitosis-admin.git admin.git NOTA: De esta manera, el comando se convierte en $ git clone git@gitserver:gitosis-admin.git. De lo contrario, aparecerá el siguiente error: $ git clone git@gitserver:repositories/gitosis-admin.git Clonar a "gitosis-admin". ..ERROR:gitosis.serve.main: Acceso de lectura al repositorio denegado fatal: El extremo remoto se colgó inesperadamente porque ¿cuál es el motivo? Si desea crear otros repositorios, es mejor colocarlos en el mismo directorio; de lo contrario, es lo mismo. Se mostrará un error. Una cosa a tener en cuenta es que el repositorio de git en el servidor debe tener un sufijo .git; de lo contrario, el clon se encontrará por el nombre (repository.git). no será encontrado. Si la clonación es exitosa, el directorio gitosis-admin aparecerá localmente. Puede ingresar al directorio para echar un vistazo. Hay dos cosas principales en el directorio: gitosis.conf y keydir. gitosis.conf es principalmente un archivo de configuración que se utiliza para configurar usuarios, almacenes y permisos, mientras que el directorio keydir se utiliza para guardar la clave pública del usuario. Cada usuario debe tener una clave .git. Cada usuario debe tener un archivo que termine en .pub, como scott.pub, y gitosis.conf tiene este aspecto: $ cat gitosis.conf [gitosis] [grupo gitosis-admin] miembros = scott writable = gitosis-admin Esto significa que Sólo el usuario Scott puede gestionar el proyecto gitosis-admin. Después de eso, necesitamos agregar un proyecto git llamado iphone_project, porque solo existe el usuario scott (tenga en cuenta que el nombre de usuario especificado en miembros debe ser el mismo que el nombre delante de ".pub", por ejemplo, si es scott .pub, luego escribe scott aquí. Eso es todo.