2012-02-15 4 views
5

के लिए केवल पढ़ने के लिए उपयोगकर्ता को सेट अप करना मैंने अपाचे आधारित एसवीएन कॉन्फ़िगरेशन सेट अप करने के उचित तरीके के संबंध में "वर्जन कंट्रोल विद सबवर्सन" नामक पुस्तक में दिए गए निर्देशों का पालन किया है। अब तक, मेरे पास "/etc/httpd/conf.d" निर्देशिका में "subversion.conf" फ़ाइल है। उस फ़ाइल में, मैंने "/ svn" नामक एक स्थान को परिभाषित किया है और इसे मेरे उपवर्तन भंडार "/ x1/svn/(repo1), (repo2), (आदि) के स्थान पर मैप किया है"। बुद्धि के लिए - मैंने एक उपयोगकर्ता "svn" भी बनाया है जो भंडार क्षेत्र का मालिक है और अपाचे में समूह अनुमतियां जोड़ दी है, इसलिए अपाचे से स्वामित्व वाली सभी चीज़ों को सेट करने की आवश्यकता के बिना रिपॉजिटरी अपाचे से पहुंच योग्य है (जो मुझे लगता है कि ऐसा करने का एक अजीब तरीका है चीजें)।एसवीएन-अपाचे

वैसे भी। यहां समस्या है जिसके साथ मुझे परेशानी हो रही है। मैं "ए" उपयोगकर्ता को स्थापित करना चाहता हूं जिसे मैं इस घटना में लोगों को सौंप सकता हूं कि मैं उन्हें किसी विशेष भंडार कोड बेस के स्रोत कोड की एक प्रति डाउनलोड करने की अनुमति देना चाहता हूं। यहां जटिलता के कुछ स्तर हैं।

  1. ए) उन्हें उस केवल पढ़ने के लिए मिलती है सब खजाने को
  2. बी एक सामान्य उपयोगकर्ता पहुँच) विशिष्ट खजाने

किसी भी तरह से करने के लिए विशिष्ट 'केवल पढ़ने के लिए' उपयोगकर्ताओं को प्रदान की अनुमति देते हैं, और मैं कल्पना करें कि विकल्प (ए) को पूरा करने के तरीके को समझाना आसान होगा, वर्तमान में मैं अपने वेब-सर्वर के लिए कॉन्फ़िगरेशन को स्थापित करने के लिए ऐसा कैसे कर सकता हूं? निम्नलिखित, मेरी "subversion.conf" फाइल जो ठीक काम कर रहा है की एक प्रति है, लेकिन जरूरी है कि वांछित खजाने तक पहुँचने किसी भी उपयोगकर्ता पूर्ण उपयोग कर सकते है:

<Location /svn> 
    DAV svn 
    SVNParentPath /x1/svn 

    # Require SSL connection for password protection. 
    # In order to do this Apache needs to use a self-signed certificate 
    # Talk to Cordel and/or consult Apache Docs and OpenSSL docs 
    # SSLRequireSSL 

    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/svn-auth-file 
    Require valid-user 
    </Location> 

तो - कैसे मैं एक ही सामान्य उपयोगकर्ता है कि होगा जोड़ सकते हैं SVNParentPath (विकल्प ए) में स्थित सभी रिपॉजिटरीज़ के लिए केवल पढ़ने के लिए? और अतिरिक्त क्रेडिट के लिए - मैं व्यक्तिगत रिपॉजिटरीज़ (विकल्प बी) के लिए अद्वितीय रीड-ओनली उपयोगकर्ताओं को कैसे बना सकता हूं। और यह सब उपयोगकर्ताओं को बनाए रखने के दौरान जो सभी भंडारों पर पूर्ण पढ़ने-लिखने के लिए प्रमाणीकृत होना चाहिए।

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

धन्यवाद!

उत्तर

7

Path Based Authorization फ़ाइल में एक नज़र जहां का उपयोग करके केवल पढ़ने के लिए उपयोगकर्ता परिभाषित कर सकते हैं ले लो:

[/] 
username = r 

या आप विभिन्न खजाने

[repo1:/] 
username = r 

[repo2:/] 
username = r 

ऊपर प्राप्त करने के लिए के लिए एक उपयोगकर्ता परिभाषित कर सकते हैं आपको अपने अपाचे कॉन्फ़िगरेशन में निम्न जोड़ने की आवश्यकता है:

LoadModule authz_svn_module path/to/mod_authz_svn.so 
... 
AuthzSVNAccessFile /path/to/access/svnaccess 
+0

धन्यवाद - खूबसूरती से काम किया! –

+0

मुझे पहली बार समस्या थी कि भंडार का नाम पहचाना नहीं गया था। कारण यह था कि मैंने कॉन्फ़िगरेशन फ़ाइल में SVNPath का उपयोग किया था और SVNParentPath नहीं था। SVNParentPath पर स्विच करने के बाद यह अच्छी तरह से काम करता है! \ –

+1

यह भी [पथ-आधारित चेक अक्षम करना] के लायक है (http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.authz .pathauthzoff) यदि आपको उनकी आवश्यकता नहीं है क्योंकि इससे प्रदर्शन में सुधार होगा। – AdamS