Utilizzando Git senza Sudo in molti conti
Domanda
Come si può utilizzare Git senza Sudo a più account in un unico Ubuntu?
Il mio Ubuntu ha molti conti. La creazione di nuovi account ha reso inaccessibile Git da me, senza sudo.
Ho cambiato il proprietario di essere me, Masi, e il gruppo ad essere admin
dove il Masi appartiene.
Ho le seguenti autorizzazioni per Git
800 -rwxrwxrwx 1 masi admin 813744 2009-02-20 23:01 /usr/bin/git
ottengo il seguente messaggio nel tentativo di usare Git
git status
fatal: unable to create '.git/index.lock': Permission denied
Corro find . -iregex ".*index.l.*
che restituisce nessun risultato così non sembra esserci alcuna index.lock nel blocco del sistema. Corro lo stesso comando anche con sudo senza successo.
Soluzione
Se ho capito bene la tua domanda, è necessario concedere diversi * nix account utente l'accesso in scrittura allo stesso repository git. Utilizzando l'argomento della riga di comando per --share
git init
dovrebbe permettere questo. Il GitWiki ha qualche parola da dire su questo . Questo dovrebbe fare il trucco:
git --bare init --shared=all
Se è già stato creato il repository, si potrebbe essere in grado di convertirlo in un "repository condiviso" lanciando questo comando:
git repo-config core.sharedRepository true
nel repository, come indicato nel noreferrer un post a moserei.de .
2014 update: Questo è ancora possibile, ma il comando è cambiato da repo-config per config.
git config core.sharedRepository true
Altri suggerimenti
Git è pensato per essere distribuito. Quindi, ogni utente dovrebbe essere avere un repository separata della sua / il suo. Il metodo sopra contraddice questa metodologia. A parte questo, ho il sospetto che i permessi della directory .git
.
Direi la proprietà della directory .git
sono il problema.
Non si deve usare un albero di origine da diversi utenti - è probabile che portare a problemi
. L'eseguibile git
non è il problema. Dovrebbe essere di proprietà di root, ed avere i permessi 755. (-rwxr-xr-x
)
In altre parole è possibile utilizzare git da più account, ma non si deve condividere una singola directory di lavoro.
Avere i permessi di ogni set di file eseguibile in modo che un utente normale può sovrascrivere il file eseguibile è un notevole rischio per la sicurezza. (Prova sovrascrivendo /usr/bin/git
con uno script di shell che chiama rm -rf $HOME
.)
Modifica le autorizzazioni di nuovo a 755 e fare git di proprietà di root: root di nuovo. (Gestore di pacchetti di Ubuntu avrebbe reimpostare le autorizzazioni per il prossimo aggiornamento in ogni caso a meno che non si è utilizzato dpkg-statoverride(8)
)
Sono d'accordo con chi dice che non può essere una buona idea avere più utenti di condividere un unico repository git. Se ancora pensate che sia necessario, prendere in considerazione la creazione di un nuovo gruppo, chgrp
la directory che contiene il repository e tutti i file in essa a quel gruppo andset il bit setgid sulle directory. (Il parametro --shared
a git init
può fare un po 'di questo per voi, anche.) Quindi, aggiungere tutti gli utenti al gruppo che dovrebbe avere impegnarsi diritti.
È possibile verificare i membri utilizzando
members groupname
Quindi è possibile impostare il livello di autorizzazione per il nome utente: coppia di groupname,
change the ownership
sudo chown -v -R username:groupname sprout
chmod -R g+w .git/*