git: la mejor forma de configurar el model de usuario en "server de background"

Tengo una pregunta muy específica sobre el model de usuario. (Supongo que hacer esta pregunta traicionará mi ignorancia, pero bueno, ¡solo quiero saber!)

Tengo un server simple de Ubuntu que albergará nuestro repository de proyectos, del cual unos 6 chicos clonarán el proyecto. Cada uno tiene su propia count de usuario en este host. El repository de proyectos reside en la ruta /home/git/project-name.git . Podría configurar un grupo para acorralar a estos usuarios y al usuario git.

Cuando los usuarios desarrolladores acceden a este repository remoto, no quiero que lo hagan como el mismo usuario (digamos usuario 'git' o algo así) ya que quiero saber quién ha hecho qué.

Si hago que todos coloquen una key id_rsa.pub.name en la ruta /home/git/.ssh/ , luego añádanse a * / home / git / .ssh / authorized_keys *, no voy a averiguar quién lo hizo ¿que derecho?

Por lo tanto, ¿ otorgo acceso completo a /home/git/project-name.git para cada uno de los grupos a los que pertenecen las counts de usuario desarrollador en este host?

Cualquier consejo sería bienvenido.

Gracias, Russ

Solutions Collecting From Web of "git: la mejor forma de configurar el model de usuario en "server de background""

La práctica general es tener una count en lugar de tener varias counts ssh para todos los que deseen ingresar a un repository.

http://progit.org/book/ch4-4.html

http://blog.felipebalbi.com/2008/01/03/git-push-and-ssh-keys/

Esto no le quita la capacidad de saber quién cometió qué. El autor / committer es independiente del usuario de ssh.

En lugar de Gitosis, recomendaría Gitolite para get una autorización detallada junto con la authentication basada en ssh.

Recomiendo usar algo como Gitolite ( download ) para lo que quieras, para que puedas elegir quién tiene acceso a qué. Configura un usuario "git" que todo el mundo usa para empujar a Git. Git mismo rastrea quién hizo qué cometer, por lo que no debes perder eso.

Dejar que varios usuarios escriban en un repository no significa que podrá determinar "quién ha hecho qué".

Es cierto que el primer usuario (server-local) que crea un object particular (blob, tree, compromiso, label anotada) será el propietario del file de object suelto del object (aunque cualquier otro usuario con acceso de escritura podría probablemente eliminar y reescribir el file), pero finalmente esos files de objects sueltos son efímeros. Los objects sueltos individuales eventualmente serán empaquetados y eliminados (por ejemplo, a través de git gc , ya sea manualmente o automáticamente una vez que se hayan acumulado suficientes objects sueltos).

Git no tiene authentication ni autorización, por lo tanto no tiene idea del "usuario" que está haciendo un push 1 . Como no tiene un concepto del usuario activo, no puede proporcionar un logging de "quién empujó / modificó / eliminó qué". Si necesita un logging de auditoría de este tipo , deberá confiar en la herramienta que esté realizando la authentication. Desafortunadamente, muchas herramientas de hospedaje de Git se centran en la naturaleza distribuida de Git, por lo que tienden a no ofrecer mucho soporte para funciones "centralizadas" como un logging de auditoría. Sin embargo, hay algunas excepciones:

  • Gitolite mantiene un logging que podría usarse como logging de auditoría (la authentication la realiza el server SSH o el server HTTP, pero Gitolite hace la autorización).
  • Gerrit parece tener algunas restricciones integradas que intentan asociar más fuertemente la información del usuario del autor (y del autor, dependiendo de la configuration) con las counts de usuario autenticado (vea Forge Identity ); si bien este no es un logging de auditoría, puede ser suficiente si restringe constantemente la autoridad de "falsificación".

(Probablemente haya otras herramientas o services que también tengan algunas funciones de logging / restricción).

Ver también: historial de logging de Git

1 Git realiza un seguimiento de un autor y un committer para cada commit (labeldor para cada label anotada), pero sus valores no están restringidos por Git. Cualquiera puede cambiar el autor o el autor efectivo al cambiar (o anular) sus variables de configuration user.email y user.name o establecer las variables de entorno GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME y GIT_COMMITTER_EMAIL al realizar un commit o label.