Uprawnienia są szkodnikiem.
Zasadniczo musisz upewnić się, że wszyscy ci programiści mogą pisać do wszystkiego w repozytorium git.
Przejdź do rozwiązania New-Wave, aby uzyskać najlepszą metodę przyznawania grupie programistów możliwości pisania.
Standardowe rozwiązanie
Jeśli umieścisz wszystkich programistów w specjalnie utworzonej grupie, możesz w zasadzie po prostu:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Następnie zmień umask
dla użytkowników na 002
, aby nowe pliki były tworzone z uprawnieniami do zapisu w grupie.
Problemami z tym są legion; jeśli jesteś na distro, które przyjmuje umask
z 022
(jak mają wspólną users
grupę, która obejmuje każdy domyślnie), to może otworzyć się problemy związane z bezpieczeństwem w innym miejscu. A wcześniej czy później coś spieprzy twój starannie spreparowany schemat uprawnień, wyłączając repozytorium z działania, dopóki nie uzyskasz root
dostępu i nie naprawisz go (tj. Ponownie uruchomisz powyższe polecenia).
Rozwiązanie nowej fali
Lepszym rozwiązaniem - choć mniej zrozumiałym i wymagającym nieco większej obsługi systemu / narzędzi - jest użycie rozszerzonych atrybutów POSIX. Przybyłem do tego obszaru dopiero niedawno, więc moja wiedza tutaj nie jest tak gorąca, jak mogłaby być. Ale w zasadzie rozszerzona lista ACL to możliwość ustawiania uprawnień dla więcej niż tylko 3 domyślnych miejsc (użytkownik / grupa / inny).
Więc jeszcze raz utwórz grupę, a następnie uruchom:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
To konfiguruje rozszerzoną listę ACL dla grupy, aby członkowie grupy mogli czytać / zapisywać / uzyskiwać dostęp do wszystkich plików, które już tam są (pierwsza linia); następnie powiedz wszystkim istniejącym katalogom, że nowe pliki powinny mieć tę samą listę ACL (drugi wiersz).
Mam nadzieję, że to cię poprowadzi.