Quyền là một dịch hại.
Về cơ bản, bạn cần đảm bảo rằng tất cả các nhà phát triển đó có thể viết cho mọi thứ trong repo git.
Bỏ qua Giải pháp Làn sóng mới cho phương pháp ưu việt cấp cho một nhóm các nhà phát triển khả năng viết.
Giải pháp chuẩn
Nếu bạn đặt tất cả các nhà phát triển vào một nhóm được tạo đặc biệt, về nguyên tắc, bạn có thể làm:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Sau đó thay đổi umask
cho người dùng thành 002
, để các tệp mới được tạo với quyền có thể ghi theo nhóm.
Các vấn đề với điều này là quân đoàn; nếu bạn đang ở trên một bản phân phối giả định một umask
trong số 022
(chẳng hạn như có một users
nhóm chung bao gồm tất cả mọi người theo mặc định), điều này có thể mở ra các vấn đề bảo mật ở nơi khác. Và sớm hay muộn, một cái gì đó sẽ làm hỏng sơ đồ cấp phép được làm cẩn thận của bạn, khiến repo không hoạt động cho đến khi bạn có root
quyền truy cập và sửa nó (nghĩa là chạy lại các lệnh trên).
Giải pháp sóng mới
Một giải pháp ưu việt, mặc dù ít được hiểu rõ và đòi hỏi nhiều hơn một chút về hỗ trợ hệ điều hành / công cụ OS là sử dụng các thuộc tính mở rộng POSIX. Gần đây tôi chỉ đến khu vực này, vì vậy kiến thức của tôi ở đây không nóng như nó có thể. Nhưng về cơ bản, ACL mở rộng là khả năng đặt quyền trên nhiều hơn 3 vị trí mặc định (người dùng / nhóm / người khác).
Vì vậy, một lần nữa, tạo nhóm của bạn, sau đó chạy:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
Điều này thiết lập ACL mở rộng cho nhóm để các thành viên trong nhóm có thể đọc / ghi / truy cập bất kỳ tệp nào đã có (dòng đầu tiên); sau đó, cũng nói với tất cả các thư mục hiện có rằng các tệp mới sẽ được áp dụng cùng ACL này (dòng thứ hai).
Hy vọng rằng có được bạn trên con đường của bạn.