डिफ़ॉल्ट शेल को बदलने की कोशिश करने पर उपयोगकर्ता / etc / passwd में मौजूद नहीं होता है


22

मैं अपने डिफ़ॉल्ट शेल को tsh से bash में बदलना चाहता हूं। तो मैंने कोशिश की और यही हुआ:

>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

वास्तव में, मैं / etc / passwd में नहीं हूँ। मुझे पता नहीं क्यों।

मैं क्या कर सकता हूँ?


11
क्या आपका सिस्टम वितरित प्रमाणीकरण (जैसे kerberos / winbind) का उपयोग कर रहा है? उस स्थिति में आपका उपयोगकर्ता विवरण स्थानीय / etc / passwd फ़ाइल में दिखाई नहीं देगा (लेकिन इसका उपयोग करते हुए दिखाई देना चाहिए getent passwd <userid>)। मुझे लगता है कि क्या चल रहा chshहै कि मामले में समर्थित है कि सेटिंग्स में निर्भर हो सकता है/etc/pam.d/
Steeldriver

जवाबों:


15

मेरा कंप्यूटर वितरित प्रमाणीकरण का उपयोग करते हुए एक नेटवर्क का हिस्सा है, इसलिए मेरे उपयोगकर्ता विवरण स्थानीय / etc / passwd फ़ाइल में नहीं दिखाई देंगे (लेकिन getent passwd userid का उपयोग करते हुए दिखाई देते हैं)। (धन्यवाद @steeldriver) मेरे मामले में मुझे एक कोर मशीन पर चेस करना था।


11
क्या आप बता सकते हैं कि "कोर मशीन" क्या है?
नेरवे

मेरे मामले में मैं अपने नेटवर्क के अंदर विश्वविद्यालय द्वारा प्रदान की गई समर्पित मशीनों के एक सेट की बात कर रहा हूं जिसे छात्र लॉग इन कर सकते हैं और उपयोग कर सकते हैं (साझा)। मेरे कार्यालय में मेरी अपनी मशीन के विपरीत।
rmp251

4
@ rmp251 यह वास्तव में मेरा परिदृश्य है। मेरे पास कोर मशीन तक पहुंच नहीं है। क्या आपको शेल को बदलने का एक तरीका मिला अन्यथा?
गीक

@ गीक ने आपको इसका हल कैसे निकाला?
दूधूश

13

इसके लिए एक समाधान है gnome-terminal:

  1. पर जाएं संपादित करें -> प्रोफाइल वरीयताओं -> शीर्षक और कमान
  2. चेक भागो एक कस्टम आदेश मेरी खोल के बजाय
  3. कस्टम कमांड केbash रूप में प्रदान करें (या , या कुछ भी)fish

धन्यवाद! मेरे द्वारा काम की गई सेटिंग्स के माध्यम से अपना टर्मिनल (या नया टर्मिनल टैब) खोलने पर तुरंत चलाने की आज्ञा देना।
कैचोडर

यह केडीई में कोनसोल और याक्यूके के लिए भी काम करता है।
xgdgsc

6

यदि आप PAM या कुछ और के द्वारा LDAP प्रमाणीकरण का उपयोग कर रहे हैं, तो आपको अपना उत्तर अपने LDAP सर्वर में ढूंढना होगा। आइए इसे Microsoft AD के लिए लक्षित करें, /etc/passwdजब आप लॉग इन करते हैं तो आपका डोमेन खाता किस स्थिति में नहीं है, लेकिन आप AD में अपनी उपयोगकर्ता संपत्ति देख सकते हैं getent passwd | grep user

यदि अंत में यह दिखाता है /bin/cshकि आपका शेल है , तो इसलिए कि आपके विज्ञापन में इसके लिए एक विशेषता है। इसलिए यदि आपके पास AD पर व्यवस्थापक खाता है, तो आप इसे स्वयं ठीक कर सकते हैं। अन्यथा बस में अग्रिम सुविधाओं को सक्षम करने के लिए अपने ई व्यवस्थापक बता देखें का टैब सक्रिय निर्देशिका उपयोगकर्ताओं और कंप्यूटर> उपयोगकर्ता गुण> यूनिक्स जिम्मेदार बताते हैं । वहां आप लॉगिन शेल को बदल सकते हैं /bin/bash

सुनिश्चित करें कि आप चलाना न भूलें:

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

स्रोत: डिफ़ॉल्ट शेल को बदलने की कोशिश करने पर उपयोगकर्ता / etc / passwd में मौजूद नहीं होता है


1
प्रश्न एक उपयोगकर्ता के लिए शेल बदलने का था, जबकि pbis config सभी उपयोगकर्ताओं के लिए बदलता है।
13-22 बजे kubanczyk

5

यदि आप अपने उपयोगकर्ता के लिए शेल बदलना चाहते हैं, तो आपको रूट बनने की आवश्यकता नहीं है। बस टाइप करो:

chsh

बिना sudoऔर बिना बहस के।


यह भी देखें man chsh:

Chsh कमांड यूजर लॉगिन शेल को बदलता है। यह नाम निर्धारित करता है
उपयोगकर्ता के प्रारंभिक लॉगिन आदेश के। एक सामान्य उपयोगकर्ता केवल बदल सकता है
उसके अपने खाते के लिए लॉगिन शेल ; सुपरयुजर लॉगिन बदल सकता है
किसी भी खाते के लिए खोल।

मैं सूदो का उपयोग करता था क्योंकि यह इसके बिना कुछ नहीं करता था। > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

यह काम करता है कारण यह है कि चेस kerberos के साथ काम नहीं करता है
लेननर्ट रोलैंड

2

यदि आप अपना उपयोगकर्ता नाम भूल गए हैं, तो आप whoamiयाद रखने के लिए कमांड का उपयोग कर सकते हैं ।

इसलिए, इसके साथ प्रयास करें:

sudo chsh $(whoami)

यदि वास्तव में, /etc/passwdफ़ाइल में आपके उपयोगकर्ता नाम से शुरू होने वाली कोई रेखा मौजूद नहीं है (जो अनुभवहीन लगती है), तो आप एक नया जोड़ सकते हैं:

उपयोगकर्ता नाम : x: 1000: 1000: आपका वास्तविक नाम ,,,: / घर / उपयोगकर्ता नाम : / बिन / बैश

यह भी देखें: समझौता / etc / पासवर्ड फ़ाइल स्वरूप


1
एक कारण यह है कि आपका उपयोगकर्ता / etc / passwd में मौजूद नहीं हो सकता है यदि प्रमाणीकरण उस मशीन पर संभाला नहीं गया है (उदाहरण ldap)
MatrixManAtYrService

1

यदि आप एक डोमेन उपयोगकर्ता के साथ एक दूरस्थ होस्ट में ssh करने का प्रयास कर रहे हैं, तो आप chsh@Masoud उल्लेख के अनुसार अपने शेल को बदलने में सक्षम नहीं हो सकते हैं । लेकिन यहाँ इस मामले के लिए एक सरल समाधान है - जब भी आप मशीन में ssh करते हैं, तो यह करें:

ssh my-host -t "zsh --login"

या

ssh my-host -t "cd /data/repos; zsh --login"

अगर आप भी किसी अलग काम करने वाले डायर में सीधे लॉगइन करना चाहते हैं।

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