লিনাক্স: chsh বা ypchsh কেউই কাজ করছে না, আমি কি আমার শেলটি পরিবর্তন করতে পারি?


8

আমি একটি পুরানো-স্কুল ইউনিক্স ছেলে, তাই আমার লিনাক্স দক্ষতা সম্ভবত কিছুটা পুরানো। এটি যথেষ্ট সহজ হওয়া উচিত বলে মনে হচ্ছে।

একটি রেড হ্যাট লিনাক্স সিস্টেমে যেখানে আমার রুট নেই (এটি সংস্থা আইটি বিভাগ দ্বারা পরিচালিত), আমি আমার লগইন শেলটি পরিবর্তন করতে সক্ষম হতে চাই। ছ্যাশ চালানো আমাকে দেয়:

$ 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
আপনি কি সত্যিই এনআইএস ব্যবহার করছেন? নাকি এলডিএপ এর মতো কিছু?
Ignacio Vazquez-Abram

আমি বেশ নিশ্চিত যে আমাদের নেটওয়ার্ক এলডিএপি ব্যবহার করছে, কারণ এনআইএস এই মুহুর্তে বেশিরভাগ প্রাচীন।
ওগ্রে গীতসংহিতা 33

উত্তর:


8
  • NIS: ypchsh

  • দ্বারা LDAP:

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

    ( YOUR_DN ফর্মটিতে থাকতে পারে uid=$USER,ou=people,dc=example,dc=org; দেখার চেষ্টা করুন ldapwhoami)

  • হেসিওড: সিস্টেম প্রশাসককে জিজ্ঞাসা করুন।

  • সক্রিয় ডিরেক্টরি : সিস্টেম প্রশাসককে জিজ্ঞাসা করুন।


একজন সহকর্মী আমাকে বলেছিলেন যে তারা ভেবেছিল এটি এলডিএপি, তবে ldapWoami "ldap_sasl_interactive_bind_s: অজানা প্রমাণীকরণ পদ্ধতি (-6) অতিরিক্ত তথ্য: এসএএসএল (-4): কোনও প্রক্রিয়া উপলভ্য নয়:" সুতরাং আমি এই মুহুর্তে সক্রিয় ডিরেক্টরি অনুমান করছি। আমি আইটি জিজ্ঞাসা করতে হবে।
ওগ্রে গীতসংহিতা

@ অগ্রে: নিশ্চিত করতে /etc/nsswitch.conf (লাইন 'Passwd') পরীক্ষা করুন।
user1686

5

লগ ইন করার সময় আমি আমার শেলটি পরিবর্তন করতে একটি কার্যকারিতা ব্যবহার করেছি। আমি সবেমাত্র রেখেছি bashযা আমার .profileফাইলের শেল পরিবর্তন করতে ব্যবহৃত হয় ।

আপনি .profileব্যবহারকারীর হোম ডিরেক্টরিতে ls -laএটি দেখতে ব্যবহার করতে পারেন।

আপনার .profileফাইলে এমন কিছু থাকতে পারে:

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

7
এটি একটি সুস্পষ্ট workaround। যদিও, একক লাইনে কেবল / ইউএসআর / বিন / ব্যাশ রাখা সহজ হবে। এছাড়াও এটি সম্ভবত বর্তমান প্রক্রিয়াটির পরিবর্তে নতুন শেলটি 'এক্সিকিউট' করা ভাল to
পিটার জেনকিনস

আমি .shellrc(সঠিক ফাইলের নাম পরিবর্তন করে) দিয়েও এটিই করি, তবে আমি পরিবেশের পরিবর্তনশীল এর আগেও ঘোষণা করি এবং exec bashএটি সেট না করা থাকলে নিজেই শেলটি চালানোর অনুমতি দেয় এবং দুর্ভাগ্যজনক লুপগুলি রোধ করতে। মনে রাখবেন যে আপনাকে কোনও নির্দিষ্ট শেল ডায়ালেক্ট ব্যবহার করতে হবে না, কারণ এই ক্রিয়াকলাপগুলি সম্পাদন করতে আপনি কেবল ডান শেবাং দিয়ে একটি স্ক্রিপ্ট সম্পাদন করতে পারেন।
MayeulC

4

সুতরাং আমার ক্ষেত্রে আসল উত্তরটি হ'ল সিস্টেম প্রশাসকরা (আইটি) মানক কনফিগারেশনটি লক করতে চান, তাই আপনাকে তাদের জিজ্ঞাসা করতে হবে। তবে প্রসেসটে আমি আপনার এলডিএপি কনফিগারেশনটি সনাক্ত করার জন্য আরও কিছু সহায়ক কমান্ড সন্ধান করেছি (যদি এটি আপনাকে কীভাবে কনফিগার করা হয় এমনটি ঘটে), কেবল যদি আপনার সিস্টেমে একই এসএএসএল ত্রুটিটি জানায় "ldap_sasl_interactive_bind_s: অজানা প্রমাণীকরণ পদ্ধতি (-6) অতিরিক্ত তথ্য : এসএএসএল (-4): কোনও পদ্ধতি উপলব্ধ নেই: "

আপনার সিস্টেম সমর্থন করে এমন SASL প্রমাণীকরণ পদ্ধতি তালিকাবদ্ধ করুন:

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

ফলাফলগুলি এমন কিছু হতে পারে:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

তারপরে আপনি -Y বিকল্পটি ব্যবহার করে LDAP কমান্ডগুলিতে প্রমাণীকরণ পদ্ধতিটি পাস করতে পারেন:

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

4

আর একটি সমাধান হ'ল আপনার ওয়াইপি শেলটিকে ওভাররাইড করা:

আপনার এই লাইন যুক্ত করুন /etc/passwd:

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

উদাহরণ:

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

এবং আপনার সাথে নিম্নলিখিতগুলি যুক্ত করুন /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

যেমনটি আমি বলেছি, আমার সিস্টেমে রুট নেই (সুতরাং ফাইলগুলিতে / ইত্যাদি সম্পাদনার জন্য সীমাবদ্ধ নয়)। তবে, এই উত্তরটি অনুরূপ সমস্যার সাথে অন্য কাউকে সহায়তা করতে পারে।
ওগ্রে গীতসংহিতা 33

0

শীর্ষ উত্তরের জন্য শংসাপত্রগুলি দেখার আরও একটি উপায় ldapsearch -x

ldapsearch -x uid=$(whoami)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.