2010-10-11 17 views
5

Non sono sicuro se questo dovrebbe andare qui, o in superutente (come sembra riguardare entrambi gli argomenti), quindi l'ho messo qui, se non è appropriato, Andrò a chiedere a superuser.Dare accesso in sola lettura a un repository git

In ogni caso, ho un repository git che non può andare completamente open source (altrimenti lo metterei semplicemente su github e averlo finito), e ho un server con accesso ssh (ma non accesso superutente) a, questo server ha già tutti i binari git su di esso. Devo dare a qualcuno un accesso in sola lettura a questo git-repo (o almeno un accesso di sola lettura ad alcuni rami, anche se immagino sia molto più difficile).

Attualmente sto usando ssh per spingere e interrogare il mio repository git locale su questo server. C'è un modo per dare ad un'altra persona la possibilità di leggere solo l'accesso al server? (Suppongo che io stia bene con noi entrambi con accesso in scrittura al repository, anche se non sono sicuro di come farlo con i permessi unix, dato che non ho la possibilità di creare nuovi gruppi unix perché non ho il superuser permessi).

Grazie per il vostro aiuto.

+0

check out http://stackoverflow.com/questions/1662205/how-to-make-a-git-repository-read-only - si presenta come la migliore opzione è quella di utilizzare il demone git, ma YMMV. – cbeer

+2

Forse esagerare per il tuo caso, ma hai guardato [gitolite] (http://github.com/sitaramc/gitolite)? – bstpierre

+0

Ya ...L'ho fatto, sembrava che ci fossero così tanti modi diversi in cui avrei potuto rovinare il mio account sul server (perché avrei dovuto usare il metodo di accesso non root), quindi preferirei non farlo. –

risposta

3

Si desidera utilizzare il protocollo git. http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html

Sarà pubblico per tutti, che potrebbe non essere quello che vuoi, ma nessuno sarà in grado di fare un push over git: //.

È possibile controllare quali rami possono accedere premendo solo i rami a cui si desidera essere accessibili.
Lo farei avendo un clone separato dal repository privato abilitato per ssh, e quindi aggiungendolo come remoto. Quindi puoi fare git push pub public-branch, quindi private-branch non sarà accessibile da quella posizione.

+0

Ya, sto pensando che questo sia il modo migliore (o almeno il più semplice) per farlo. Ho semplicemente offuscato il percorso della directory in questo modo: projectname-small-set-of-random-symbols, che credo andrà bene, visto che non sono un grande obiettivo e la directory genitore non è leggibile da un mondo. Anche se ho un problema. Anche se ho bisogno di un po 'di aiuto. Avevo già creato il ramo e lo ho spinto sul server (la versione nuda) (l'ho rinominato come detto sopra). Poi ho inserito il file git-daemon-export-ok e ho eseguito il demone git. Il problema è che devo tenere git demone in esecuzione per mantenere il ramo ... –

+0

... pubblicamente disponibile, e si ferma ogni volta che chiudo le connessioni, ecc. Quindi c'è un modo (senza accesso a un superutente) che io puoi configurarlo per far funzionare tutto il tempo? Grazie –

+2

Prova a eseguire 'nohup git daemon &'. Questo lo farà eseguire in background e non uscirà quando si disconnette la sessione ssh (senza interruzione). – jonescb

0

Puoi avere repository privati ​​su Github ... costano solo pochi dollari al mese a seconda del numero di sviluppatori. Puoi controllare l'accesso MOLTO facilmente da lì.

+0

MOLTO facilmente ... ottima soluzione :) –

1

In .ssh/authorized_keys è possibile specificare un comando che viene sempre eseguito quando viene utilizzata una determinata chiave pubblica per accedere. Probabilmente è possibile impostarlo su git-upload-pack /path/to/repo.git e git pull potrebbe funzionare correttamente. Potrebbero esserci problemi di sicurezza non ovvi con questo approccio.

Vedere the sshd manual page per il formato del file authorized_keys.

+0

Hmm ... sembra che la mia cartella .ssh non abbia effettivamente un file authorized_keys, solo uno known_hosts. –

+0

È possibile crearne uno, con più chiavi pubbliche. –

1

È possibile impostare ACL per gestire i diritti sui repository ... Sono disponibili molti dettagli su questo argomento nello Pro Git book. E in base a ciò che ho letto finora, sì, puoi applicarlo su alcuni rami se lo desideri.

1

È possibile utilizzare uno dei strumenti per la gestione di repository Git come gitosis (in Python) o gitolite (in Perl), che consentono il controllo accesso al repository (oppure è possibile utilizzare la propria soluzione, simile a esempio update-paranoid aggiornamento gancio).

L'altra soluzione sarebbe quella di utilizzare uno git hosting sites che offrono repository privati ​​(ad esempio Codaset prevede 1 (semi) repository privata a pianta libera, con 200 MB limite di spazio su disco).

Problemi correlati