কম্পিউটার টিউটোরিয়াল

লিনাক্স কীভাবে ইউজার পাসওয়ার্ড স্টোর এবং ম্যানেজ করে

আপনি কি কখনো চিন্তা করেছেন লিনাক্স কীভাবে দক্ষতার সাথে মাল্টি-ইউজার এনভায়রনমেন্ট ম্যানেজ করে? এই আর্টিকেলে আমরা ব্যাখ্যা করব লিনাক্স কীভাবে ইউজার পাসওয়ার্ড এবং লগইন স্টোর ও ম্যানেজ করে।

/etc/passwd ফাইল এক্সপ্লোর করা

যখন একজন ইউজার ইউজারনেম এবং পাসওয়ার্ড লিখে, লিনাক্স "/etc" ডিরেক্টরিতে কয়েকটি ফাইলের এন্ট্রির সাথে ইনপুট পাসওয়ার্ড চেক করে।

"/etc/passwd" হলো ইউজার ডিটেইলস স্টোর করা সবচেয়ে গুরুত্বপূর্ণ ফাইলগুলোর এক।

এই ফাইলের লাস্ট এন্ট্রি "carbon" ইউজারের সাথে মিলে। কলন (:) দিয়ে সেপারেটেড ইনফরমেশনের একাধিক ফিল্ড রয়েছে।

  • carbon : ইউজারের নাম যের জন্য এই এন্ট্রি কোরেসপন্ড করে।
  • x : ইন্ডিকেট করে যে ইউজারের জন্য একটি পাসওয়ার্ড এক্সিস্ট করে। তবে, পাসওয়ার্ড "/etc/shadow" ফাইলে স্টোরড থাকে। যদি x-এর বদলে ! সিম্বল দেখায়, তবে ইন্ডিকেট করে পাসওয়ার্ড এক্সিস্ট করে না।
  • 1000 : এই ইউজারের ইউজার ID।
  • 1000 : এই ইউজারের যে গ্রুপে বেলonges সেটির গ্রুপ ID।
  • carbon, , , : পূর্ণ নাম এবং টেলিফোন নম্বর সহ ইনফরমেশনের একাধিক ফিল্ড ইন্ডিকেট করে। এখানে, কোনো টেলিফোন নম্বর প্রদান করা হয়নি।
  • /home/carbon : এই ইউজারের জন্য অ্যাসাইন করা হোম ডিরেক্টরির লোকেশন।
  • /bin/bash : এই ইউজারের জন্য অ্যাসাইন করা ডিফল্ট শেল।

আমরা আরেকটি ইউজার তৈরি করি যার জন্য কিছু টেলিফোন নম্বর স্টোরড আছে। "pluto" ইউজার adduser কমান্ড দিয়ে সিস্টেমে যোগ করা হয়েছে।

আরেকবার "/etc/passwd" ফাইলটি দেখলে, আমরা "pluto" ইউজারের পূর্ণ ইনফরমেশন দেখতে পাই। কমা-সেপারেটেড ফুল নাম এবং নম্বরের ফিল্ডটি "GECOS field" নামে ডাকা হয়।

যখন একটি ইউজার তৈরি হয়, হোম ডিরেক্টরি এবং ডিফল্ট শেল যা অ্যাসাইন করতে হবে সেগুলোর ভ্যালু "/etc/adduser.conf" ফাইলে স্পেসিফাইড থাকে।

তৈরি করা ইউজারদের জন্য ইউজার ID ১০০০ থেকে শুরু হয় এবং ৫৯৯৯৯ পর্যন্ত চলে।

"carbon" ইউজার cat কমান্ড দিয়ে সহজে "/etc/passwd" ফাইলের এন্ট্রিগুলো দেখতে পারল। চলুন এর পারমিশন চেক করি।

শুধু "root" ইউজার ফাইলে লিখতে পারে। অন্যান্য ইউজার শুধু ফাইল পড়তে পারে। যেহেতু এই ফাইল সবাই পড়তে পারে, এখানে পাসওয়ার্ড স্টোর করা আদর্শ নয়। বরং এটি অন্য একটি ফাইলে স্টোরড থাকে যেটি "/etc/shadow" নামে ডাকা হয়।

/etc/shadow ফাইল এক্সপ্লোর করা

এখন চেষ্টা করি "carbon" এবং "pluto" ইউজারদের স্টোরড পাসওয়ার্ড "/etc/shadow" ফাইলে দেখি।

"/etc/shadow" ফাইলের পারমিশন দেখলে, আমরা দেখি শুধু "root" ইউজার ফাইলটি পড়তে এবং লিখতে পারে। ওপর থেকে শুধু "shadow" গ্রুপের মেম্বাররা ফাইলটি পড়তে পারে। বাস্তবে, "shadow" গ্রুপ খালি থাকে কিন্তু সিনট্যাক্টিক্যালি এই ফাইলের জন্য রিকোয়ার্ড।

"root" হিসেবে লগ ইন করে, আমরা "/etc/shadow"-এর লাস্ট টেন লাইন দেখি। "/etc/passwd"-এ প্রতিটি এন্ট্রির জন্য, এই ফাইলে একটি কোরেসপন্ডিং এন্ট্রি রয়েছে। ফরম্যাট হবে এমন:

pluto:$6$JvWfZ9u....:18283:0:99999:7:::

এই ফাইলেও, প্রতিটি এন্ট্রিতে কলন (:) দিয়ে সেপারেটেড একাধিক ফিল্ড রয়েছে। "pluto" ইউজারের এন্ট্রি ডিসিপহার করি।

  • pluto : ইউজারের নাম যের জন্য এই এন্ট্রি কোরেসপন্ড করে।
  • $6$JvWfZ9u.$yGFIqOJ.... : হ্যাশড ইউজার পাসওয়ার্ড স্টোরড থাকে হ্যাশিং অ্যালগরিদম ব্যবহৃত সম্পর্কে ইনফরমেশনসহ। এছাড়া, প্লেইনটেক্সট পাসওয়ার্ডের সাথে একটি সল্ট ভ্যালু ব্যবহার করে পাসওয়ার্ড হ্যাশ জেনারেট করা হয়।
{ plaintext password, salt } -> hashed password

এই ফিল্ডের কন্টেন্ট প্রসেস করি। $ সিম্বলটি তিনটি ফিল্ড আলাদা করার ডিলিমিটার হিসেবে ব্যবহৃত হয়।

$6 $JvWfZ9u. $yGFIqOJ....
  • $6 : ব্যবহৃত হ্যাশিং অ্যালগরিদম। সম্ভাব্য হ্যাশিং অ্যালগরিদমের তালিকা:
    • $1 : MD5
    • $2a : Blowfish
    • $2y : Eksblowfish
    • $5 : SHA-256
    • $6 : SHA-512
  • $JvWfZ9u. : সল্ট ভ্যালু।
  • $yGFIqOJ.... : হ্যাশড পাসওয়ার্ড।

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

এন্ট্রির বাকি ফিল্ডগুলো নিয়ে এগিয়ে যাই,

  • 18283: জানুয়ারি ১, ১৯৭০ থেকে কত দিন আগে পাসওয়ার্ড লাস্ট চেঞ্জ করা হয়েছিল সেটি ইন্ডিকেট করে
  • 0 : এই ফিল্ড পাসওয়ার্ড চেঞ্জ করার পর কত দিন পর চেঞ্জ করা যাবে সেটি ইন্ডিকেট করে। ০ ভ্যালু মানে যেকোনো সময় পাসওয়ার্ড চেঞ্জ করা যাবে।
  • 99999 : এই ফিল্ড পাসওয়ার্ড অবশ্যই চেঞ্জ করতে হবে তার পর কত দিন সেটি ইন্ডিকেট করে। ৯৯৯৯৯ ভ্যালু মানে ইউজার যাবতίαয় পাসওয়ার্ড রাখতে পারবে।
  • 7 : যদি পাসওয়ার্ড এক্সপায়ার সেট করা থাকে, তবে এই ফিল্ড ইউজারকে পাসওয়ার্ড এক্সপায়ারির সম্পর্কে সতর্ক করার কত দিন আগে সেটি ইন্ডিকেট করে।
  • : : : এন্ট্রির অংশ হিসেবে তিনটি ফিল্ড আরো রয়েছে, যদিও এখানে খালি। প্রথমটি পাসওয়ার্ড এক্সপায়ারের পর কত দিন ওপেক্ষা করতে হবে, যারপরেই অ্যাকাউন্ট ডিজেবল হয়বে। দ্বিতীয়টি জানুয়ারি ১, ১৯৭০ থেকে কত দিন আগে অ্যাকাউন্ট ডিজেবল করা হয়েছিল। তৃতীয়টি ভবিষ্যতের জন্য রিজার্ভড। খালি ফিল্ডগুলো ইন্ডিকেট করে যে এই ইউজারের বর্তমান পাসওয়ার্ড এক্সপায়ার হয়নি এবং শীঘ্রই এক্সপায়ার হওয়ার সেটিংও নেই।

পাসওয়ার্ড ভ্যালিডিটি সম্পর্কে লাস্ট সাতটি ফিল্ডকে মিলিতভাবে "Password Aging Policy" ধারণ করা বলা হয়।

"Password Aging Policy"-এর সাথে কোরেসপন্ডিং ডিফল্ট ভ্যালুগুলো "/etc/login.defs" ফাইলে স্পেসিফাইড থাকে। এই ভ্যালুগুলো chage কমান্ড ব্যবহার করে একজন ইউজারের জন্য অ্যাল্টার করা যায়।

গ্রুপ ইনফরমেশন কী?

ইউজার ইনফরমেশন এবং পাসওয়ার্ড "/etc/passwd" এবং "/etc/shadow" ফাইলে স্টোরড থাকে। একইভাবে, গ্রুপ ইনফরমেশন "/etc/group" ফাইলে স্টোরড থাকে।

উপরে হাইলাইট করা "carbon" এবং "pluto" ইউজারদের গ্রুপগুলো। যখন লিনাক্সে একটি ইউজার তৈরি হয়, সেটি তৎক্ষণাতই ইউজারনেমের মতো নামের একটি গ্রুপে অ্যাসাইন করা হয়।

এক গ্রুপের মেম্বাররা গ্রুপ পাসওয়ার্ড শেয়ার করতে পারেন, গ্রুপ-রিলেটেড অ্যাক্টিভিটির জন্য। x ভ্যালু ইন্ডিকেট করে যে সেই গ্রুপের পাসওয়ার্ড ইনফরমেশন "/etc/gshadow" ফাইলে থাকবে।

তবে, "/etc/gshadow"-এ অ্যাক্সেস "root" ইউজারের জন্য রেস্ট্রিক্টেড।

"root" ইউজার "/etc/gshadow"-এর এন্ট্রিগুলো দেখতে পারেন, যা "/etc/shadow"-এর সাথে সিমিলার। "carbon" গ্রুপের এন্ট্রি দেখলে, আমরা দেখি দ্বিতীয় ফিল্ডে ! ভ্যালু রয়েছে, যা ইন্ডিকেট করে এই গ্রুপের জন্য কোনো পাসওয়ার্ড এক্সিস্ট করে না।

সবকিছু একসাথে

যখন একজন ইউজার লগ ইন করতে চায়, টাইপ করা পাসওয়ার্ডের হ্যাশ "/etc/shadow"-এ সে ইউজারের সল্ট ভ্যালু ব্যবহার করে বের করা হয়। তারপর সেটি স্টোরড হ্যাশের সাথে কমপেয়ার করা হয়। যদি ভ্যালুগুলো মেলে, তবে ইউজারকে অ্যাক্সেস দেওয়া হয়।

সম্পর্কিত:

  • লিনাক্সে রুট পাসওয়ার্ড রিসেট করা
  • লিনাক্সে টার্মিনাল থেকে ইউজার পাসওয়ার্ড ম্যানেজ করা
  1. লিনাক্স ইনোড কীভাবে কাজ করে?

  2. থুনার (Thunar) ফাইল ম্যানেজার থেকে ইমেজ কম্প্রেস ও রিসাইজ করুন

  3. লিনাক্সে জিপ ফাইল এক্সট্র্যাক্ট করার পদ্ধতি

  4. লিনাক্সে ফাইল Permanently ডিলিট করুন – ধাপে ধাপে গাইড