2011-09-03 11 views
5

के साथ पहुंच है, मैं वर्तमान में एक जीआईटी रिपोजिटरी सर्वर स्थापित करने के साथ प्रयोग कर रहा हूं ताकि हम एसवीएन से जीआईटी में स्विच कर सकें। मुझे लगभग सबकुछ मिला है, लेकिन मुझे एक समस्या के साथ छोड़ दिया गया है।केवल जीआईटी रिपो दिखाएं कि किस उपयोगकर्ता के पास gitweb

मौजूदा सेटअप इस प्रकार है:

  • सभी डेवलपर्स (और गैर डेवलपर्स) एक उपयोगकर्ता खाता & सही समूहों क्योंकि सर्वर एनआईएस ग्राहक
  • सभी रेपोस/var में किया जाता है है/git/
  • सभी खींच/धक्का ssh

में किया यह पूरी तरह से अब तक काम करता है, और gitosis या gitolite की आवश्यकता समाप्त कर रहा है।

क्योंकि मैं रिपॉजिटरीज़ का एक ब्राउज़ करने योग्य अवलोकन करना चाहता हूं जिसे मैंने pathinfo सहित गिटवेब स्थापित किया है। क्योंकि रिपो निजी हैं मैंने पर्ल ऑटेननिस के माध्यम से प्रमाणीकरण स्थापित किया है और यह काम करता है, लेकिन यहां मुझे एक समस्या आती है।

यह अवांछित है कि सभी डेवलपर्स के पास सभी रिपॉजिटरीज़ तक पहुंच है, लेकिन गिटवेब केवल प्रत्येक रिपोजिटरी को दिखाता है (अपाचे उपयोगकर्ता) पढ़ सकता है।

तो मेरा प्रश्न है: क्या यह संभव है कि गिटवेब केवल जीआईटी रेपो को दिखाए कि वर्तमान में लॉग इन उपयोगकर्ता के पास पहुंच है?

संभावित समाधान:

  1. .htaccess के माध्यम से आगे अभिगम नियंत्रण। Pathinfo इसे सक्षम करेगा लेकिन यह रिपो को गैर-पथविन URL के माध्यम से एक्सेस करने से नहीं रोकेगा (उदाहरण के लिए /repo.git/ काम नहीं करेगा लेकिन /gitweb.cgi?p=repo.git होगा)
  2. सेट अप करना एक पूर्ण गिटोसिस/गिटोलाइट पर्यावरण और इसे गिटवेब में एकीकृत करना (अनिवार्य रूप से this)। मैं इसे रोकना चाहता हूं क्योंकि ओवरहेड अवांछनीय है
  3. प्रमाणीकृत HTTP उपयोगकर्ता के रूप में gitweb चलाएं। यह सभी एक्सेस कंट्रोल समस्याओं को ठीक करेगा, लेकिन मुझे नहीं पता कि
  4. के साथ संयोजन में ऐसा करने का तरीका कैसा लगता है, लेकिन पर्ल की मेरी समझ का उपयोग करने के लिए बहुत सीमित है (हुक को यह सत्यापित करने की आवश्यकता होगी उपयोगकर्ता को दिखाने/निर्यात करने से पहले रेपो निर्देशिका तक पहुंचने की अनुमति है)

क्या कोई है जो जानता है कि 3 या 4 काम कैसे करना है या कोई अन्य समाधान है?

उत्तर

2

डेवलपर्स धक्का रहे हैं /, (मुझे लगता है) के तहत ssh का उपयोग कर अपने स्वयं के उपयोगकर्ता नाम भंडार सर्वर से खींच तो शायद सबसे आसान तरीका है पूरा करने के लिए क्या इस gitweb या git कि उपयोगकर्ता की के अंतर्गत चलाने के लिए एक रास्ता मिल रहा है पहचान।

उदाहरण के लिए, gitweb से पहले प्रमाणीकरण हुक जोड़ने का कोई तरीका खोजें। फिर gitweb के आसपास एक रैपर जोड़ें जो sudo -u $user gitweb.real निष्पादित करता है जहां $user प्रमाणीकृत उपयोगकर्ता नाम है।

या, आप बस git कमांड को लपेट सकते हैं, यानी।gitweb एक रैपर निष्पादित करें जो sudo -u $user {real-git-path} करता है।

अपाचे में एनआईएस/पीएएम के खिलाफ प्रमाणीकरण को लागू करने के लिए, पर mod_auth_external

+0

धन्यवाद एक नजर है। एनआईएस प्रमाणीकरण कोई समस्या नहीं है, लेकिन अपाचे उपयोगकर्ता को एक विशाल सुरक्षा रिसाव बनाने के लिए अनुमति नहीं देता है? – dtech

+3

आप प्रतिबंधित कर सकते हैं कि 'सुडो' के साथ क्या कर सकता है। 'आदमी सूडर्स' देखें। – ErikR