Les autorisations sont un ravageur.
En gros, vous devez vous assurer que tous ces développeurs peuvent écrire dans tout le référentiel git.
Passez à la solution New-Wave pour la méthode supérieure d’octroi de capacités d’écriture à un groupe de développeurs.
La solution standard
Si vous placez tous les développeurs dans un groupe spécialement créé, vous pouvez en principe simplement:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Modifiez ensuite le paramètre umask
pour les utilisateurs 002
afin que les nouveaux fichiers soient créés avec des autorisations accessibles en écriture au groupe.
Les problèmes avec ceci sont légion; Si vous êtes sur une distribution qui suppose un umask
de 022
(comme avoir un users
groupe commun qui inclut tout le monde par défaut), cela peut créer des problèmes de sécurité ailleurs. Et tôt ou tard, quelque chose va bousiller votre système de permissions soigneusement conçu, mettant le référentiel hors d’action jusqu’à ce que vous obteniez un root
accès et le corrigiez (c’est-à-dire, relancez les commandes ci-dessus).
La solution New-Wave
Une solution supérieure - bien que moins bien comprise et nécessitant un peu plus de prise en charge des systèmes d’exploitation / des outils - consiste à utiliser les attributs étendus POSIX. Je ne suis venu dans cette région que récemment, donc mes connaissances ne sont pas aussi intéressantes que possible. Mais fondamentalement, une liste de contrôle d'accès étendue permet de définir des autorisations sur plus de 3 emplacements par défaut (utilisateur / groupe / autre).
Alors encore une fois, créez votre groupe, puis lancez:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
Cela configure la liste de contrôle d'accès étendue pour le groupe afin que les membres du groupe puissent lire / écrire / accéder aux fichiers déjà présents (la première ligne); Ensuite, indiquez également à tous les répertoires existants que la même liste de contrôle d'accès doit être appliquée aux nouveaux fichiers (la deuxième ligne).
J'espère que cela vous amène sur votre chemin.