Le autorizzazioni sono un parassita.
Fondamentalmente, è necessario assicurarsi che tutti quegli sviluppatori possano scrivere su tutto nel repository git.
Passa a The New-Wave Solution per il metodo superiore di concessione di capacità di scrittura a un gruppo di sviluppatori.
La soluzione standard
Se metti tutti gli sviluppatori in un gruppo appositamente creato, in linea di principio puoi semplicemente:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Quindi modificare il umask
per gli utenti in 002
, in modo che i nuovi file vengano creati con autorizzazioni scrivibili in gruppo.
I problemi con questo sono legione; se siete su una distro che assume una umask
di 022
(come quello di avere un comune users
gruppo che include tutti di default), questo può aprire problemi di sicurezza altrove. E prima o poi, qualcosa rovinerà il tuo schema di autorizzazioni accuratamente predisposto, mettendo fuori uso il repository fino a quando non avrai root
accesso e risolverlo (ad esempio, eseguendo nuovamente i comandi sopra).
La soluzione New Wave
Una soluzione superiore, sebbene meno ben compresa e che richiede un po 'più di supporto OS / tool, è quella di utilizzare gli attributi estesi POSIX. Sono venuto in quest'area solo di recente, quindi la mia conoscenza qui non è così calda come potrebbe essere. Ma fondamentalmente, un ACL esteso è la possibilità di impostare autorizzazioni su più dei 3 slot predefiniti (utente / gruppo / altro).
Quindi, ancora una volta, crea il tuo gruppo, quindi esegui:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
Questo imposta l'ACL esteso per il gruppo in modo che i membri del gruppo possano leggere / scrivere / accedere a qualsiasi file sia già presente (la prima riga); quindi, dire anche a tutte le directory esistenti che ai nuovi file dovrebbe essere applicato lo stesso ACL (la seconda riga).
Spero che ti porti sulla buona strada.