Strawberry Group | Topic Three, Bite Part

T3, Bite Part ( 2 )

RESETTING THE ROOT PASSWORD

RESETTING THE ROOT PASSWORD FROM THE BOOT LOADER

প্রতিটি সিস্টেম অ্যাডমিনিস্ট্রেটরের একটি গুরুত্বপূর্ণ দক্ষতা হলো, হারানো root পাসওয়ার্ড রিসেট করার পদ্ধতি জানা। 

  • যদি অ্যাডমিনিস্ট্রেটর ইতোমধ্যেই সিস্টেমে লগইন করা থাকে, হয়তো sudo-এর পূর্ণ অ্যাক্সেসসহ একজন সাধারণ (unprivileged) user হিসেবে, অথবা সরাসরি root user হিসেবেই, তাহলে এই কাজটি খুবই সহজ। 

  • কিন্তু, যদি অ্যাডমিনিস্ট্রেটর সিস্টেমে লগইন না করে থাকেন, তখন এই কাজটি কিছুটা জটিল হয় এবং কিছু অতিরিক্ত ধাপ অনুসরণ করতে হয়।   

নতুন root পাসওয়ার্ড সেট করার জন্য একাধিক পদ্ধতি রয়েছে।

  • উদাহরণস্বরূপ, একজন সিস্টেম অ্যাডমিনিস্ট্রেটর Live CD ব্যবহার করে সিস্টেম বুট করতে পারেন, এরপর সেখান থেকে মূল (root) ফাইল সিস্টেমটি mount করে /etc/shadow ফাইল edit করতে পারেন।

  • আমরা এমন একটি পদ্ধতি নিয়ে আলোচনা করব যা external media ব্যবহার না করেই root পাসওয়ার্ড রিসেট করতে সাহায্য করে।

Red Hat Enterprise Linux 8-এ এমন একটি সুবিধা রয়েছে,

  • যেখানে initramfs থেকে চলমান স্ক্রিপ্টগুলো নির্দিষ্ট কিছু ধাপে থেমে যেতে পারে, এবং সেখানে একটি root shell সরবরাহ করা হয়। এই shell থেকে কাজ শেষ করে বেরিয়ে এলে সিস্টেম আবার আগের মতো চালু হতে থাকে। 

  • এই ফিচারটি মূলত debugging এর জন্য তৈরি হলেও, আমরা এটি ব্যবহার করে একটি হারানো root পাসওয়ার্ড রিসেট করতেও পারি।    

To access that root shell, follow these steps:

1. Reboot the system.
2. Interrupt the boot loader countdown by pressing any key, except Enter.
3. Move the cursor to the kernel entry to boot.
4. Press e to edit the selected entry.
5. Move the cursor to the kernel command line (the line that starts with linux).
6. Append rd.break With that option, the system breaks just before the system hands control from the initramfs to the actual system.
7. Press Ctrl+x to boot with the changes.

এই পর্যায়ে, সিস্টেম একটি root shell display করে, যেখানে ডিস্কে থাকা আসল রুট ফাইল সিস্টেমটি /sysroot ডিরেক্টরিতে read-only হিসেবে মাউন্ট করা থাকে। কিন্তু যেহেতু troubleshooting-এর সময় প্রায়ই রুট ফাইল সিস্টেমে পরিবর্তন করার প্রয়োজন হয়, তাই এটি read/write (rw) মোডে রিমাউন্ট করতে হয়। নিচের ধাপে দেখানো হয়েছে কিভাবে mount কমান্ডের remount,rw অপশন ব্যবহার করে ফাইল সিস্টেমটিকে রিমাউন্ট করে এবং rw (read/write) অপশন সক্রিয় করে:  

1. Remount /sysroot as read/write.

switch_root:/# mount -o remount,rw /sysroot

2. Switch into a chroot jail, where /sysroot is treated as the root of the file-system tree.

switch_root:/# chroot /sysroot

ব্যাখ্যা: এই ধাপে, আপনি এমন একটি পরিবেশে (chroot jail) স্যুইচ করছেন, যেখানে /sysroot কে পুরো ফাইল সিস্টেমের মূল (/) হিসেবে ধরা হবে। এটি করার উদ্দেশ্য হল, যেন আপনি রুট ফাইল সিস্টেমের ভেতরে ঢুকে সিস্টেমের মতোই কাজ করতে পারেন, যেমন — পাসওয়ার্ড পরিবর্তন করা, কনফিগারেশন ফাইল ঠিক করা ইত্যাদি।  

3. Set a new root password.

sh-4.4# passwd root

4. Make sure that all unlabeled files, including /etc/shadow at this point, get relabeled during boot.

sh-4.4# touch /.autorelabel  

5. Type exit twice. The first command exits the chroot jail, and the second command exits the initramfs debug shell.  

At this point, the system continues booting, performs a full SELinux relabel, and then reboots again.


INSPECTING LOGS

Previously Failed হওয়া বুটগুলোর log দেখা অনেক সময় useful হতে পারে। যদি সিস্টেম জার্নালগুলি রিবুটের পরেও persistent থাকে, তাহলে আমরা journalctl টুল ব্যবহার করে সেগুলো inspect করতে পারব।

মনে রাখতে হবে

ডিফল্টভাবে, সিস্টেম জার্নাল /run/log/journal ডিরেক্টরিতে সংরক্ষিত হয়। যা একটি volatile অবস্থান।

  • যার মানে, system যখন reboot হয় journal গুলো তখন clear হয়ে যায়।

reboot এর পরও স্থায়ীভাবে লগ persists করতে /var/log/journal ডিরেক্টরিতে সেগুলো সংরক্ষণের ব্যবস্থা করতে হবে।

এর জন্য যা করতে হবে,

REPAIRING SYSTEMD BOOT ISSUES

বুট হওয়ার সময় service startup issues হলে, তা troubleshoot-র জন্য Red Hat এর Red Hat Enterprise Linux 8 নিম্নলিখিত টুলগুলো সরবরাহ করে।

Enabling the Early Debug Shell

systemctl enable debug-shell.service কমান্ড চালু করলে, সিস্টেম বুট হওয়ার একদম শুরুর দিকে TTY9 (Ctrl+Alt+F9) এ একটি root shell চালু হয়।

এই shell-এ স্বয়ংক্রিয়ভাবে root হিসেবে লগইন করা থাকে। ফলে অপারেটিং সিস্টেম পুরোপুরি চালু হওয়ার আগেই অ্যাডমিনরা সিস্টেমের সমস্যা খুঁজে বের debug করতে পারেন।

সহজভাবে

  • debug-shell.service চালু করলে
    → বুটের সময় একটি অতিরিক্ত terminal খোলে
    → সেখানে সরাসরি root access পাওয়া যায়
    → Ctrl + Alt + F9 চাপলে সেই terminal দেখা যায়

এটি সাধারণত ব্যবহার করা হয়:

  • emergency recovery
  • boot failure troubleshooting
  • service startup issue debugging

Using the Emergency and Rescue Targets

বুট লোডার এর kernel command line-এ

  • systemd.unit=rescue.target অথবা
  • systemd.unit=emergency.target append করলে,

সিস্টেম normally boot না হয়ে rescue বা emergency shell-এ প্রবেশ করে।

  • উভয়ই shell এর জন্য root password required.

এই shell-গুলিতে root user /etc/fstab ফাইলে কোনো পরিবর্তন করতে পারে না, কারণ drive তখনও read-only অবস্থায় থাকে।
পরিবর্তন করতে হলে drive-টিকে read-write mode-এ পুনরায় remount করতে হয়।

mount -o remount,rw /

Administrators-রা এই shell গুলো ব্যবহার করে এমন কিছু issues fix করতে পারেন, যেগুলোর কারণে সিস্টেম normally boot হতে পারে না। উদাহরণ:

  • services-এর মধ্যে dependency loop
    • dependency loop মানে হলো, দুই বা ততোধিক service একে অপরের উপর এমনভাবে নির্ভর করছে যে কোনোটি আগে চালু হতে পারছে না।
  • /etc/fstab-এ ভুল entry

এই shell থেকে বের হয়ে গেলে (exit দিলে), সিস্টেম regular boot process করতে পারে।

Identifying Stuck Jobs

সিস্টেম চালু হওয়ার সময় systemd অনেকগুলো job একসাথে শুরু করে।

যদি এর মধ্যে কোনো একটি কাজ complete না করতে পারে, তাহলে সেটি অন্য কাজগুলোকেও block করতে পারে।

Current job list inspect করতে Adminstrator-রা এই command use করতে পারেন।

systemctl list-jobs

এই কমান্ডে আমরা দেখতে পারবঃ

  • waiting: যে কাজগুলো অপেক্ষায় আছে। অর্থাৎ, অন্য কোনো চলমান কাজ শেষ না হওয়া পর্যন্ত শুরু হতে পারছে না.
  • running: যে কাজগুলো এখন চলছে

এই information-গুলো জানলে আমরা সিস্টেম booting time-এ দ্রুত troubleshooting করতে পারব।


Strawberry Group | Topic Three, Bite Part

Sorry! you cannot copy content of this page.