En utilisant Git sans Sudo dans de nombreux comptes
Question
Comment pouvez-vous utiliser Git sans Sudo dans plusieurs comptes dans un Ubuntu?
Mon Ubuntu a beaucoup de comptes. La création de nouveaux comptes a rendu inaccessible Git par moi sans sudo.
J'ai changé le propriétaire d'être moi, masi, et le groupe à admin
où le masi appartient.
Je les autorisations suivantes pour Git
800 -rwxrwxrwx 1 masi admin 813744 2009-02-20 23:01 /usr/bin/git
Je reçois le message suivant en essayant d'utiliser Git
git status
fatal: unable to create '.git/index.lock': Permission denied
Je lance find . -iregex ".*index.l.*
qui retourne aucune correspondance il semble donc y avoir aucun index.lock à verrouiller le système. Je lance la même commande aussi avec succès sudo.
La solution
Si je comprends bien votre question, vous devez accorder plusieurs comptes d'utilisateurs * nix accès en écriture au même dépôt git. En utilisant l'argument de ligne de commande pour --share
git init
devrait permettre cela. Le GitWiki a quelques mots à dire à ce sujet . Cela devrait faire l'affaire:
git --bare init --shared=all
Si vous avez déjà créé votre dépôt, vous pourriez être en mesure de le convertir en un « référentiel partagé » en lançant cette commande:
git repo-config core.sharedRepository true
dans votre dépôt, comme indiqué dans un billet de blog à moserei.de .
2014 mise à jour: Ceci est encore possible, mais la commande a changé de config-repo à config.
git config core.sharedRepository true
Autres conseils
Git est destiné à être distribué. Ainsi, chaque utilisateur doit être d'avoir un dépôt séparé de son / elle-même. La méthode ci-dessus contredit cette méthodologie. En dehors de cela, je pense que les permissions du répertoire .git
.
Je suppose que la propriété du répertoire .git
sont le problème.
Vous ne devriez pas utiliser un arbre source de différents utilisateurs - il est susceptible de conduire à des problèmes
. L'exécutable git
n'est pas la question. Il devrait appartenir à la racine, et a 755 autorisations. (-rwxr-xr-x
)
En d'autres termes, vous pouvez utiliser git à partir de plusieurs comptes, mais vous ne devez pas partager un seul répertoire de travail.
Avoir les autorisations d'un ensemble exécutable de sorte qu'un utilisateur normal peut remplacer l'exécutable est un risque de sécurité considérable. (Essayez avec un /usr/bin/git
écraser script shell qui appelle rm -rf $HOME
.)
Modifier les autorisations de retour à 755 et faire git appartenant à root: root à nouveau. (Gestionnaire de paquets d'Ubuntu serait réinitialiser les autorisations sur la prochaine mise à jour de toute façon, sauf si vous avez utilisé dpkg-statoverride(8)
)
Je suis d'accord avec ceux qui disent qu'il ne peut pas être une bonne idée d'avoir plusieurs utilisateurs partagent un dépôt git. Si vous pensez toujours qu'il est nécessaire, envisager la création d'un nouveau groupe, chgrp
le répertoire contenant le référentiel et tous les fichiers qui y sont à ce groupe etrégler le bit setgid sur les répertoires. (Le paramètre --shared
à git init
peut faire un peu de cela pour vous aussi.) Ensuite, ajoutez tous les utilisateurs du groupe qui devrait avoir engager des droits.
Vous pouvez vérifier les membres en utilisant
members groupname
Ensuite, vous pouvez régler le niveau d'autorisation pour le nom d'utilisateur: paire groupname,
change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*