लिनक्स: न तो chsh और न ही ypchsh काम कर रहा है, क्या मैं अपना शेल बदल सकता हूं?


8

मैं एक पुराने स्कूल का यूनिक्स लड़का हूं, इसलिए मेरे लिनक्स कौशल शायद थोड़े आउट-डेटेड हैं। लेकिन ऐसा लगता है कि यह काफी सरल होना चाहिए।

Red Hat Linux सिस्टम पर, जहाँ मैं रूट नहीं है (यह कंपनी IT विभाग द्वारा प्रशासित है), मैं अपना लॉगिन शेल बदलने में सक्षम होना चाहता हूँ। रनिंग chsh मुझे देता है:

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

तो, मैं बजाय ypchsh भागा:

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

क्या देता है? किसी के पास कोई अन्य विचार है?


3
क्या आप वास्तव में एनआईएस का उपयोग कर रहे हैं ? या यह LDAP जैसा कुछ है?
इग्नासियो वाज़क्वेज़-अब्राम्स

मुझे पूरा यकीन है कि हमारा नेटवर्क LDAP का उपयोग कर रहा है, क्योंकि एनआईएस इस बिंदु पर काफी पुराना है।
ओगरे भजन 33

जवाबों:


8
  • एनआईएस: ypchsh

  • एलडीएपी:

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    ( आपका_डीएन फॉर्म में हो सकता है uid=$USER,ou=people,dc=example,dc=org; ldapwhoamiदेखने की कोशिश करें)

  • Hesiod: सिस्टम व्यवस्थापक से पूछें।

  • सक्रिय निर्देशिका : सिस्टम व्यवस्थापक से पूछें।


एक सहकर्मी ने मुझे बताया कि उन्हें लगा कि यह LDAP है, लेकिन ldapwhoami "ldap_sasl_interactive_bind_s: अज्ञात प्रमाणीकरण विधि (-6) अतिरिक्त जानकारी: SASL (-4): कोई तंत्र उपलब्ध नहीं है", इसलिए मैं इस बिंदु पर सक्रिय निर्देशिका का अनुमान लगा रहा हूं। मुझे आईटी से पूछना पड़ेगा।
ओगरे Psalm33

@Ogre: सुनिश्चित करने के लिए /etc/nsswitch.conf (लाइन 'पासवार्ड') की जाँच करें।
user1686

5

मैंने लॉगिन पर अपना शेल बदलने के लिए एक वर्कअराउंड का उपयोग किया है। मैंने अभी-अभी डाला है bashजिसका उपयोग शेल को मेरी .profileफाइल में बदलने के लिए किया जाता है ।

आप .profileउपयोगकर्ता के घर निर्देशिका में पा सकते हैं - ls -laइसे देखने के लिए उपयोग करें।

आपकी .profileफ़ाइल में ऐसा कुछ हो सकता है:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
यह एक उचित समाधान है। हालाँकि, एक लाइन पर केवल usr / usr / bin / bash होना आसान होगा। इसके अलावा यह संभवत: वर्तमान प्रक्रिया की जगह नए शेल को 'निष्पादित' करने के लिए अच्छा है।
पीटर जेनकिंस

मैं .shellrc(सही फ़ाइल नाम में परिवर्तित) के साथ भी ऐसा ही करता हूं , लेकिन मैं पहले भी एक पर्यावरण चर घोषित करता हूं, और exec bashकेवल अगर यह सेट नहीं होता है, तो मैन्युअल रूप से शेल को निष्पादित करने की अनुमति देता है, और दुर्भाग्यपूर्ण छोरों को रोकने के लिए। ध्यान दें कि आपको किसी विशेष शेल बोली का उपयोग करने की आवश्यकता नहीं है, क्योंकि आप इन कार्यों को करने के लिए सही शेबंग के साथ एक स्क्रिप्ट निष्पादित कर सकते हैं।
MayeulC

4

तो मेरे मामले में असली जवाब यह है कि सिस्टम व्यवस्थापक (आईटी) मानक कॉन्फ़िगरेशन को लॉक करना चाहते हैं, इसलिए आपको उनसे पूछना होगा। लेकिन जब मैं आपके सिस्टम को उसी एसएएसएल त्रुटि "ldap_sasl_interactive_bact_s: अज्ञात प्रमाणीकरण विधि (-6) अतिरिक्त जानकारी रिपोर्ट करता हूं, तो प्रॉसेसस्ट में मैंने आपके LDAP कॉन्फ़िगरेशन (यदि ऐसा होता है कि आप कॉन्फ़िगर कैसे होते हैं) का पता लगाने के लिए कुछ और सहायक आदेशों की खोज की। : SASL (-4): कोई तंत्र उपलब्ध नहीं है: "

एसएएसएल प्रमाणीकरण विधियों की सूची दें जो आपका सिस्टम समर्थन करता है:

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

परिणाम कुछ इस तरह हो सकते हैं:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

तब आप -Y विकल्प का उपयोग करके LDAP कमांड को प्रमाणीकरण विधि पास कर सकते हैं:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

एक अन्य उपाय बस अपने YP खोल को ओवरराइड करना है:

इस लाइन को अपने में जोड़ें /etc/passwd:

+<USERNAME>::::::/bin/bash

उदाहरण:

+psalm33::::::/bin/bash

और निम्नलिखित को अपने में जोड़ें /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

जैसा कि मैंने कहा था, मेरे सिस्टम पर रूट नहीं है (इसलिए / आदि की फाइलें संपादन के लिए ऑफ-लिमिट हैं)। लेकिन, यह जवाब किसी और को इसी तरह के मुद्दे से मदद कर सकता है।
Ogre Psalm33

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.