Git शेल सक्षम नहीं है?


24

मैं git सर्वर को स्थापित करने की कोशिश कर रहा हूँ। जब मैं अपने git उपयोगकर्ता के लिए / usr / bin / git-shell के लिए डिफ़ॉल्ट शेल सेट करता हूं तो मुझे git के रूप में लॉगिन करने पर त्रुटि मिलती है।

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

Ssh कुंजी आधारित पहुँच कार्य, अनुमतियाँ सही ढंग से सेट की गई हैं।

Google खोज इस त्रुटि के संबंध में कुछ भी नहीं दिखाती है।

मैंने पिछले इंस्टॉलेशन में भी इस पद्धति का उपयोग किया था और ऐसी कोई त्रुटि नहीं दिखाई गई थी। इसके अलावा मैंने काम करने वाले सर्वर को देखा अगर इसमें कुछ अतिरिक्त फाइलें या कॉन्फिग है लेकिन ऐसी कोई बात नहीं है।

सिस्टम युक्ति:

  • Gentoo linux (नवीनतम)
  • गित 1.7.5.3

/ etc / पासवार्ड लाइन:

git:x:1002:1004::/home/git:/usr/bin/git-shell

git-shellकेवल (यानी git push, git fetchऔर git pull) कार्यक्षमता पुश / पुल कार्यक्षमता के लिए उपयोग किया जाने वाला एक प्रतिबंधित शेल है । यह इंटरएक्टिव होने के लिए नहीं है, इसलिए आपको इंटरेक्टिव शेल में लॉगिन नहीं करना चाहिए। आप git-shell-commandsउपयोगकर्ता के घर में एक निर्देशिका जोड़कर और कुछ बायनेरिज़ को सहानुभूति के साथ इसे कुछ इंटरैक्टिव बना सकते हैं । लेकिन यह बहुत सीमित है ( cdउदाहरण के लिए कोई बाइनरी नहीं है ), इसलिए एक बेहतर विकल्प लॉगिन rootया sudoसक्षम उपयोगकर्ता के रूप में है और उपयोगकर्ता के तहत sudo -u git -sपूर्ण bashशेल प्राप्त करने के लिए करता है git
अक्टूबर को ADTC

जवाबों:


17

मैंने दौड़ने के बाद यह पाया locate git-shell-commands

cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README

गिट-शेल के माध्यम से कॉल करने योग्य नमूना कार्यक्रम। एक उपयोगकर्ता के घर निर्देशिका में 'git-shell-कमांड' नाम की एक निर्देशिका रखें जिसका शेल git-shell है। तब कोई भी व्यक्ति जो उस उपयोगकर्ता के रूप में लॉग-इन कर रहा है, 'git-shell-कमांड्स' डायरेक्टरी में एक्जीक्यूटेबल्स चलाने में सक्षम होगा।

प्रदान किए गए आदेश:

सहायता: उपलब्ध आदेशों के नाम प्रिंट करता है। जब अंतःक्रियात्मक रूप से चलाया जाता है, तो git-shell स्वचालित रूप से स्टार्टअप पर 'सहायता' चलाएगा, बशर्ते यह मौजूद हो।

सूची: किसी भी नंगे भंडार को प्रदर्शित करता है जिसका नाम उपयोगकर्ता के घर निर्देशिका के तहत ".गित" के साथ समाप्त होता है। कोई अन्य गिट रिपॉजिटरी दिखाई नहीं देते हैं, हालांकि वे गिट-शेल के माध्यम से क्लोन हो सकते हैं। 'सूची' को कॉल करने की संख्या को कम करने के लिए डिज़ाइन किया गया है जो उपलब्ध रिपॉजिटरी को खोजने में किया जाना चाहिए; यदि आपके सेटअप में अतिरिक्त रिपॉजिटरी हैं, जो उपयोगकर्ता-खोज योग्य होनी चाहिए, तो आप तदनुसार 'सूची' को संशोधित करना चाह सकते हैं।

इसलिए मैंने निम्नलिखित कमांड को रूट के रूप में चलाया:

cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
chown git:developers /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list
exit

मैं तब gitउपयोगकर्ता के रूप में निम्नलिखित चलाने में सक्षम था :

[me@svn ~]$ su git
Password:
Run 'help' for help, or 'exit' to leave.  Available commands:
list
git> help
Run 'help' for help, or 'exit' to leave.  Available commands:
list
git> list
git> exit

अब मुझे यह नहीं दिखता कि अच्छी मदद और सूची क्या है, लेकिन लॉगिन ने काम किया। :)


1
उपयोगकर्ताओं की होम निर्देशिकाओं में "सूची" के लिए कुछ भी करने के लिए नंगे रिपॉजिटरी होना चाहिए (कुछ भी पढ़ें)
michael

4

मुझे बस करना था # mkdir ~git/git-shell-commandsतो su gitकाम कियाgit 1.8.1.5-r1


1
हाँ, यह काम करता है। अब आप गिट शेल में हैं। फिर क्या? जब तक आप git-shell-commandsफ़ोल्डर के अंदर कुछ बायनेरिज़ को सिमिलिंक नहीं करते, यह बातचीत के लिए पूरी तरह से बेकार है । मुझे लगता है कि यह सब करना छोड़ना अधिक उपयोगी है और ऐसा sudo -u git -sकरें कि आपको bashसभी बायनेरिज़ तक पहुंच के साथ एक पूर्ण शेल प्राप्त हो । आप वर्तमान निर्देशिका में भी बने रहते हैं।
ADTC

3

यदि आप उस कोड को देखते हैं जो उस त्रुटि संदेश को चलाता है (जो Git के पुराने संस्करणों में भिन्न होता है):

if (access(COMMAND_DIR, R_OK | X_OK) == -1) {
  die("Interactive git shell is not enabled.\n"
     "hint: ~/" COMMAND_DIR " should exist "
     "and have read and execute access."); 

यह गिट-शेल डायरेक्टरी पर एक सही मुद्दा होना चाहिए।

उपयोगकर्ता को प्रोग्राम को निष्पादित करने के लिए निर्देशिका में अनुमतियों को पढ़ना और निष्पादित करना होगा।


... जैसा कि त्रुटि संदेश में कहा गया है, वास्तव में। (-:
JdeBP

@JdeBP: क्षमा करें?) @ पेटर और मुझे लगता है कि आपके पास ~/git-shell-commandsसही अनुमतियां हैं?
VonC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.