अनुमतियाँ एक कीट हैं।
मूल रूप से, आपको यह सुनिश्चित करने की आवश्यकता है कि उन सभी डेवलपर्स गिट रेपो में सब कुछ लिख सकते हैं।
डेवलपर्स के एक समूह को लिखने की क्षमता प्रदान करने की बेहतर विधि के लिए न्यू-वेव समाधान पर जाएं।
मानक समाधान
यदि आप सभी डेवलपर्स को विशेष रूप से बनाए गए समूह में रखते हैं, तो आप सिद्धांत रूप में, बस कर सकते हैं:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
फिर umask
उपयोगकर्ताओं के लिए बदलें 002
, ताकि नई फाइलें समूह-लेखन योग्य अनुमतियों के साथ बनाई जाएं।
इसके साथ समस्याएं लीजन हैं; यदि आप एक distro है कि एक मान लिया गया है पर हैं umask
की 022
(जैसे एक आम होने के रूप में users
समूह है कि डिफ़ॉल्ट रूप से सभी लोग शामिल होते हैं), यह कहीं और सुरक्षा समस्याओं खोल सकते हैं। और जल्दी या बाद में, कुछ आपकी सावधानी से तैयार की गई अनुमतियों की योजना को खत्म करने जा रहा है, रेपो को तब तक कार्रवाई से बाहर रखता है जब तक कि आप root
पहुंच न लें और इसे ठीक करें (यानी, ऊपर दिए गए आदेशों को फिर से चलाएं)।
न्यू-वेव सॉल्यूशन
एक बेहतर समाधान-हालांकि कम अच्छी तरह से समझा जाता है, और जिसके लिए थोड़ा और ओएस / टूल सपोर्ट की आवश्यकता होती है- वह है POSIX विस्तारित विशेषताओं का उपयोग करना। मैं केवल इस क्षेत्र में हाल ही में आया हूं, इसलिए यहां मेरा ज्ञान उतना गर्म नहीं है जितना यह हो सकता है। लेकिन मूल रूप से, एक विस्तारित एसीएल केवल 3 डिफ़ॉल्ट स्लॉट्स (उपयोगकर्ता / समूह / अन्य) से अधिक पर अनुमतियाँ सेट करने की क्षमता है।
इसलिए एक बार फिर अपना समूह बनाएं, फिर दौड़ें:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
यह समूह के लिए विस्तारित एसीएल की स्थापना करता है ताकि समूह के सदस्य जो कुछ भी पहले से मौजूद हों (पहली पंक्ति) पढ़ / लिख / एक्सेस कर सकें; फिर, सभी मौजूदा निर्देशिकाओं को भी बताएं कि नई फ़ाइलों में एसीएल लागू (दूसरी पंक्ति) होना चाहिए।
आशा है कि आप अपने रास्ते पर हो जाता है।