রুটের শেলটি কোনও খারাপ ফাইলে সেট করা থেকে পুনরুদ্ধার


23

ধরা যাক যে আমি গিয়েছি এবং একটি নির্বোধ কাজ করেছি, যেমন root ব্যবহারকারীর শেলটি খারাপ ফাইলের পথে পরিবর্তন করতে 'chsh' ব্যবহার করে। মূল অ্যাকাউন্টে ভবিষ্যতের লগইনগুলি হ'ল হঠাৎ ব্যর্থ হবে, উদ্ধৃত / বিন / যা কিছু পাওয়া যাচ্ছিল না তা উল্লেখ করে এবং আপনাকে লগইন স্ক্রিনে ফিরিয়ে আনে। একটি পুনরুদ্ধার মোড ব্যতীত বা সম্পাদনা / ইত্যাদি / পাসডাব্লুডে একটি লাইভসিডি সন্নিবেশ করা, আমার সিস্টেমটি ফিরে পাওয়ার জন্য আমার বিকল্পগুলি কী? আসুন ধরে নেওয়া যাক (মজাদার জন্য?) যে চাকাতে অন্য কোনও ব্যবহারকারী নেই। থটস?


আপনি কি প্রস্তাব করছেন এটি কি এমন একটি অনুমানীয় পরিস্থিতি?
ক্রিস ডাউন

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

সেখানে এসেছি, হয়ে গেছে, টি-শার্ট পেয়েছি। তবে প্রতিটি মেশিনের ফলস্বরূপ আমি পরিচালনা করি আমি কেবলমাত্র সেক্ষেত্রেই একটি ব্যাকআপ রুট অ্যাকাউন্ট বজায় রাখি।
মার্ক ডি

উত্তর:


30

বুট করার সময়, init=/bin/bashআপনার বুট বিকল্পগুলিতে সংযোজন (বা অন্য কোনও কার্যকরী শেলের কোনও পথ) - আপনাকে সরাসরি একক ব্যবহারকারীর শেল থেকে নামানো হবে। সেই পরিবেশে এন্ট্রিটি mount -o remount,rw /সংশোধন করার আগে আপনার প্রয়োজন হতে পারে /etc/passwd। এর পরে, কেবল পুনরায় বুট করুন বা করুন exec /sbin/init 3। কেবল Ctrl + D টাইপ বা টিপুন নাexit কারণ এর ফলে কার্নেল প্যানিক হতে পারে *।

দ্বি-পর্যায়ে মোডে চালিত কিছু সিস্টেমে (একটি ইআরআরডি চিত্র সহ) এই পদ্ধতির একটি অতিরিক্ত প্রকরণের প্রয়োজন হতে পারে। আপনি যদি লক্ষ্য করেন যে বুট বিকল্পগুলি ধারণ করে init=এবং, সবচেয়ে গুরুত্বপূর্ণভাবে real_init=, তবে রাখার জায়গাটি /bin/bashপরবর্তী পরামিতি হওয়া উচিত (অর্থাত্ real_init=/bin/bash)।

* কারণ এই পরিবেশে, শেলটি কার্নেল দ্বারা init প্রোগ্রাম হিসাবে দেখা যায় - এটি কার্নেল দ্বারা জানা একমাত্র প্রক্রিয়া - এটি কার্নেলের চোখের নীচে একটি চলমান সিস্টেমকে উপস্থাপন করে। হঠাৎ করে এই প্রক্রিয়াটি শেষ করে, কার্নেলটিকে সিস্টেমটি বন্ধ করার কথা না জানিয়ে, অবশ্যই কার্নেল আতঙ্কের সৃষ্টি করতে হবে। (হঠাৎ আপনার চারপাশের সবকিছু কালো এবং নীরব হয়ে গেলে কি আপনি আতঙ্কিত হবেন না?)


এর জন্য দুর্দান্ত exec, তবে আমার ধারণা, মাউন্ট পয়েন্টগুলি নিয়ে আগে থেকে খুব বেশি গোলমাল না করা ভাল better
স্টাফেন গিমেনেজ

2
@ Steph আপনি আছে যে যদি আপনার কার্নেল রুট মাউন্ট করা হয় না read-write না। অন্যথায় আপনি কোনও ফাইল (সহ /etc/passwd) সংশোধন করতে পারবেন না ।
rozcietrzewiacz

ভাল চিন্তা! আমি একক-ব্যবহারকারী মোডে প্রবেশ করতে পেরেছি, তবে এটি আমাকে আঘাত করতে পারেনি যে আমি পুনঃসমাপ্ত করতে / পড়তে / লিখতে / পরিবর্তন করতে / লিখতে লিখতে / ইত্যাদি / পাসডাব্লুড করতে হয়েছিল। ধন্যবাদ!
নফলে

@ জর্জ শিওর, আমি বলার চেষ্টা করছিলাম যে আমি আরআইকে /সম্পাদন করার আগে মাউন্ট করা অন্যান্য জিনিসগুলি (অন্য ব্যতীত ) আনমাউন্ট করার যত্ন নেব ।
স্টাফেন গিমেনেজ

@ স্টাফ মাউন্টগুলি নিয়ে কোনও সমস্যা হওয়া উচিত নয়। লক্ষ্য করুন যে /bin/bashঠিক বিন্দুতে /sbin/initচালিত হয় , তারপরে সাধারণ বুটে কার্যকর করা হবে। সুতরাং সেই সময় সিস্টেমের দ্বারা কোনও সম্ভাব্য পদক্ষেপ নেওয়া সম্ভব হবে না।
rozcietrzewiacz

10

suএক্সিকিউট করার জন্য আপনি একটি শেল ব্যবহার করতে পারেন এবং নির্দিষ্ট করতে পারেন (আপনি নিশ্চিত করার চেষ্টা করছেন কিনা তা নিশ্চিত নন যে অন্য কোনও ব্যবহারকারী না থাকার বিষয়ে আপনার নোট দিয়ে এটি সম্ভব নয় wheel):

su -c /bin/bash

অন্যথায় আপনি যদি অনুরূপ কিছু করতে পারেন তবে আপনার ssh ডিমন লগইনটিকে রুটে প্রবেশ করতে দেয়:

ssh root@localhost /bin/bash

উদাহরণস্বরূপ, init=/bin/kshবা অনুরূপ , আপনি বুটলোডারটিতে আপনার ডিআইআই হিসাবে শেল সেট করতে পারেন ।


1
চমৎকার চিন্তা. =) আপনার সন্দেহ হিসাবে, অন্য কোনও ব্যবহারকারী 'সু' ব্যবহার করতে পারবেন না। sshd এর রুট লগইন নিষ্ক্রিয় রয়েছে।
নফলে

6

আপনার বুটলোডারটি কার্নেল প্যারামিটারগুলির লাইভ সম্পাদনার অনুমতি দেওয়ার জন্য কনফিগার করা থাকলে, সমাধানটি পুনরায় বুট করা এবং শেলটি init প্রক্রিয়া হিসাবে ব্যবহার করা হয়, যেমন init=/bin/bash। তারপরে, হাত দ্বারা মাউন্ট করা প্রয়োজন যা কিছু মাউন্ট করুন এবং সম্পাদনা করুন /etc/passwdsyncএবং আপনার স্বাভাবিক দিয়ে আবার বুট init


বাহ, আমি কেবল লক্ষ্য করেছি যে আপনি নিজের মতো একই মিনিটে একই উত্তর পোস্ট করেছেন :-)
রোজিট্রিজেভিয়াকস

6

যদি আপনার প্রশ্নের সংক্ষিপ্ত বিবরণটি হ'ল আপনি রুট হওয়ার সমস্ত উপায় লক করে ফেলেছেন, তবে সংজ্ঞা অনুসারে আপনি রুট হতে পারবেন না।

ইউনিক্স সিস্টেমে তিনটি উপায়ের রুট হওয়ার অনুমতি দেওয়া সাধারণ:

  • rootলগইন প্রম্পটে প্রবেশ করে এবং রুট পাসওয়ার্ড টাইপ করে রুট হিসাবে লগ ইন করুন। এটি রুটের শেল চালায়।
  • সাধারণ ব্যবহারকারী হিসাবে লগ ইন করুন, তারপরে suরুট পাসওয়ার্ড চালিয়ে এবং টাইপ করে রুট হয়ে উঠুন । কিছু সিস্টেমে এটির জন্য একটি নির্দিষ্ট গ্রুপে থাকা প্রয়োজন (প্রায়শই বলা হয় wheel); অন্য সিস্টেমে, যে কেউ রুট পাসওয়ার্ড জানে সে মূল হয়ে যেতে পারে। প্রমাণীকরণের জন্য পিএএম ব্যবহার করা সিস্টেমগুলি pam_wheelহুইল গ্রুপটি পরিচালনা করতে তাদের ব্যবহার করে। যদি আপনি কমান্ডটি নির্দিষ্ট su -cকরে থাকেন তবে এটি রুটের শেলের মাধ্যমে সম্পাদিত হবে।
  • সাধারণ ব্যবহারকারী হিসাবে লগ ইন করুন, তারপরে sudoআপনার নিজের পাসওয়ার্ড চালিয়ে এবং টাইপ করে রুট হয়ে উঠুন । ব্যবহারকারীর অ্যাকাউন্ট অবশ্যই প্রশাসকের দ্বারা সুডো শক্তি দেওয়া উচিত। sudoersফাইলে সীমাবদ্ধ না থাকলে আপনি রুটের শেল নির্বিশেষে কোনও কমান্ড চালাতে পারবেন।

রুটের শেলটি অনুপলব্ধ থেকে রক্ষা করার একটি traditionalতিহ্যগত উপায় হ'ল ইউআইডি 0 এবং একটি পৃথক শেল ( toorএকটি চিরাচরিত নাম) সহ অন্য অ্যাকাউন্টটি সংজ্ঞায়িত করা । উদাহরণস্বরূপ, যদি রুটের শেলটি ডায়নামিকভাবে লিঙ্কযুক্ত এক্সিকিউটেবল (মেমরি সংরক্ষণের জন্য একটি ভাল ধারণা) এবং একটি লাইব্রেরি আপগ্রেড ভুল হয়ে যায় তবে রুটের শেলটি ব্যবহারযোগ্য হতে পারে না। বিকল্প রুট অ্যাকাউন্টে একটি স্ট্যাটিকালি লিঙ্কযুক্ত নির্বাহযোগ্য হবে, সম্ভবত ব্যাসিবক্সের মতো অন্তর্নির্মিত সাধারণ ইউটিলিটিগুলির একটি ।


5

উপরের উত্তরগুলি দুর্দান্ত এবং আমি সেগুলি পড়তে শিখেছি। যদি আপনি এই পদ্ধতির বিশদটি মনে না রাখেন এবং রিবুট করতে কিছু মনে করেন না, আপনি সর্বদা আপনার লাইভ সিডি ডিস্ট্রো ব্যবহার করে আপনার সিস্টেমটি বুট করতে পারেন, / পার্টিশনটি মাউন্ট করুন এবং তারপরে সম্পাদনা করুন / ইত্যাদি / পাসডাব্লু এবং পুনরায় বুট করুন। উপরের সমাধানগুলির মতো মার্জিত নয়, তবে মনে রাখা সহজ।


ম্যানুয়ালি /etc/passwdফাইল সম্পাদনা করার সাথে আপনার যুক্ত ঝুঁকিগুলি চিহ্নিত করা উচিত । এটি বাদে, ভাল কথা - আমি কেবল আমার উত্তরে একই পরামর্শ যুক্ত করতে চেয়েছিলাম।
rozcietrzewiacz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.