11
votes

Utiliser GIT sans sudo dans de nombreux comptes

Comment pouvez-vous utiliser Git sans sudo dans plusieurs comptes dans un Ubuntu? strong>

My Ubuntu a de nombreux comptes. La création de nouveaux comptes a rendu git inaccessible par moi sans sudo. P>

J'ai changé le propriétaire pour être moi, MASI et le groupe d'être admin code> où le MASI em> appartient à. J'ai les autorisations suivantes pour GIT P>

git status
fatal: unable to create '.git/index.lock': Permission denied


3 commentaires

"La création de nouveaux comptes a rendu git inaccessible par moi sans sudo." Vous devez prendre cela comme un signe que quelque chose ne va pas avec votre compte, votre configuration système ou votre installation. C'est un comportement extrêmement anormal - GIT est une application normale d'utilisateurs, accessible par tous les utilisateurs ordinaires dans une installation normale Ubuntu.


Pour référence, les autorisations / appropriation appropriées pour / usr / bin / git * sont 755 / root.root, comme indiqué à la réponse de Hillu. Vous pouvez avoir accidentellement définir les autorisations afin que seuls les membres du groupe ou le propriétaire puissent exécuter «git» (c.-à-d. Les autorisations sont 744 AKA -RWXR-R-- plutôt que 755). Omettre de corriger ces autorisations représente un risque de sécurité grave pour votre système.


Je pense que plusieurs pages sur Web suggèrent d'effectuer une configuration avec des commandes telles que: sudo git config --global user.name "Votre nom" et cela génère des problèmes dans la propriété .git. Dans le système d'exploitation multi-utilisateur, il est bien préférable d'utiliser Git Config Sans sudo.


5 Réponses :


5
votes

Je suppose que la propriété du répertoire .git est le problème.

Vous ne devriez pas utiliser un arborescence source de différents utilisateurs - il risque de mener à des problèmes.

Le git exécutable n'est pas le problème. Il devrait appartenir à la racine et avoir 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.


0 commentaires

8
votes

Git est destiné à être distribué. Donc, chaque utilisateur devrait avoir un référentiel distinct de sa propre / ses propres. La méthode ci-dessus contredit cette méthodologie. En dehors de cela, je pense que les autorisations du .git .


0 commentaires

18
votes

Si je comprends votre question correctement, vous devez accéder à plusieurs comptes d'utilisateurs * Nix en écriture de l'accès au même référentiel Git. Utilisation de l'argument de ligne de commande code> - partager code> pour git init code> doit permettre cela. Le gitwiki a Quelques mots à dire à propos de ceci . Cela devrait faire l'astuce: xxx pré>

Si vous avez déjà créé votre référentiel, vous pourrez peut-être le convertir en un "référentiel partagé" en lançant cette commande: p>

git config core.sharedRepository true


3 commentaires

Existe-t-il un moyen de rétro-activer activement un référentiel git-uré si vous avez effectué une initiale initiale de Git non partagée?


@Steve Foley: Je crois que le deuxième échantillon de code dans ma réponse devrait résoudre ce problème. Je n'ai pas vraiment essayé cela moi-même, cependant.


@ Jørn Schou-Rode: Doh! Désolé, j'aurais dû payer plus d'attention!



3
votes

avoir les autorisations de tout ensemble exécutable de sorte qu'un utilisateur normal puisse écraser l'exécutable est un risque de sécurité considérable. (Essayez écrasement / usr / bin / git avec un script shell qui appelle rm -rf $ home .) .

Changez les autorisations de retour à 755 et créez git la racine: racine à nouveau. (Le gestionnaire de paquets de Ubuntu réinitialiserait les autorisations de la prochaine mise à niveau, sauf si vous avez utilisé dpkg-statoverride (8) )

Je suis d'accord avec ceux qui disent que ce n'est pas une bonne idée d'avoir plusieurs utilisateurs partagent un référentiel git. Si vous pensez toujours que cela est nécessaire, envisagez de configurer un nouveau groupe, CHGRP Le répertoire qui détient le référentiel et tous les fichiers à ce groupe à ce groupe, puis sur le bit SetGID sur les répertoires. (Le paramètre - partagé sur git init peut faire une partie de cela pour vous aussi.) Ajoutez ensuite tous les utilisateurs au groupe qui devraient avoir des droits de validation. < / p>


0 commentaires

0
votes

Vous pouvez vérifier les membres à l'aide de

change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*


0 commentaires