Ubuntu VPS-এ root পাসওয়ার্ড পরিবর্তনের নিয়ম
Ubuntu VPS-এ passwd, chpasswd ও chage দিয়ে root বা user পাসওয়ার্ড বদলান, কাজ করছে কি না যাচাই করুন এবং SSH বা root পাসওয়ার্ড হারালে প্রবেশাধিকার ফেরত পান।
Ubuntu-তে VPS root পাসওয়ার্ড কীভাবে পরিবর্তন করবেন
Ubuntu-তে আপনার VPS (virtual private server)-এর root পাসওয়ার্ড পরিবর্তন করতে sudo চালাতে পারেন এমন একজন ব্যবহারকারী হিসেবে SSH (secure shell) সেশন খুলুন। এরপর sudo passwd root চালান। এটি নতুন পাসওয়ার্ড দুবার দিতে বলে এবং পুরোনো পাসওয়ার্ড চায় না, কারণ sudo ইতিমধ্যে আপনার পরিচয় যাচাই করেছে। নিজের login পাসওয়ার্ড পরিবর্তন করতে কোনো argument ছাড়া passwd চালান। সে ক্ষেত্রে এটি প্রথমে আপনার বর্তমান পাসওয়ার্ড চায়।
passwd # your own password
sudo passwd deploy # another user's password
sudo passwd root # root's passwordএটাই পুরো প্রক্রিয়া। নিচের অংশে সেই পরিস্থিতিগুলো আলোচনা করা হয়েছে যেখানে সমস্যা দেখা দেয়: যে session দিয়ে সমস্যার সমাধান করা যেত সেটি হারানোর আগে নতুন পাসওয়ার্ড কাজ করছে কি না যাচাই করা, script থেকে পাসওয়ার্ড সেট করা, ইচ্ছাকৃতভাবে কোনো পাসওয়ার্ডের মেয়াদ শেষ করা এবং পাসওয়ার্ড ইতিমধ্যে হারিয়ে গেলে আবার প্রবেশাধিকার পাওয়া।
আপনি পাসওয়ার্ড পরিবর্তন করার আগে একটি দ্বিতীয় session খুলুন
এখন একটি দ্বিতীয় SSH session খুলে সংযুক্ত অবস্থায় রাখুন। এই নির্দেশিকার প্রায় সব ব্যর্থতাই একটি authenticated shell চালু থাকা অবস্থায় দুই মিনিটে ঠিক করা যায়। শেষ session-টিও বন্ধ হয়ে গেলে console-এ যেতে হতে পারে।
ইতিমধ্যে খোলা একটি shell সেটির সংশ্লিষ্ট account পরিবর্তন, lock বা expire করার পরও কাজ করে। কারণ SSH login-এর সময় credentials পরীক্ষা করে, পরে আর পরীক্ষা করে না। ব্যতিক্রম হলো sudo। এর timestamp expire হলে এটি PAM (pluggable authentication modules)-এর মাধ্যমে আপনার পাসওয়ার্ড আবার পরীক্ষা করে। ডিফল্টভাবে, শেষ prompt-এর 15 মিনিট পরে timestamp expire হয়। তাই নতুন পাসওয়ার্ডের প্রথম প্রকৃত পরীক্ষা login-এর সময় নয়, বরং পরের বার sudo পাসওয়ার্ড চাইলে হয়।
প্রথম session খোলা রেখে দ্বিতীয় session-এ নতুন পাসওয়ার্ড পরীক্ষা করুন।
passwd ব্যবহার করে নিজের password পরিবর্তন করুন
passwdChanging password for deploy.
Current password:
New password:
Retype new password:
passwd: password updated successfullypasswd: password updated successfully একমাত্র output যা নিশ্চিত করে যে /etc/shadow-এর hash প্রতিস্থাপিত হয়েছে। অন্য যেকোনো output হলে পুরোনো password-ই অপরিবর্তিত থাকে।
এখানে দুটি failure ঘটতে পারে। passwd: Authentication token manipulation error-এর পরে passwd: password unchanged দেখা গেলে আপনার দেওয়া current password ভুল ছিল, অথবা /etc/shadow থাকা filesystem-এ লেখা যাচ্ছে না। Recovery mode-এ এটিই সাধারণ অবস্থা। You must choose a longer password. এসেছে /etc/pam.d/common-password-এ থাকা pam_unix থেকে। এটি সাধারণ user-এর password-এর length ও similarity পরীক্ষা করে।
বেশিরভাগ VPS image-এ default account (ubuntu, অথবা provider দেওয়া অন্য কোনো নামের account)-এর কোনো password থাকে না; শুধু SSH key থাকে। passwd যাচাই করার মতো কোনো current password পায় না। তাই এটি প্রথম prompt অতিক্রম করতে পারে না। এর পরিবর্তে sudo passwd $USER ব্যবহার করুন। এটি কাজ করে, কারণ image-এর sudoers drop-in file ওই account-কে password ছাড়াই sudo চালানোর অনুমতি দেয়।
sudo passwd দিয়ে অন্য ব্যবহারকারীর password পরিবর্তন
sudo passwd deployroot-এর কাছে পুরোনো password চাওয়া হয় না। এছাড়া pam_unix সাধারণ ব্যবহারকারীদের ক্ষেত্রে প্রযোজ্য strength check এড়িয়ে যায়। তাই root এমন password সেট করতে পারে, যা ব্যবহারকারী নিজে সেট করতে পারত না।
Password lock করা আলাদা কাজ। sudo passwd -l deploy সংরক্ষিত hash-এর সামনে একটি ! বসায়। ফলে কোনো password সেটির সঙ্গে মেলে না। sudo passwd -u deploy এটি সরিয়ে দেয়। sudo passwd -S deploy দিয়ে বর্তমান অবস্থা পড়ুন।
Password lock করলেও ওই ব্যবহারকারীর login বন্ধ হয় না। তার ~/.ssh/authorized_keys-এর যেকোনো key এখনও কাজ করে, কারণ public key authentication কখনও /etc/shadow পড়ে না। কোনো account সম্পূর্ণভাবে বন্ধ করতে account-টিকেই expire করুন:
sudo usermod --expiredate 1 deployএতে account expiry 1970 সালের একটি তারিখে সেট হয়। তাই যে credential-ই দেওয়া হোক, sshd login প্রত্যাখ্যান করে। এটি পূর্বাবস্থায় ফেরাতে sudo usermod --expiredate '' deploy ব্যবহার করুন।
passwd -d ব্যবহার করা এড়িয়ে চলুন। এটি password lock না করে একটি empty password সেট করে। পুরোনো কোনো release-এ PAM stack-এ nullok থাকলে empty password যে কেউ ব্যবহার করতে পারে।
VPS-এ root-এর কি password প্রয়োজন?
Ubuntu-তে root account lock করা থাকে। /etc/shadow-এর মধ্যে hash-এর পরিবর্তে ! থাকে, এবং sudo passwd -S root এমন একটি line দেখায় যা root L দিয়ে শুরু হয়। আপনি root-এর জন্য password সেট না করা পর্যন্ত password দিয়ে কেউ root হিসেবে লগ ইন করতে পারে না। এই কারণেই image আপনাকে sudo ব্যবহারের ক্ষমতাসম্পন্ন user দেয়। root হিসেবে কাজ না করে VPS-এ least privilege user account ব্যবহার করা পদ্ধতিটিই অনুসরণ করা উচিত।
root password সেট করলে একটি নির্দিষ্ট সুবিধা পাওয়া যায়: provider console দিয়ে প্রবেশের একটি উপায়। এই console network stack-এর নিচে virtual machine-এর সঙ্গে সংযুক্ত থাকে। তাই sshd-এর configuration ভুল হলেও বা firewall rule ভুল হলেও এটি কাজ করে। তবে এর একটি অসুবিধাও আছে। root account-এর password থাকলে GRUB recovery menu-এর root shell সেই password চায়। ফলে ভুলে যাওয়া password reset করার যে tool ব্যবহার করতেন, সেটিও একই password-এর আড়ালে চলে যায়।
root password সেট করলেই root SSH দিয়ে লগ ইন করতে পারে না। Ubuntu-তে PermitRootLogin prohibit-password থাকে, যার অর্থ কেবল key ব্যবহার করা যাবে। আপনার server-এ বাস্তবে কী ব্যবহৃত হচ্ছে, তা পরীক্ষা করুন:
sudo sshd -T | grep -i permitrootloginপ্রতিটি Include line resolve করার পর কার্যকর configuration sshd -T দেখায়। তাই /etc/ssh/sshd_config.d/ drop-in file ধারণ করলে এটিই একমাত্র নির্ভরযোগ্য উত্তর।
একটি script থেকে chpasswd দিয়ে password সেট করুন
passwd terminal থেকে input নেয়, তাই এটি script থেকে চালানো যায় না। chpasswd standard input থেকে প্রতি লাইনে একটি করে user:password pair পড়ে।
printf '%s:%s\n' 'deploy' "$NEW_PASSWORD" | sudo chpasswdএটি কাজ করে, তবে plaintext password আপনার shell history এবং CI (continuous integration) log-এ রেখে দেয়। আগে password-টি hash করুন:
HASH=$(openssl passwd -6)
printf '%s:%s\n' 'deploy' "$HASH" | sudo chpasswd -eopenssl passwd -6 কোনো output না দেখিয়ে password দুইবার দিতে বলে। এরপর $6$ দিয়ে শুরু হওয়া একটি SHA-512 crypt hash দেখায়। -e, chpasswd-কে জানায় যে দ্বিতীয় field-টি আগে থেকেই hashed, তাই এটি অপরিবর্তিত অবস্থায় /etc/shadow-এ কপি করা হয়। এই hash repository বা CI variable-এ রাখা নিরাপদ। আপনি যে machine-এ এটি লিখেছেন, plaintext password কখনো সেই machine-এর বাইরে যায় না।
Ubuntu 24.04-এ passwd password সেট করলে নতুন password yescrypt ($y$) দিয়ে hash করে। অন্যদিকে openssl passwd -6 আপনাকে SHA-512 দেয়। Login-এর সময় উভয় format-ই যাচাই করা যায়, কারণ libxcrypt দুটিই পড়তে পারে। এগুলো একসঙ্গে ব্যবহার করা যায়। openssl passwd -6 প্রতিটি Ubuntu LTS release-এ একইভাবে কাজ করে। chpasswd -c YESCRYPT-এর ক্ষেত্রে তা প্রযোজ্য নয়: 20.04-এর পুরোনো shadow package ওই method name চেনে না। Release upgrade করলেও এই hash কার্যকর থাকে। তাই 24.04 server-কে 26.04-এ upgrade করলেও কাউকে password reset করতে হয় না।
কীভাবে পরীক্ষা করবেন যে পাসওয়ার্ড সত্যিই পরিবর্তিত হয়েছে?
প্রথমে metadata পরীক্ষা করুন, তারপর login করে সেটি নিশ্চিত করুন।
sudo passwd -S deploydeploy P 08/01/2026 0 99999 7 -1দ্বিতীয় field-টি হলো state: ব্যবহারযোগ্য পাসওয়ার্ডের জন্য P, locked পাসওয়ার্ডের জন্য L, এবং কোনো পাসওয়ার্ড না থাকার ক্ষেত্রে NP। তারিখটি পাসওয়ার্ড সর্বশেষ পরিবর্তনের সময় নির্দেশ করে, তাই সেখানে আজকের তারিখ থাকা উচিত। এর পরের সংখ্যাগুলো নিচে বর্ণিত aging field।
চলমান session-এ সবচেয়ে নিরাপদ পরীক্ষা হলো sudo। sudo -k cached timestamp বাতিল করে এবং sudo -v নতুন prompt দেখাতে বাধ্য করে। সেখানে নতুন পাসওয়ার্ড গ্রহণ করা হলে PAM সেটি গ্রহণ করেছে, এবং আপনার session-এর কোনো পরিবর্তন হয়নি।
sudo -k && sudo -vঅন্য account পরীক্ষা করতে unprivileged shell থেকে su - deploy চালান। sudo su - deploy চালাবেন না, কারণ root-এর কাছে কখনও পাসওয়ার্ড চাওয়া হয় না এবং এই পরীক্ষা কোনো তথ্য প্রমাণ করে না। ভুল পাসওয়ার্ড দিলে su: Authentication failure প্রদর্শিত হয়।
প্রকৃত পরীক্ষা হলো আপনার laptop থেকে একটি নতুন SSH login করা, যখন বর্তমান working session খোলা থাকবে:
ssh -o PubkeyAuthentication=no deploy@203.0.113.10এখানে Permission denied (publickey).-এর অর্থ হলো server কখনও password authentication প্রস্তাব করেনি, তাই পাসওয়ার্ড পরিবর্তন করলেও login করা যাবে না। Permission denied, please try again.-এর অর্থ হলো server password authentication প্রস্তাব করেছে, কিন্তু আপনি যে পাসওয়ার্ড দিয়েছেন তা প্রত্যাখ্যান করেছে।
পরবর্তী লগইনে chage দিয়ে পাসওয়ার্ড পরিবর্তন বাধ্যতামূলক করুন
sudo chage -d 0 deploy-d 0 সর্বশেষ পরিবর্তনের তারিখ epoch-এ সেট করে। ফলে PAM পাসওয়ার্ডটিকে মেয়াদোত্তীর্ণ হিসেবে বিবেচনা করে। পরবর্তী interactive login-এ shell দেওয়ার আগে বর্তমান পাসওয়ার্ড এবং তারপর নতুন পাসওয়ার্ড চাওয়া হয়। sudo passwd -e deploy একই কাজ করে।
এটি শুধু সেই account-গুলোর জন্য ব্যবহার করুন যেগুলো পাসওয়ার্ড দিয়ে interactive login করে। মেয়াদোত্তীর্ণ পাসওয়ার্ড key-based login-কেও প্রভাবিত করে, কারণ key authentication সম্পন্ন হলেও sshd PAM account stage চালায়। কোনো scripted ssh deploy@203.0.113.10 'systemctl restart app' এরপর নিচের বার্তাসহ ব্যর্থ হয়ে থেমে যায়:
Password change required but no TTY available.এই লাইনের পর আর কোনো কাজ চলে না, এবং job শুধু non-zero exit code দেখায়।
পাসওয়ার্ডের মেয়াদ-সংক্রান্ত ফিল্ডগুলোর অর্থ
sudo chage -l deployLast password change : Aug 01, 2026
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7এই সংখ্যাগুলো /etc/shadow-এ ওই ব্যবহারকারীর লাইনের 4 থেকে 8 নম্বর ফিল্ড। ন্যূনতম দিন (chage -m) হলো আবার পাসওয়ার্ড পরিবর্তন করার আগে ব্যবহারকারীকে যত দিন অপেক্ষা করতে হবে। জোর করে পাসওয়ার্ড পরিবর্তন করানোর পর কেউ যাতে সঙ্গে সঙ্গে আগের পাসওয়ার্ডে ফিরে যেতে না পারে, এটি তা প্রতিরোধ করে। সর্বোচ্চ দিন (chage -M) হলো পাসওয়ার্ড কত দিন বৈধ থাকবে। সতর্কতার দিন (chage -W) হলো যেদিন থেকে login করার সময় সতর্কবার্তা দেখানো শুরু হবে। নিষ্ক্রিয় দিন (chage -I) হলো পাসওয়ার্ডের মেয়াদ শেষ হওয়ার পর সেই অতিরিক্ত সময়, যার শেষে পাসওয়ার্ড আর গ্রহণ করা হবে না। Account expiry (chage -E) একটি নির্দিষ্ট শেষ তারিখ; এটি পাসওয়ার্ডের মেয়াদ থেকে স্বতন্ত্র।
sudo chage -M 90 -W 14 deployকোনো নীতিতে প্রয়োজন থাকলেই এটি সেট করুন। NIST (US National Institute of Standards and Technology) 2017 সাল থেকে নিয়মিত পাসওয়ার্ডের মেয়াদ শেষ করার বিরত থাকার পরামর্শ দিয়ে আসছে। কারণ এতে মানুষ একই পাসওয়ার্ডের অনুমানযোগ্য পরিবর্তন ব্যবহার করতে শুরু করে। এর পরিবর্তে আপসের প্রমাণ পাওয়া গেলে পাসওয়ার্ড পরিবর্তন বাধ্যতামূলক করার পরামর্শ দেওয়া হয়। password manager-এ সংরক্ষিত একটি দীর্ঘ, অনন্য পাসওয়ার্ড এবং key based SSH একটি 90 দিনের চক্রের চেয়ে বেশি কার্যকর।
root password হারালে কী করবেন
সার্ভারের কোনো account যদি sudo চালাতে পারে, তাহলে password পুনরুদ্ধারের কিছু নেই: sudo passwd root একটি নতুন password সেট করে। আসল কঠিন পরিস্থিতি হলো কোনো কার্যকর login একেবারেই না থাকা।
নিচের সব কাজের জন্য provider console প্রয়োজন। অধিকাংশ panel-এ এটি VNC (virtual network computing) বা serial console নামে দেখানো হয়। এটি network stack-এর নিচে virtual machine-এর সঙ্গে সংযুক্ত হয়। তাই sshd-এর settings এবং firewall rules এতে প্রভাব ফেলে না।
- panel থেকে server reboot করুন এবং console পর্যবেক্ষণ করুন।
- GRUB menu আনুন। Cloud image-গুলো সাধারণত
GRUB_TIMEOUT=0সেট করে। তাই BIOS boot হলেShiftধরে রাখুন, অথবা UEFI boot হলে reboot শুরু হওয়ার সঙ্গে সঙ্গেEscবারবার চাপুন। Advanced options for Ubuntuনির্বাচন করুন। এরপর(recovery mode)দিয়ে শেষ হওয়া entry নির্বাচন করুন। তারপর recovery menu-তেrootনির্বাচন করুন।- প্রথমে
mount -o remount,rw /চালান। Recovery root filesystem read-only হিসেবে mount করে। তাই এটি না করলেpasswdব্যর্থ হবে, কারণ এটি/etc/shadow-এ লিখতে পারে না এবংpasswd: Authentication token manipulation errorদেখাবে। - যে account-এর জন্য প্রয়োজন, তার ক্ষেত্রে
passwd ubuntuচালান। এরপর panel থেকে reboot করুন।
root account-এ আগে থেকেই password সেট করা থাকলে এবং আপনি সেই password-টিই হারিয়ে ফেললে recovery shell সেটি চাইবে। তখন এই পদ্ধতিতে এগোনো যাবে না। পরিবর্তে provider-এর rescue image থেকে boot করুন। এরপর প্রকৃত disk mount করে তার ভেতর password পরিবর্তন করুন।
lsblk
sudo mount /dev/vda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt passwd ubuntu
sudo umount -R /mntএই page থেকে /dev/vda1 নকল না করে lsblk ব্যবহার করে partition layout দেখুন। root partition-টি বড় partition। UEFI image-এ এর পাশে একটি ছোট EFI partition থাকে। সেখানে কোনো /etc directory থাকে না।
SSH আপনার password গ্রহণ করা বন্ধ করলে করণীয়
আপনার যে session এখনও খোলা আছে, সেটি ব্যবহার করুন। কোনো session খোলা না থাকলে console ব্যবহার করুন।
Permission denied, please try again.-এর অর্থ হলো server password authentication সমর্থন করার কথা জানিয়েছে, কিন্তু আপনি যে password পাঠিয়েছেন তা প্রত্যাখ্যান করেছে। সাধারণ কারণ হলো caps lock চালু থাকা, অথবা console-এর keyboard layout password সেট করার সময় ব্যবহৃত layout থেকে আলাদা হওয়া।
Permission denied (publickey).-এর অর্থ হলো server কখনোই password authentication সমর্থন করেনি। কোথাও PasswordAuthentication no সেট করা আছে। Ubuntu 22.04 এবং পরবর্তী সংস্করণে এটি সাধারণত /etc/ssh/sshd_config.d/-এর অধীনে থাকা একটি drop-in file-এ থাকে, যা মূল file-এর সেটিং override করে। কার্যকর মানগুলো দেখুন:
sudo sshd -T | grep -Ei 'passwordauthentication|kbdinteractiveauthentication|permitrootlogin'KbdInteractiveAuthentication yes এবং PasswordAuthentication no একসঙ্গে সক্রিয় থাকলেও password দিয়ে login করা যায়, কারণ keyboard-interactive method একই PAM stack চালায়। একটিকে বন্ধ রেখে অন্যটি চালু থাকলেই এমন server তৈরি হয়, যা দেখতে key-only হলেও typed password গ্রহণ করতে থাকে।
একই line rejected key login-এর ক্ষেত্রেও দেখা যায়। তাই আপনি যদি password-এর বদলে key দিয়ে login করার চেষ্টা করে থাকেন, server-এর password setting হলো Permission denied (publickey)-এর পেছনের পাঁচটি সমস্যার মাত্র একটি। ssh -v output-এ আপনি কোন সমস্যাটির সম্মুখীন হয়েছেন তা জানা যায়।
Disconnect message-এ Too many authentication failures থাকার অর্থ হলো password দেওয়ার আগে আপনার client একাধিক key পাঠিয়েছে এবং server MaxAuthTries সীমায় পৌঁছেছে; এর default মান 6। একটি মাত্র method জোর করে ব্যবহার করুন:
ssh -o IdentitiesOnly=yes -o PubkeyAuthentication=no deploy@203.0.113.10এক মিনিট আগে কাজ করা port-এ Connection refused সাধারণত বোঝায় যে repeated failure-এর পরে fail2ban SSH পর্যবেক্ষণ করে আপনার address block করেছে। এর default ban rule packet drop না করে তা reject করে। তাই connection timeout না হয়ে দ্রুত refusal ফিরে আসে। Console থেকে sudo fail2ban-client status sshd blocked address-গুলোর তালিকা দেখায় এবং sudo fail2ban-client set sshd unbanip 203.0.113.10 আপনার address-এর block সরিয়ে দেয়।
Password একটি অস্থায়ী ধাপ, key-ই চূড়ান্ত ব্যবস্থা
SSH-এর মাধ্যমে কাজ করে এমন একটি password হলো এমন একটি password, যা Internet-এর প্রতিটি scanner অনুমান করার চেষ্টা করতে পারে। Key based authentication ব্যবহার করুন; তাহলে এই অনুমান-নির্ভর আক্রমণ আর কার্যকর থাকে না। একটি key pair তৈরি করুন, public অংশটি ইনস্টল করুন, এবং অন্য কিছু পরিবর্তনের আগে দ্বিতীয় terminal থেকে ওই key দিয়ে login করা যাচ্ছে কি না নিশ্চিত করুন। SSH key management-এর মৌলিক বিষয়-এ generation, authorized_keys এবং passphrase সম্পর্কে আলোচনা করা হয়েছে।
এরপর password authentication বন্ধ করুন এবং যে file সম্পাদনা করেছেন, সেটির ওপর নির্ভর না করে sudo sshd -T দিয়ে পরিবর্তনটি নিশ্চিত করুন। VPS-এ SSH hardening-এ পরিবর্তনযোগ্য sshd settings-এর বাকি অংশ দেখানো হয়েছে। নতুন VPS-এ প্রথম দশ মিনিট fresh server-এ এগুলো কোন ক্রমে করতে হবে তা দেখায়।
এর পরে একটি password রেখে দিন। Key-only server-এর sshd config নষ্ট হলে সেটিতে শুধু provider console দিয়ে পৌঁছানো যায়, আর ওই console username ও password চায়। সংরক্ষণ করে রাখা একটি শক্তিশালী password-সহ account-ই পাঁচ মিনিটে সমাধান করা এবং server পুনরায় install করার মধ্যে পার্থক্য তৈরি করে।
FAQ
VPS-এ পুরোনো password জানা না থাকলে root password কীভাবে পরিবর্তন করব?
sudo চালাতে পারে এমন user হিসেবে লগ ইন করে sudo passwd root চালান। এটি পুরোনো password না চেয়ে নতুন password সেট করে, কারণ sudo ইতিমধ্যে আপনাকে authenticate করেছে। সার্ভারে কোনো account sudo চালাতে না পারলে provider console খুলুন, GRUB recovery menu-তে reboot করুন, root shell entry বেছে নিন, mount -o remount,rw / চালান, তারপর passwd চালান। root-এর password আগে থেকেই সেট করা থাকলে এবং আপনি সেটিই হারিয়ে ফেললে recovery shell সেই password চাইবে। সে ক্ষেত্রে বাকি উপায় হলো provider-এর rescue image ব্যবহার করে disk mount করা এবং chroot করা।
passwd কেন "Authentication token manipulation error" দেখায়?
এই message-এর দুটি কারণ আছে। সাধারণ কারণ হলো Current password: prompt-এ ভুল উত্তর দেওয়া। এর নিচের passwd: password unchanged line নিশ্চিত করে যে কিছু লেখা হয়নি। অন্য কারণ হলো এমন filesystem, যেখানে লেখা যায় না। Recovery mode-এ এটাই ঘটে, কারণ সেখানে / read-only হিসেবে mount করা থাকে। mount -o remount,rw / চালিয়ে আবার চেষ্টা করুন।
Linux password পরিবর্তন করলে কি sudo password-ও পরিবর্তন হয়?
হ্যাঁ। sudo-এর নিজস্ব কোনো password নেই। এটি PAM-এর মাধ্যমে একই /etc/shadow entry ব্যবহার করে আপনাকে authenticate করে, যেটি SSH এবং su-ও ব্যবহার করে। তাই প্রতিটি account-এর জন্য একটি password থাকে। এ কারণেই password পরিবর্তনের পর প্রথম sudo prompt-ই প্রকৃত পরীক্ষা। কার্যকর session থাকা অবস্থায় ওই prompt জোর করে দেখাতে sudo -k && sudo -v চালান।
Password পরিবর্তন করলে কি আমার SSH key বা খোলা session নষ্ট হবে?
না। Public key authentication কখনো /etc/shadow পড়ে না। তাই password পরিবর্তনের পর, passwd -l-এর পর এবং chage -d 0-এর পরও key কাজ করতে থাকবে। ইতিমধ্যে খোলা session চালু থাকবে, কারণ SSH শুধু login-এর সময় credential পরীক্ষা করে। Live session-এর ভেতরে যে একমাত্র বিষয়টি পরিবর্তিত হয়, তা হলো sudo। এর 15 minute timestamp শেষ হলে এটি নতুন password একবার চাইবে।
পরবর্তী login-এ কোনো user-কে password পরিবর্তন করতে বাধ্য করব কীভাবে?
sudo chage -d 0 deploy চালান, অথবা sudo passwd -e deploy চালান; দুটিই একই কাজ করে। সংরক্ষিত last-change date epoch-এ চলে যায়। PAM password-টিকে expired হিসেবে গণ্য করে। এরপর shell শুরু হওয়ার আগে পরবর্তী interactive login-এ নতুন password সেট করতে হয়। SSH-এর মাধ্যমে script চালায় এমন account-এর ক্ষেত্রে এটি করবেন না। কারণ তখন non-interactive command Password change required but no TTY available.-সহ ব্যর্থ হয় এবং কখনো চালু হয় না।