2013-04-24 18 views
11

पर पुश करते हैं तो फ़ाइल स्वामित्व/समूह बदल जाता है, एक वर्ष से अधिक के लिए, मुझे जीआईटी और निर्देशिका/फ़ाइल अनुमतियों के साथ समस्याएं आ रही हैं। मेरे पास एक केंद्रीय भंडार है जिसमें कई डेवलपर्स एसएसएच (मूल रूप से एसएसएच: // उदाहरण/गिट/रिपोजिटरी के रूप में स्थापित) का उपयोग करते हुए कोड पुश करते हैं।जब उपयोगकर्ता एक जीआईटी रिपोजिटरी

1) केंद्रीय भंडार में मेरे कॉन्फ़िग फ़ाइल: [कोर] repositoryformatversion = 0 filemode = सच नंगे = सच sharedrepository = 0660

2) सभी इस प्रकार मैं भंडार की स्थापना की है भंडार निर्देशिका अनुमतियां 770 पर सेट की गई हैं (rwxrwx ---) 3) ./objects/XX और ./objects/info में सभी फ़ाइलें 440 (आर-आर -----) 4 पर सेट की गई हैं) अन्य सभी फाइलें 660 पर सेट की गई हैं (आरडब्ल्यू-आरडब्ल्यू ----) 5) स्वामित्व रूट पर सेट है: group_name

(ध्यान दें कि यह इस धागे में शीर्ष प्रतिक्रिया में रिक्त सेटअप से आया है: Making git push respect permissions?)

सभी एक्सेसिंग उपयोगकर्ता समूह 'group_name' के सदस्य हैं।

समस्या यह है कि यदि उपयोगकर्ता 1 भंडार में धक्का देता है, तो कुछ फ़ाइलों पर फ़ाइल स्वामित्व उपयोगकर्ता 1: user1 पर सेट होता है - जिसका अर्थ है कि समूह बदल गया है। एक बार ऐसा होने पर, कोई अन्य उपयोगकर्ता भंडार से पुश (या खींच) नहीं कर सकता है, क्योंकि उन्हें अब भंडार में आवश्यक फ़ाइलों से पढ़ने, लिखने या निष्पादित करने की अनुमति नहीं है।

मैंने स्टैक ओवरफ़्लो पर इस मामले के बारे में हर धागे को पढ़ा है और नेट पर कहीं और कहीं भी, लेकिन मैं इस मुद्दे पर चल रहा हूं।

समस्या यह है कि, मुझे यकीन नहीं है कि यह समस्या जीआईटी में से एक है, या यूनिक्स में से एक है, और मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए। उपयोगकर्ता द्वारा भंडार में जाने पर समूह को कैसे बदला जा सकता है?

+0

कैसे ... आप धक्का दे रहे हैं? आप इसके साथ क्या उपयोगकर्ता अनुमतियां कर रहे हैं? – Makoto

+0

उपयोग करके धक्का: गिट पुश हम एसएसएच के माध्यम से धक्का दे रहे हैं। प्रत्येक उपयोगकर्ता अपने यूनिक्स उपयोगकर्ता खाते का उपयोग कर सर्वर में sshing है। उदाहरण के लिए, मैं सर्वर पर उपयोगकर्ता शिरो हूं। एसएसएच के लिए उपयोग कर रहे लॉगिन प्रमाण-पत्र उपयोगकर्ता शिरो के लिए हैं। उपयोगकर्ता शिरो समूह शिरोग्रुप का हिस्सा है। फ़ाइल का स्वामित्व रूट है: शिरोग्रुप। क्या इससे आपके सवाल का जवाब मिलता है? – Shiro

+0

मेरे पास मेरे सर्वर पर suphp है - क्या यह संभव है कि यह मेरी फ़ाइल अनुमतियों को बदल रहा है, न कि जीआईटी? – Shiro

उत्तर

16

ऐसा लगता है कि आपनेको init --shared=group का उपयोग करने के बजाय भंडार प्रारंभ करने के बाद core.sharedRepository बदल दिया है, जो अनुमतियों को सही तरीके से सेट करना चाहिए। इसका मतलब है कि sgid बिट गिट रिपोजिटरी की निर्देशिकाओं पर सही ढंग से सेट नहीं किया जाएगा। आपको इसे मैन्युअल रूप से ठीक करना होगा (जीएनयू ढूंढना और xargs मानना):

find . -print0 | xargs -0 chgrp group_name 

find . -type d -print0 | xargs -0 chmod g+s 
+0

आप सर राजकुमार हैं। आप गलत थे कि मैंने भंडार शुरू करने के बाद core.shareRepository बदल दिया, और आपका फ़िक्स वास्तव में काम करता था। मैं पिछले साल से कई बार इस पर लड़ रहा हूं, इसलिए आखिरकार मैं काम कर रहा हूं! – Shiro

+0

यह सब सही और उपयोगी है, लेकिन थोड़ा सा जोड़ने के लिए: फ़ाइल के समूह स्वामित्व को प्रति-निर्देशिका आधार पर निर्देशिका समूह के स्वामी (जब g + s सेट किया जाता है) के आधार पर रीसेट किया जाएगा। इसका अर्थ यह है कि आप अलग-अलग निर्देशिकाओं के लिए एकाधिक समूह मालिकों को प्राप्त कर सकते हैं, जब तक यह प्रति-निर्देशिका, प्रति-भंडार आधार पर सेट किया गया है (और सभी जी + सेट हैं)। – dmansfield

संबंधित मुद्दे