স্ক্রিপ্টের কমান্ড লাইনের মাধ্যমে শেল (chsh ব্যবহার করে) পরিবর্তন করা হচ্ছে


11

একটি স্টার্টআপ স্ক্রিপ্ট যা একটি মেশিন সেট আপ করে, আমি চালাতে চাই

chsh -s /bin/zsh

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

উত্তর:


21

নিম্নলিখিতগুলি লকডাউন অ্যাকাউন্টগুলিকে তাদের শেল পরিবর্তন করতে বাধা দেয় এবং নির্বাচিতভাবে লোকেদের chshনিজের বা সুডো বা su ছাড়াই ব্যবহার করতে দেয় :

সহজ সেটআপ যা এখনও সুরক্ষিত:

  1. এর একেবারে শীর্ষ যুক্ত করুন /etc/pam.d/chsh:

    # This allows users of group chsh to change their shells without a password.
    #
    # Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
    #
    auth       sufficient   pam_wheel.so trust group=chsh
    
  2. Chsh গ্রুপটি তৈরি করুন:

    groupadd chsh
    

যে কোনও ব্যবহারকারীর জন্য তাদের শেল পরিবর্তন করার অনুমতি দেওয়া হয়েছে:

    usermod -a -G chsh username

অর্থ শট:

user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$ 

কাজের সমাধান, আশ্চর্য যে এটি এখনও গৃহীত হয়নি।
ডিম্পিয়াक्स

ধন্যবাদ। এটি কোনও কিপাইর-কেবল লেখককে sudo ছাড়াই শেল পরিবর্তন করার জন্য সবচেয়ে সহজ উপায় বলে মনে হচ্ছে। এই pam.d স্টাফ খুব আকর্ষণীয়!
ফ্রান্সোইস ড্রলেট

4

chsh আসলে / etc / passwd- তে ব্যবহারকারীর সাথে সম্পর্কিত লাইনটি পরিবর্তন করে, যদিও ব্যবহারকারী কেবল তার নিজের / লাইনটি / etc / passwd এ পরিবর্তন করতে পারে। অতএব, আপনি যদি অন্য ব্যবহারকারীর জন্য শেল পরিবর্তন করতে চান তবে আপনার তার পাসওডও প্রয়োজন।

আপনি যদি সত্যিই এটি করতে চান (লোরেঞ্জোর পোস্টে উদ্বেগ এবং সম্ভাব্য সুরক্ষা উদ্বেগের প্রেক্ষিতে) এখানে কীভাবে কেউ এটি করতে পারে তা এখানে:

#visudo

এর জন্য মূল সুবিধার দরকার।

বলুন আপনি বর্তমানে "এলিস" হিসাবে চলছেন এবং পাসওয়ার্ড ছাড়াই "বব" শেল পরিবর্তন করতে চান;

ফাইলটিতে যুক্ত করুন:

Cmnd_Alias     SHELL = /usr/bin/chsh
Runas_Alias    SH    = Bob
alice          ALL   = (SH) NOPASSWD: SHELL

এটি নিশ্চিত করে যে 'এলিস' SHLL কমান্ডের গোষ্ঠী পাসওয়ার্ড ছাড়াই SH গ্রুপের ব্যবহারকারী হিসাবে সমস্ত হোস্টে চলতে পারে।

সম্ভবত এটি কিছুটা দূরে করতে এটি করা সম্ভব তবে এটি সম্ভব।

'ভ্যুডো' দিয়ে সুডোরস ফাইলটি পরিবর্তন করার আগে "ম্যান সুডোয়ার্স" পড়তে ভুলবেন না, বিশেষত সুরক্ষা সম্পর্কিত বার্তাগুলি!


সমস্যাটি sudoহ'ল এটি একটি সিস্টেমকে অবতরণ এবং রুট করা অত্যন্ত সহজ। sudoersকোনও নির্দিষ্ট প্রয়োজন যা অন্য কোনও উপায়ে পূরণ করা যায় না (সিটুইড / সেটগিড এক্সিকিউটেবল, গ্রুপ পার্টিশন ইত্যাদি) পরিবর্তিত হওয়া কখনই ভাল better

2

আপনাকে ব্যবহারকারীর নামটি পাস করতে হবে; sudo(বা মূল দ্বারা) এর মাধ্যমে এটি আপনাকে পুরানো পাসওয়ার্ড জিজ্ঞাসা না করে কোনও ব্যবহারকারীর পাসওয়ার্ড / শেল সেট করার অনুমতি দেবে। man chshআরও তথ্যের জন্য দয়া করে চেক করুন।

এখন আমার প্রশ্ন: আপনি কেন এটি করতে চান? যদি এটি কোনও সেট-আপ স্ক্রিপ্ট হয়, আপনি কি তৈরির সময় (যেমন চালু করার সময় adduser) কেবলমাত্র ব্যবহারকারীদের শেলটি পরিবর্তন করবেন না ? যদি আপনি কোনও সিস্টেমকে দূর থেকে ক্লোনিং করে থাকেন, তবে আপনি কি /etc/passwdপ্রথমে এটি পরিবর্তন করবেন না ? আমি কোনও স্ক্রিপ্টের মাধ্যমে এটি করার কোনও কারণ দেখতে পাচ্ছি না, যদি না আপনি সম্পূর্ণ ইনস্টলেশন প্রক্রিয়াটি স্বয়ংক্রিয় না করেন এবং ইনস্টল করার জন্য শেল নির্বাচন প্রথম ব্যবহারকারী তৈরির পরে আসে না comes


এটি ইসি 2 মেশিনের জন্য (মেশিনটি শুরু হওয়ার পরে আমি স্ক্রিপ্টটি চালিত করি)। আমি ডিফল্ট শেলিং পরিবর্তন করতে চাই। "Sudo chsh -s / bin / zsh ব্যবহারকারীর নাম" করা

একটি স্ক্রিপ্ট ব্যবহার করে দেখুন এবং #!/usr/bin/sudo -s(শেবাং লাইন) ব্যবহার করুন । এছাড়াও, আপনি কি নিশ্চিত যে zsh / বিনে রয়েছে এবং সম্ভবত / ইউএসআর / বিনে নেই? (শুধু খতিয়ে দেখা হচ্ছে, আমি ec2 এর সাথে পরিচিত নই)
lorenzog

এই উত্তরটি অসম্পূর্ণ কারণ এটি sudoঅনুমতি গ্রহণ করে । sudoগড় ব্যবহারকারীর জন্য প্রয়োজন হয় না এমন ভিন্ন পদ্ধতির জন্য আমার দেখুন ।

0

আমি বিশ্বাস করি আপনি /etc/passwordসম্ভবত passwdকমান্ডটি ব্যবহার করে ফাইলটিতে ব্যবহারকারীর শেল পরিবর্তন করতে পারবেন । আমি এখনও এটি পড়ে নিই তবে এটি কার্যকর হতে পারে: ইউনিক্স শেলের পার্থক্য এবং কীভাবে আপনার শেলটি পরিবর্তন করতে হয়


কমান্ডগুলি হয় chshবা usermod। কখনও passwdফাইল সরাসরি সম্পাদনা করবেন না , সর্বদা এর জন্য vipwকমান্ডটি ব্যবহার করুন ।

0

sudo chsh -s /bin/zshতারপরে চেষ্টা করুন :

  1. সার্ভারের জন্য প্রস্থান করুন
  2. টার্মিনাল পুনরায় আরম্ভ করুন
  3. সার্ভারে লগইন করুন এবং চেক করুন echo $SHELL- সফল ক্ষেত্রে এটির পরিবর্তিত হয়েছে :)

এটি প্রকৃত ব্যবহারকারীর জন্য zsh কে ডিফল্ট টার্মিনাল হিসাবে সেট করবে।
lcguida

@lcguida ঠিক আছে।
ডিম্পিয়াাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.