- রুট ব্যবহারকারী হলেন লিনাক্সের সুপারইউজার, যার সিস্টেমের উপর সম্পূর্ণ নিয়ন্ত্রণ থাকে এবং কোনো অনুমতি সংক্রান্ত সীমাবদ্ধতা নেই।
- আধুনিক ডিস্ট্রিবিউশনগুলো সরাসরি রুট হিসেবে লগ ইন করার পরিবর্তে অস্থায়ী বিশেষাধিকার অর্জনের জন্য sudo এবং su ব্যবহারের ওপর বেশি জোর দেয়।
- রুট অ্যাক্সেসের অসতর্ক ব্যবহারের ফলে ডেটা নষ্ট হতে পারে, বুট ব্যর্থ হতে পারে এবং গুরুতর নিরাপত্তা সমস্যা দেখা দিতে পারে।
- নিরাপদ প্রশাসনের জন্য রুট অ্যাক্সেস সক্ষম করা, ব্লক করা ও নিরীক্ষা করা এবং এর সাথে সঠিক sudo অনুশীলন অপরিহার্য।
আপনি যদি লিনাক্সে নতুন হন, তাহলে সম্ভবত কমবেশি কুখ্যাত রুট ইউজারের সাথে আপনার পরিচয় হয়েছে — সেই সুপারইউজার যে সিস্টেমে কার্যত সবকিছুই করতে পারে । এটি সেই রহস্যময় অ্যাকাউন্ট যা টিউটোরিয়ালে দেখা যায়, যা দিয়ে আপনি প্যাকেজ ইনস্টল করতে, সূক্ষ্ম সেটিংস পরিবর্তন করতে, বা বুট না হওয়া সিস্টেম ঠিক করতে পারেন… কিন্তু এটি একটি মাত্র ভুল টাইপ করা কমান্ডের মাধ্যমে আপনার মেশিনকে ধ্বংসও করে দিতে পারে।
বেশিরভাগ আধুনিক ডিস্ট্রিবিউশনে, বিশেষ করে উবুন্টু এবং এর ডেরিভেটিভগুলোতে, সরাসরি রুট হিসেবে লগ ইন করা এখন আর প্রচলিত নয়। এর পরিবর্তে, শুধুমাত্র প্রয়োজনের সময় অ্যাডমিনিস্ট্রেটর প্রিভিলেজ পাওয়ার জন্য `sudo` এবং `su`-এর মতো কমান্ড ব্যবহার করা হয় , যা ঝুঁকি কমায় এবং সিস্টেম রেজিস্ট্রিতে কোনো চিহ্ন রাখে না। তা সত্ত্বেও, আপনি যদি লিনাক্সে সহজে নেভিগেট করতে চান, তবে রুট কী, এটি `sudo` এবং `su` থেকে কীভাবে আলাদা, কখন এগুলো ব্যবহার করতে হয়, কীভাবে অ্যাকাউন্টটি নিষ্ক্রিয় করতে হয় এবং কীভাবে পাসওয়ার্ড পুনরুদ্ধার করতে হয়, সে সম্পর্কে একটি ভালো ধারণা থাকা অপরিহার্য।
লিনাক্সে রুট ইউজার কী এবং এটি কেন এত বিশেষ?
যেকোনো ইউনিক্স-সদৃশ সিস্টেমে (লিনাক্স, বিএসডি, ম্যাকওএস, ইত্যাদি) একজনমাত্র সুপারইউজার থাকেন যার একটি অত্যন্ত সুস্পষ্ট ভূমিকা রয়েছে: রুট হলো UID 0 যুক্ত অ্যাকাউন্ট এবং সমস্ত ফাইল, প্রসেস ও সিস্টেম রিসোর্সের উপর এর নিরঙ্কুশ কর্তৃত্ব থাকে । এখানে কোনো প্রচলিত অনুমতির সীমাবদ্ধতা নেই; রুট যদি কিছু পড়তে, পরিবর্তন করতে বা মুছে ফেলতে চায়, তবে সে তা করতে পারে।
এই অ্যাকাউন্ট থেকে আপনি প্রোগ্রাম ইনস্টল ও আনইনস্টল করতে, সিস্টেম আপডেট করতে, /etc-তে থাকা কনফিগারেশন ফাইল সম্পাদনা করতে, সার্ভিস পরিচালনা করতে, ইউজার তৈরি ও মুছে ফেলতে, ডিস্ক ফরম্যাট করতে, অথবা গুরুত্বপূর্ণ পারমিশন পরিবর্তন করতে পারবেন । এটি উইন্ডোজের 'অ্যাডমিনিস্ট্রেটর' ইউজারের সমতুল্য, তবে কোনো সীমাবদ্ধতা ছাড়াই সিস্টেমের অভ্যন্তরীণ কার্যকলাপে প্রবেশ করার আরও বেশি ক্ষমতা এর রয়েছে।
এই কারণে, উবুন্টুর মতো অনেক ডিস্ট্রিবিউশন ইনস্টলেশনের পর সরাসরি রুট লগইনের অনুমতি দেয় না । এর পরিবর্তে, অ্যাডমিনিস্ট্রেটরস গ্রুপের একটি সাধারণ অ্যাকাউন্ট তৈরি করা হয় এবং নির্দিষ্ট প্রশাসনিক কাজ সম্পাদনের জন্য sudo ব্যবহার করা হয়, যা দুর্বলতার ঝুঁকি কমিয়ে দেয়।
অন্যান্য ডিস্ট্রিবিউশনে, যেমন ডেবিয়ানের ক্লাসিক কনফিগারেশনে, ইনস্টলেশনের সময় রুটের জন্য একটি পাসওয়ার্ড নির্ধারণ করা প্রচলিত, যাতে সুপারইউজারকে সরাসরি কনসোলে বা কিছু খুব নির্দিষ্ট কাজের জন্য ব্যবহার করা যায় , যদিও সিস্টেম নিজেও sudo-এর ব্যবহারকে উৎসাহিত করে।
রুট এবং সাধারণ ব্যবহারকারীদের পাশাপাশি, লিনাক্স খুব সীমিত অনুমতিসহ সার্ভিস টাইপের (ডেমন) সিস্টেম ব্যবহারকারীও ব্যবহার করে । এই বিশেষ ব্যবহারকারীরা ওয়েব সার্ভার, ডেটাবেস বা সিস্টেম ডেমন-এর মতো প্রসেসগুলো চালায়, যাতে কোনো সার্ভিসের নিরাপত্তা ত্রুটি ঘটলে তা স্বয়ংক্রিয়ভাবে সিস্টেমকে নিরঙ্কুশ নিয়ন্ত্রণ দিয়ে না দেয়, যেমনটা সবকিছু রুটের অধীনে চললে ঘটত।
লিনাক্সে ব্যবহারকারীদের প্রকারভেদ এবং আপনি কে তা কীভাবে জানবেন
যদিও বাস্তবিক অর্থে মনে হতে পারে যে অনেক ধরণের অ্যাকাউন্ট রয়েছে, অনুমতির স্তরে বিভাজনটি খুব স্পষ্ট: একদিকে রুট এবং অন্যদিকে "অন্য সবাই" । যে ব্যবহারকারীর UID 0 নেই, তিনি প্রযুক্তিগতভাবে একজন অ-সুবিধাপ্রাপ্ত ব্যবহারকারী, যদিও sudo-এর কল্যাণে তাদের কিছু অতিরিক্ত অনুমতি থাকতে পারে।
স্ট্যান্ডার্ড ওয়ার্ক অ্যাকাউন্ট হলো সাধারণ ব্যবহারকারী, যাদের ফাইল সিস্টেমে সীমিত অনুমতি থাকে । তারা তাদের ব্যক্তিগত ফাইল পরিচালনা করতে, অ্যাপ্লিকেশন চালাতে, নেটওয়ার্ক ব্যবহার করতে পারে এবং উপযুক্ত গ্রুপে থাকলে, নির্দিষ্ট কাজের জন্য অতিরিক্ত সুবিধা পেতে sudo ব্যবহার করতে পারে।
রুট সুপারইউজার হলো গ্লোবাল অ্যাডমিনিস্ট্রেশন অ্যাকাউন্ট । এটি দৈনন্দিন ব্যবহারের জন্য নয়, বরং রক্ষণাবেক্ষণ, উন্নত কনফিগারেশন বা রিকভারি অপারেশনের জন্য ব্যবহৃত হয়। তাই, নতুন ব্যবহারকারীদের জন্য অপ্রত্যাশিত পরিস্থিতি এড়াতে এবং মানবিক ভুলের প্রভাব সীমিত করতে, অনেক ডিস্ট্রিবিউশন এই অ্যাকাউন্টে সরাসরি অ্যাক্সেসকে কিছুটা জটিল করে তোলে।
টার্মিনালে আপনি কোন ইউজার ব্যবহার করছেন সে বিষয়ে যদি কখনো অনিশ্চিত থাকেন, তাহলে আপনি শেল প্রম্পট চেক করতে পারেন: যখন এটি $ দিয়ে শেষ হয়, তখন আপনি একটি সাধারণ অ্যাকাউন্ট ব্যবহার করছেন, এবং যখন এটি # দিয়ে শেষ হয়, তখন আপনি রুট (root) ব্যবহার করছেন । এছাড়াও আপনি `whoami` কমান্ডটি চালাতে পারেন অথবা `id -u` দিয়ে নিউমেরিক আইডেন্টিফায়ারটি চেক করতে পারেন ; যদি আপনি "root" বা "0" পান, তাহলে আপনিই সুপারইউজার।
এছাড়াও, প্রম্পটটি সাধারণত দেখায় ব্যবহারকারীর নাম, কম্পিউটারের নাম, বর্তমান ডিরেক্টরি, এবং $ বা # চিহ্ন।উদাহরণস্বরূপ, এইরকম কিছু alumno@equipo:/home/alumno$ একজন সাধারণ ব্যবহারকারীকে নির্দেশ করে, যখন root@equipo:/root# এটি একটি সরাসরি প্রশাসনিক অধিবেশনকে প্রতিফলিত করে।
root, sudo ও su: এগুলোর প্রত্যেকটির কাজ এবং কখন ব্যবহার করতে হয়
দৈনন্দিন ব্যবহারে আমরা সাধারণত সব সময় রুট পাসওয়ার্ড টাইপ করি না। এর পরিবর্তে, বেশিরভাগ আধুনিক ডিস্ট্রিবিউশন `sudo` এবং `su`-এর মতো টুল ব্যবহার করে একটি সাধারণ অ্যাকাউন্ট থেকে সাময়িকভাবে বিশেষাধিকার বৃদ্ধি করার পদ্ধতি বেছে নেয় । যদিও কথোপকথনে এগুলি কখনও কখনও একই অর্থে ব্যবহৃত হয়, তবে এগুলির উদ্দেশ্য ভিন্ন, এবং এদের মধ্যে পার্থক্য করা গুরুত্বপূর্ণ।
`sudo` (সুপার ইউজার ডু) কমান্ড একজন অনুমোদিত ব্যবহারকারীকে অন্য একজন ব্যবহারকারীর, সাধারণত `root`-এর, বিশেষাধিকার সহ একটি নির্দিষ্ট কমান্ড কার্যকর করার সুযোগ দেয় । এটি করার সময়, কী কার্যকর করা হয়েছে, কে করেছে এবং কখন করেছে, তা সিস্টেমের নিরাপত্তা লগে রেকর্ড করে রাখে।
`substitute user` কমান্ডটি একই টার্মিনাল সেশনের মধ্যে ব্যবহারকারীর পরিচয় পরিবর্তন করার জন্য তৈরি করা হয়েছে । যদি আপনি কোনো প্যারামিটার ছাড়া এটি ব্যবহার করেন, তবে এটি সাধারণত রুট (root) অ্যাকাউন্টে যাওয়ার চেষ্টা করবে এবং পাসওয়ার্ড চাইবে। কিন্তু, যদি আপনি একটি ইউজারনেম দেন, তাহলে আপনি সেই অ্যাকাউন্টে চলে যাবেন এবং তার অনুমতি ও পরিবেশসহ অ্যাকাউন্টটি ব্যবহৃত হবে।
sudo কীভাবে কাজ করে এবং কেন এটি এত গুরুত্বপূর্ণ
উবুন্টুর মতো সিস্টেমে, sudo গ্রুপের (বা পুরোনো সংস্করণগুলিতে "admin") সদস্য হওয়ার অর্থ হলো, এই অ্যাকাউন্টটি সুপারইউজার পাসওয়ার্ড না জেনেই, নিজের ইউজার পাসওয়ার্ড দিয়ে রুট হিসেবে কমান্ড চালাতে পারে । প্রতিটি ব্যবহারকারী কী করতে পারবে তা নিয়ন্ত্রণকারী নিয়মগুলি /etc/sudoers ফাইলে সংজ্ঞায়িত করা থাকে , যা visudo কমান্ডের মাধ্যমে নিরাপদে সম্পাদনা করা হয় ।
এটি ব্যবহার করতে, যে কমান্ডের জন্য উচ্চতর বিশেষাধিকার প্রয়োজন, তার আগে কেবল `sudo` শব্দটি যুক্ত করুন । উদাহরণস্বরূপ, প্যাকেজ ইনস্টলেশন সাধারণত এইভাবে করা হয়:
sudo apt install vlc
এক্ষেত্রে, আপনি আপনার সাধারণ ব্যবহারকারী হিসেবে লগ ইন থাকা সত্ত্বেও, apt রুট হিসেবে চলে, /usr বা /var-এর মতো সিস্টেম ডিরেক্টরিতে লেখে এবং প্যাকেজ ডেটাবেসে পরিবর্তনগুলো লগ করে। কমান্ডটি শেষ হয়ে গেলে, আপনি স্বয়ংক্রিয়ভাবে আপনার স্বাভাবিক অনুমতিতে ফিরে আসেন ।
এছাড়াও, sudo একটি সংক্ষিপ্ত "গ্রেস পিরিয়ড" প্রয়োগ করে : আপনার পাসওয়ার্ড দেওয়ার পর, আপনাকে পাসওয়ার্ডের জন্য অনুরোধ না করেই আপনি কয়েক মিনিটের জন্য আবার sudo চালাতে পারেন। এটি অ্যাডমিনিস্ট্রেশনের গতি বাড়ায়, কিন্তু সেই সময়ে কেউ আপনার মেশিনে অ্যাক্সেস করলে একটি ছোট দুর্বলতাও তৈরি করে। আপনি যদি এই নীতিটি আরও কঠোর করতে চান, তাহলে sudoers ফাইলটি এডিট করে গ্রেস পিরিয়ড শূন্যে সেট করতে পারেন:
Defaults:ALL timestamp_timeout=0
এইভাবে, প্রতিবার sudo ব্যবহার করার সময় আপনাকে আবার প্রমাণীকরণ করতে হবে , যা আরও কষ্টসাধ্য হলেও সংবেদনশীল বা একাধিক ব্যবহারকারীযুক্ত পরিবেশে বেশি নিরাপদ।
`su` কমান্ড এবং অন্য অ্যাকাউন্টে সম্পূর্ণভাবে সুইচ করা
অন্যদিকে, `su` কমান্ড কোনো একক কমান্ড কার্যকর করে না, বরং অন্য একজন ব্যবহারকারীর পরিচয়ে একটি নতুন শেল খোলে । যদি সরাসরি ব্যবহার করা হয়:
su
সিস্টেমটি ধরে নেয় যে আপনি রুটে প্রবেশ করতে চান এবং সেই কারণে সুপারইউজার পাসওয়ার্ড চাইবে । লগইন সফল হলে, আপনি দেখবেন প্রম্পটটি #-এ পরিবর্তিত হয়েছে, এবং সেই মুহূর্ত থেকে, আপনি `exit` দিয়ে লগ আউট না করা পর্যন্ত আপনার চালানো যেকোনো কমান্ড রুটের বিশেষাধিকার নিয়ে সম্পাদিত হবে ।
আপনি একজন নির্দিষ্ট ব্যবহারকারীকেও উল্লেখ করতে পারেন:
su nombreusuario
এটি তখন খুব কার্যকর যখন আপনি এমন পরিষেবাগুলি পরিচালনা করেন যেগুলি নিজস্ব অ্যাকাউন্টে চলে (উদাহরণস্বরূপ, PostgreSQL, www-data, ইত্যাদি) এবং আপনার মূল সেশন থেকে লগ আউট না করেই সেগুলি চালাতে হয় । আবার, কাজ শেষ হলে, `exit` ব্যবহার করলে আপনাকে পূর্ববর্তী ব্যবহারকারীর কাছে ফিরিয়ে দেওয়া হয়।
যেসব সিস্টেমে রুট অ্যাক্সেস লক করা থাকে বা পাসওয়ার্ড থাকে না (যেমন অনেক উবুন্টু ইনস্টলেশন), সেখানে আপনি সরাসরি `su` ব্যবহার করে সেই অ্যাকাউন্টে সুইচ করতে পারবেন না। সেইসব ক্ষেত্রে, প্রচলিত পদ্ধতি হলো `sudo` এবং `su` একসাথে ব্যবহার করা , উদাহরণস্বরূপ:
sudo su o sudo -i
এই কমান্ডগুলোর সাহায্যে, আপনি আপনার ইউজার পাসওয়ার্ড (রুট পাসওয়ার্ড নয়) প্রবেশ করিয়ে একটি অ্যাডমিনিস্ট্রেটিভ শেল পাবেন, যার পরিবেশ সরাসরি রুট লগইনের মতোই। পরপর একাধিক কাজ করার জন্য এটি খুবই সুবিধাজনক, কিন্তু এটি আরও বিপজ্জনকও বটে, তাই কাজ শেষ হওয়ার সাথে সাথেই রুট সেশন থেকে লগ আউট করে নেওয়া বাঞ্ছনীয়।
কখন root, sudo বা su ব্যবহার করা যুক্তিযুক্ত?
তত্ত্বটি ঠিক আছে, কিন্তু দৈনন্দিন কাজে, সিস্টেম ব্যর্থতার ঝুঁকি না নিয়ে দ্রুত কাজ করার জন্য প্রতিটি নির্দিষ্ট পরিস্থিতিতে কোন টুলটি ব্যবহার করতে হবে , সেটাই গুরুত্বপূর্ণ। সাধারণ নিয়ম হিসেবে, যখনই সম্ভব, নির্দিষ্ট কমান্ডের জন্য sudo ব্যবহার করুন এবং স্থায়ী রুট শেল এড়িয়ে চলুন; কখন এবং কেন sudo এড়িয়ে চলতে হবে , সে সম্পর্কে আরও গভীরভাবে জানতে চাইলে সেই গাইডটি দেখুন।
উদাহরণস্বরূপ, ডেবিয়ান বা উবুন্টু-ভিত্তিক ডিস্ট্রিবিউশনগুলিতে সফ্টওয়্যার ইনস্টল বা আপডেট করার সাধারণ পদ্ধতিটি হলো:
sudo apt updatesudo apt upgradesudo apt install gparted
এইসব পরিস্থিতিতে, স্থায়ীভাবে রুট হিসেবে লগ ইন করার তেমন কোনো সুবিধা নেই। এতে কিছুটা সুবিধা পাওয়া যায়, কিন্তু এর ফলে এমন কিছু মুছে ফেলা বা পরিবর্তন করার ঝুঁকি বহুগুণ বেড়ে যায় যা আপনার করা উচিত নয় ।
সিস্টেম কনফিগারেশন ফাইল সম্পাদনা করার সময়ও আপনি sudo ব্যবহার করবেন , উদাহরণস্বরূপ:
sudo nano /etc/hostssudo nano /etc/ssh/sshd_config
এইভাবে, শুধুমাত্র এডিটরটি সুপারইউজার পারমিশন নিয়ে চলে এবং আপনি যখন এটি বন্ধ করেন, তখন আপনার স্বাভাবিক প্রিভিলেজ লেভেলে ফিরে আসেন।
অন্যদিকে, যখন আপনি পরপর অনেকগুলো প্রশাসনিক কাজ করতে চান এবং প্রতিটির আগে `sudo` যোগ করাটা ঝামেলার হয়, তখন `su` (বা `sudo -i`) বেশ কার্যকর হতে পারে। উদাহরণস্বরূপ, জটিল রক্ষণাবেক্ষণের কাজ, একাধিক অ্যাকাউন্ট পরিচালনা, পার্টিশন নিয়ে কাজ করা ইত্যাদির ক্ষেত্রে এটি কাজে আসে। তা সত্ত্বেও, এই মোডে কাটানো সময়ের পরিমাণ সীমিত রাখা এবং কাজ শেষ হলেই বেরিয়ে আসা একটি ভালো অভ্যাস।
একটি অত্যন্ত কার্যকরী বিষয় হলো, আপনি রুট ব্যবহারকারী কিনা সে ব্যাপারে নিশ্চিত না হলে, whoami বা id -u কমান্ডটি চালাতে পারেন : যদি ফলাফল “root” বা “0” আসে, তবে কোনো ক্ষতিকর কিছু টাইপ করার আগে অত্যন্ত সতর্ক হতে হবে।
sudo দিয়ে পাসওয়ার্ড টাইপ করার সময় তারকাচিহ্ন (*) দেখান।
ডিফল্টভাবে, অনেক ডিস্ট্রিবিউশন (উবুন্টু সহ) কনসোলে পাসওয়ার্ড টাইপ করার সময় কোনো অক্ষর প্রদর্শন করে না । কোনো ডট বা অ্যাস্টারিস্কও থাকে না। পাসওয়ার্ডের দৈর্ঘ্য প্রকাশ হওয়া এড়ানোর জন্যই এমনটা করা হয়, যদিও বাস্তবে অনেক ব্যবহারকারী এটিকে অসুবিধাজনক মনে করেন, কারণ তারা যে টাইপ করছেন তার কোনো চাক্ষুষ নিশ্চিতকরণ পান না।
কিছুদিন ধরে sudo-তে pwfeedback নামে একটি অপশন রয়েছে , যা পাসওয়ার্ড দেওয়ার সময় স্ক্রিনে অ্যাস্টারিস্ক (*) দেখায়। উবুন্টুর সাম্প্রতিক কিছু সংস্করণে এটি চালু করা হয়েছে, তবে আপনি যেকোনো সিস্টেমে আপনার sudo কনফিগারেশন পরিবর্তন করে নিজেই এটি সক্রিয় করতে পারেন:
১. নিম্নলিখিত কমান্ডের মাধ্যমে সুরক্ষিত কনফিগারেশন এডিটরটি খুলুন:
sudo visudo
২. যে ফাইলটি খুলবে (সাধারণত /etc/sudoers), তার ভিতরে এইরকম একটি লাইন যোগ করুন:
Defaults pwfeedback
৩. সেভ করে বন্ধ করুন। এখন থেকে, আপনার sudo পাসওয়ার্ড টাইপ করার সময় প্রতিটি অক্ষর একটি অ্যাস্টারিস্ক (*) দ্বারা চিহ্নিত হবে । আপনি যদি পরে ক্লাসিক আচরণে (ভিজ্যুয়াল ইকো ছাড়া) ফিরে যেতে চান, তবে কেবল ওই লাইনটি মুছে দিন এবং visudo দিয়ে ফাইলটি আবার সেভ করুন।
এই কাস্টমাইজেশনটি sudo-এর ক্রিপ্টোগ্রাফিক নিরাপত্তাকে প্রভাবিত করে না, কিন্তু যারা তাদের টাইপ করা বিষয়ের চাক্ষুষ নিশ্চিতকরণ পছন্দ করেন, তাদের জন্য এটি ব্যবহারযোগ্যতা উন্নত করতে পারে , বিশেষ করে ব্যাকলাইটিংবিহীন কীবোর্ডে বা রিমোট টার্মিনাল থেকে টাইপ করার সময়।
অসতর্কভাবে রুট ব্যবহারের আসল ঝুঁকি
রুট অ্যাকাউন্ট যতটা শক্তিশালী, ততটাই বিপজ্জনক। লিনাক্সকে এমনভাবে একাধিক সুরক্ষা স্তর দিয়ে ডিজাইন করা হয়েছে যাতে একজন সাধারণ ব্যবহারকারীর পক্ষে ভুলবশত সিস্টেমের ক্ষতি করা কঠিন হয়, কিন্তু যখন আপনি বিশেষাধিকার বৃদ্ধি করেন, তখন সেই বাধাগুলো অদৃশ্য হয়ে যায় এবং যেকোনো অসাবধানতা একটি বিপর্যয়ে পরিণত হতে পারে ।
প্রথম গুরুতর ঝুঁকিটি হলো অপরিহার্য ফাইল বা ডিরেক্টরি ভুলবশত মুছে ফেলা. কমান্ড যেমন rm -rf / o rm -rf /* এগুলো ঠিক এই কারণেই বিখ্যাত যে, রুট হিসেবে চালালে এগুলো কয়েক সেকেন্ডের মধ্যে ফাইল সিস্টেমের প্রায় সমস্ত কন্টেন্ট মুছে ফেলতে পারে। কিন্তু এতটা চরম পর্যায়ে যাওয়ার কোনো প্রয়োজন নেই: যেমন, কেবল পাথটি ভুল টাইপ করুন অথবা কোনো ভ্যারিয়েবল খালি রাখুন:
rm -rf $directorio/*
ডিরেক্টরিটি প্রত্যাশিতভাবে সংজ্ঞায়িত না থাকলে, কমান্ডটি উদ্দিষ্ট স্থানের পরিবর্তে সম্পূর্ণ ভিন্ন একটি স্থানে নির্দেশ করতে পারে। রুট হিসেবে, সিস্টেম আপনাকে তেমন কোনো সমস্যা দেবে না, এবং একবার কমান্ডটি কার্যকর হয়ে গেলে, ব্যাকআপ বা ফরেনসিক টুল ছাড়া পুনরুদ্ধার করা সাধারণত খুব কঠিন বা একেবারেই অসম্ভব ।
আরেকটি বড় বিপদ হলো পূর্ণ ক্ষমতাসহ ক্ষতিকারক সফটওয়্যার বা স্ক্রিপ্ট চালানো । কোনো অজানা ওয়েবসাইট থেকে ইনস্টলার ডাউনলোড করে sudo দিয়ে বা রুট শেল থেকে তা চালালে সেই কোডটি নিরঙ্কুশ নিয়ন্ত্রণ পেয়ে যায়: এটি রুটকিট, ব্যাকডোর, কী-লগার ইনস্টল করতে পারে, কার্নেল পরিবর্তন করতে পারে, অথবা সিস্টেমের গভীরে লুকিয়ে থাকতে পারে। প্রায়শই, সমস্যাটি ধরা পড়ার আগেই আক্রমণকারী বেশ কিছুক্ষণ ধরে সিস্টেমে প্রবেশ করে ফেলে।
তোমাকেও সতর্ক থাকতে হবে যখন chmod বা chown ব্যবহার করে গুরুত্বপূর্ণ ফাইলের অনুমতি পরিবর্তন করুন।একটি আদেশ যেমন chmod 000 /etc /boot, GRUB বুটলোডার, বা /etc/passwd-এর অনুপযুক্ত ব্যবহারের ফলে সিস্টেম বুট হতে অক্ষম হয়ে যেতে পারে। এই ধরনের ক্ষেত্রে, এমনকি LiveCD থেকে বুট করলেও সরাসরি মেরামতের কোনো নিশ্চয়তা পাওয়া যায় না; প্রোডাকশন পরিবেশে পেশাদার রিকভারি সার্ভিসের প্রয়োজন হতে পারে।
অবশেষে, নিরীক্ষার দৃষ্টিকোণ থেকে, সরাসরি রুট হিসেবে লগ ইন করলে ট্র্যাক করার সুযোগ অনেকাংশেই কমে যায়। যখন আপনি sudo ব্যবহার করেন, তখন প্রতিটি কমান্ড এবং সেটি যিনি সম্পাদন করেছেন সেই ব্যবহারকারীর নাম লগ করা হয় । যদি sudo ব্যবহার না করে সবকিছু রুট হিসেবে করা হয়, তাহলে লগগুলোতে শুধু এটাই দেখা যাবে যে "রুট কিছু একটা করেছে," কিন্তু কিবোর্ডের পেছনে কে ছিল তা দেখা যাবে না, যা তদন্ত এবং নিরাপত্তা বিধি মেনে চলার ক্ষেত্রে জটিলতা তৈরি করে।
রুট অ্যাকাউন্ট সক্রিয়, নিষ্ক্রিয় এবং লক করুন।
আপনার ডিস্ট্রিবিউশনের উপর নির্ভর করে, রুট অ্যাকাউন্টটি পাসওয়ার্ড সহ সক্রিয়, লক করা, অথবা কোনো পাসওয়ার্ড ছাড়াই থাকতে পারে । উবুন্টু-সদৃশ সিস্টেমগুলিতে সাধারণত সরাসরি লগইনের জন্য রুট নিষ্ক্রিয় থাকে, অন্যদিকে অন্যান্য ডিস্ট্রিবিউশনে ইনস্টলেশনের সময় একটি পাসওয়ার্ড নির্ধারণ করা হয়।
যদি আপনার মেশিনে রুট অ্যাকাউন্টটি লক করা থাকে, তাহলে sudo প্রিভিলেজ আছে এমন কোনো ইউজার নিম্নলিখিত কমান্ডটি চালিয়ে তা সক্রিয় করতে পারেন:
sudo passwd root
সিস্টেমটি প্রথমে আপনার ইউজার পাসওয়ার্ড চাইবে এবং তারপর আপনাকে নতুন রুট পাসওয়ার্ডটি প্রবেশ করিয়ে নিশ্চিত করতে বলবে। সেই মুহূর্ত থেকে অ্যাকাউন্টটি সক্রিয় হয়ে যাবে এবং আপনি ভার্চুয়াল টার্মিনালে অথবা, কিছু ক্ষেত্রে, গ্রাফিক্যাল ইন্টারফেসেও সুপারইউজার হিসেবে লগ ইন করতে পারবেন , যদিও পরেরটি একেবারেই নিরুৎসাহিত করা হয়।
যদি আপনি সিদ্ধান্ত নেন যে আপনি আর রুট অ্যাক্সেস উপলব্ধ রাখতে চান না, তাহলে আপনি নিম্নলিখিত উপায়ে অ্যাকাউন্টটি পুনরায় লক করতে পারেন:
sudo passwd -l root
-l প্যারামিটারটি একটি অবৈধ পাসওয়ার্ড যুক্ত করে অ্যাক্সেস ব্লক করে দেয়, ফলে আপনি `su` বা লগইন স্ক্রিন ব্যবহার করে রুট হিসেবে লগইন করতে পারবেন না । তবে, অনুমোদিত ব্যবহারকারীরা সিস্টেম পরিচালনার জন্য `sudo` ব্যবহার করতে পারবেন, তাই রক্ষণাবেক্ষণের কাজ করার উপায় থেকে আপনি বঞ্চিত হবেন না।
কিছু ডিস্ট্রিবিউশনে নিম্নলিখিত সংমিশ্রণ ব্যবহার করে রুট নিষ্ক্রিয় এবং পুনরায় সক্রিয় করার বিকল্পও দেওয়া হয়, যেমন sudo passwd -dl root o sudo passwd -u root এটা আনলক করতে। যাই হোক, সাধারণ পরামর্শ হলো রুট অ্যাক্সেস লক করে রাখা এবং খুব নির্দিষ্ট কিছু ক্ষেত্র ছাড়া সবসময় sudo ব্যবহার করে কাজ করা।যেমন, মারাত্মকভাবে ক্ষতিগ্রস্ত সিস্টেমের জন্য উদ্ধার বা পুনরুদ্ধারের পরিবেশ।
রুট পাসওয়ার্ড পুনরুদ্ধার বা পরিবর্তন করুন
হয়তো আপনি আপনার রুট পাসওয়ার্ড হারিয়ে ফেলেছেন, এটিকে নিষ্ক্রিয় করে দিয়েছেন, অথবা এমন একটি সার্ভারের পাসওয়ার্ড রিসেট করতে চাইছেন যার মূল কনফিগারেশন এখন ভুলে গেছেন। সিস্টেম বুট হচ্ছে কিনা বা আপনার কোনো বাহ্যিক ডিভাইস ব্যবহার করার প্রয়োজন আছে কিনা, তার উপর নির্ভর করে লিনাক্স এটি করার জন্য বিভিন্ন উপায় প্রদান করে।
যদি আপনার মেশিনটি এরপরও গ্রাব (GRUB) বুট ম্যানেজারে পৌঁছায়, তবে একটি সাধারণ উপায় হলো রিকভারি মোড (Recovery Mode ) ব্যবহার করা । অ্যাডভান্সড মেনু থেকে এই অপশনটি নির্বাচন করলে সিস্টেমটি একটি সীমিত পরিবেশে চালু হয় এবং আপনাকে সুপারইউজার প্রিভিলেজসহ একটি কনসোল অ্যাক্সেস করার সুযোগ দেয়।
একবার সেই শেলের ভিতরে প্রবেশ করার পর, প্রথম কাজ হলো ফাইল সিস্টেমটিকে লেখার অনুমতি (write permissions) দিয়ে পুনরায় মাউন্ট করা , কারণ এটি প্রায়শই শুধুমাত্র পঠনযোগ্য (read-only) থাকে:
mount -o rw,remount /
তারপর, নতুন পাসওয়ার্ড সেট করার জন্য আপনি সাধারণ কমান্ডটি চালাতে পারেন:
passwd root
নতুন কী-টি দুইবার প্রবেশ করান, এবং পরিবর্তনগুলো ডিস্কে লেখা নিশ্চিত করতে ব্যবহার করুন:
syncreboot
রিস্টার্ট করার পর, রুট অ্যাকাউন্টে আপনার সেট করা পাসওয়ার্ডটি থাকবে , তাই আপনি প্রয়োজন অনুযায়ী এটি ব্যবহার করতে পারবেন (তবে আদর্শগতভাবে, খুব কম এবং সতর্কতার সাথে)।
যদি সিস্টেমটি বুটই না হয়, তাহলে আপনি উবুন্টুর মতো কোনো লিনাক্স ডিস্ট্রিবিউশনের লাইভসিডি বা লাইভইউএসবি ব্যবহার করতে পারেন । সেই মিডিয়া থেকে বুট করুন, ইনস্টল না করে "Try" অপশনটি বেছে নিন এবং একটি টার্মিনাল খুলুন। সাধারণত, লাইভ এনভায়রনমেন্টে প্রথমে রুট অ্যাক্সেস পেতে আপনাকে নিম্নলিখিত কমান্ডটি ব্যবহার করতে হবে:
sudo su
এরপরে, যে সিস্টেমটি মেরামত করতে হবে সেটি যে পার্টিশনে ইনস্টল করা আছে, তা খুঁজে বের করতে হবে, যেমন:
fdisk -l
একবার আপনি সঠিক ডিভাইসটি (উদাহরণস্বরূপ, /dev/sda1) শনাক্ত করলে, সেটিকে একটি ওয়ার্কিং ফোল্ডারে মাউন্ট করুন:
mkdir /mnt/recovermount /dev/sda1 /mnt/recover
পরবর্তী পদক্ষেপ হলো এনভায়রনমেন্টের "রুট" পরিবর্তন করে মাউন্ট করা পার্টিশনে নিয়ে যাওয়া , যাতে passwd লাইভ এনভায়রনমেন্টের পরিবর্তে ইনস্টল করা সিস্টেমের উপর কাজ করে।
chroot /mnt/recover
সেখান থেকে আপনি দৌড়াতে পারেন:
passwd root
একটি নতুন পাসওয়ার্ড সেট করতে। chroot থেকে বেরিয়ে এসে এবং পুনরায় চালু করার পর, মূল সিস্টেমটি আপডেট করা সুপারইউজার ক্রেডেনশিয়াল সহ বুট হবে । লক করা মেশিন উদ্ধারের জন্য এটি একটি অত্যন্ত শক্তিশালী কৌশল, তবে এটি এও তুলে ধরে যে গুরুত্বপূর্ণ সার্ভারগুলিতে ফিজিক্যাল অ্যাক্সেস এবং এক্সটার্নাল মিডিয়া থেকে বুটিং সুরক্ষিত রাখা কেন অত্যাবশ্যক।
উবুন্টুতে রুট অ্যাক্সেস এবং নিরাপত্তা নীতি
উবুন্টু এবং এর থেকে উদ্ভূত অনেক সংস্করণ (যেমন জুবুন্টু, কুবুন্টু, লিনাক্স মিন্ট ইত্যাদি) একটি অত্যন্ত সুস্পষ্ট ধারণার উপর ভিত্তি করে তাদের নিরাপত্তা মডেল তৈরি করেছে: রুট অ্যাক্সেস থাকলেও, এটি প্রায় সবসময়ই সুডো (sudo)-এর মাধ্যমে পরোক্ষভাবে ব্যবহৃত হয় । এর বেশ কিছু ব্যবহারিক এবং নিরাপত্তাগত সুবিধা রয়েছে।
সাধারণ ইনস্টলেশনে, 'root'-এর জন্য কোনো পাসওয়ার্ড নির্ধারণ করা থাকে না , ফলে TTY টার্মিনাল এবং গ্রাফিক্যাল পরিবেশ উভয় ক্ষেত্রেই এই অ্যাকাউন্ট দিয়ে সরাসরি লগইন করা যায় না। এর পরিবর্তে, ইনস্টলেশনের সময় তৈরি হওয়া প্রথম ব্যবহারকারীকে 'sudo' গ্রুপে যুক্ত করা হয় এবং সমস্ত প্রশাসনিক কাজ সেই অ্যাকাউন্ট থেকে উচ্চতর বিশেষাধিকার সহকারে সম্পন্ন করা হয়।
এই পদ্ধতিটি রুট অ্যাকাউন্টে (যেমন, SSH-এর মাধ্যমে) ব্রুট-ফোর্স আক্রমণের ঝুঁকি কমায় এবং মানবিক ভুলের কারণে মারাত্মক পরিণতির সম্ভাবনা হ্রাস করে, কারণ এটি অ্যাডমিনিস্ট্রেটরকে প্রতিবার sudo ব্যবহার করার সময় ভাবতে বাধ্য করে।
খুব নির্দিষ্ট কিছু ক্ষেত্রে (যেমন ল্যাবরেটরি, উদ্ধার কেন্দ্র, বা অত্যন্ত বিচ্ছিন্ন মেশিন), `sudo passwd root` কমান্ড ব্যবহার করে রুট অ্যাকাউন্টে পাসওয়ার্ড দিয়ে সরাসরি লগইন করার অনুমতি দেওয়া যুক্তিযুক্ত হতে পারে, কিন্তু এটিকে একটি অস্থায়ী ব্যবস্থা হিসেবে বিবেচনা করাই শ্রেয়। সমস্যাটির সমাধান হয়ে গেলে, অ্যাকাউন্টটি পুনরায় লক করে `sudo` ব্যবহার করে কাজ চালিয়ে যাওয়াই ভালো।
এছাড়াও, যেসব কাজের জন্য একটি স্থায়ী রুট শেল প্রয়োজন, সেগুলোর জন্য উবুন্টু নিম্নলিখিত কমান্ডগুলো প্রদান করে:
sudo -i o sudo su -
এগুলো নিজস্ব এনভায়রনমেন্ট এবং PATH সহ একটি সম্পূর্ণ রুট লগইনের অনুকরণ করে । এটি সেইসব স্ক্রিপ্ট এবং টুলের জন্য উপযোগী, যেগুলো স্থায়ী সরাসরি লগইন চালু করার প্রয়োজন ছাড়াই সঠিকভাবে কাজ করার জন্য একটি "বিশুদ্ধ" রুট এনভায়রনমেন্টে থাকার প্রত্যাশা করে।
SSH এর মাধ্যমে রুট অ্যাক্সেস: সক্রিয় করা, নিষ্ক্রিয় করা এবং সুরক্ষিত করা
রিমোট সার্ভারে রুট অ্যাক্সেস আরও বেশি গুরুত্বপূর্ণ হয়ে ওঠে। ডিফল্টরূপে, বেশিরভাগ উবুন্টু ইনস্টলেশন SSH-এর মাধ্যমে সরাসরি রুট লগইন নিষ্ক্রিয় করে রাখে , ফলে আপনাকে একজন সাধারণ ব্যবহারকারী হিসেবে সংযোগ করতে হয় এবং তারপর `sudo` ব্যবহার করতে হয়। স্বয়ংক্রিয় আক্রমণ প্রতিরোধের জন্য এটি একটি মৌলিক নিরাপত্তা ব্যবস্থা।
যদি কোনো অত্যন্ত যুক্তিসঙ্গত কারণে আপনার সেই অ্যাক্সেসটি চালু করার প্রয়োজন হয়, তবে মৌলিক প্রক্রিয়াটিতে এই পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে: প্রথমত, রুটের যদি কোনো পাসওয়ার্ড না থাকে তবে সেটিকে একটি পাসওয়ার্ড দিন:
sudo passwd root
এবং তারপর SSH সার্ভার কনফিগারেশন সম্পাদনা করুন:
sudo nano /etc/ssh/sshd_config
এই ফাইলের মধ্যে, PermitRootLogin ডিরেক্টিভটি খুঁজুন । যদি এটি কমেন্ট করা থাকে বা "prohibit-password" এ সেট করা থাকে, তাহলে আপনি এটিকে পরিবর্তন করে নিম্নলিখিতটি করতে পারেন:
PermitRootLogin yes
পরিবর্তনগুলি সংরক্ষণ করুন এবং পরিষেবাটি পুনরায় চালু করুন:
sudo systemctl restart ssh
সেখান থেকে, আপনি SSH এর মাধ্যমে সরাসরি রুট হিসেবে লগ ইন করতে পারেন, যা শুধুমাত্র পাসওয়ার্ড দিয়ে ব্যবহার করলে একটি গুরুতর দুর্বলতা তৈরি করে । এক্ষেত্রে ন্যূনতম গ্রহণযোগ্য পদ্ধতি হলো এটিকে পাবলিক কী অথেনটিকেশনের সাথে যুক্ত করা এবং, যদি সম্ভব হয়, আইপি অ্যাড্রেস অথবা ব্যাস্টিয়ন কী বা ভিপিএন এর মাধ্যমে অ্যাক্সেস সীমাবদ্ধ করা।
পরিস্থিতি পরিবর্তন করতে এবং নিরাপত্তা জোরদার করতে, /etc/ssh/sshd_config ফাইলটি আবার সম্পাদনা করুন এবং কনফিগার করুন:
PermitRootLogin no
অথবা, যদি আপনি ব্যক্তিগতভাবে শুধুমাত্র কী অ্যাক্সেসের অনুমতি দিতে চান:
PermitRootLogin prohibit-password
আবার SSH রিস্টার্ট করুন এবং, যদি আপনি আরও এক ধাপ এগিয়ে যেতে চান, তাহলে নিম্নলিখিত কমান্ড দিয়ে লোকাল রুট অ্যাকাউন্টটিও লক করুন:
sudo passwd -l root
এইভাবে, সমস্ত রিমোট অ্যাডমিনিস্ট্রেশন টাস্ক সাধারণ ব্যবহারকারী এবং sudo-এর মাধ্যমেই সম্পন্ন করতে হবে , এবং এর জন্য sudoers ফাইলের নিয়মাবলীতে নিবন্ধিত ও নিয়ন্ত্রিত হতে হবে।
সুপারইউজার বিশেষাধিকার ব্যবহারের সর্বোত্তম অনুশীলন
root, sudo, এবং su-তে দক্ষতা অর্জন করা কেবল কমান্ড মুখস্থ করার বিষয় নয়, বরং উচ্চতর বিশেষাধিকার নিয়ে কাজ করার সময় ঝুঁকি কমানোর অভ্যাস গড়ে তোলার বিষয় । এমন কয়েকটি বিচক্ষণ অভ্যাস রয়েছে যা আপনার দৈনন্দিন রুটিনে অন্তর্ভুক্ত করা উচিত।
সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো সর্বদা ন্যূনতম বিশেষাধিকারের নীতি প্রয়োগ করা : শুধুমাত্র একান্ত প্রয়োজনীয় অনুমতিগুলোই রাখুন, এবং কেবল প্রয়োজনীয় সময়ের জন্যই রাখুন। লিনাক্সের ক্ষেত্রে এর অর্থ হলো, যখনই সম্ভব বিচ্ছিন্ন কমান্ডের জন্য `sudo` ব্যবহার করা এবং অপ্রয়োজনে দীর্ঘ সময়ের জন্য রুট শেলে থাকা এড়িয়ে চলা।
সন্দেহজনক উৎস থেকে পাওয়া স্ক্রিপ্ট বা বাইনারি কখনোই রুট হিসেবে না চালানোটাও অত্যন্ত গুরুত্বপূর্ণ । ইন্টারনেট থেকে কপি করা কোনো কোডের অংশ চালানোর আগে, সেটিকে একটি টেক্সট এডিটর দিয়ে খুলে দেখুন এটি ঠিক কী কাজ করে। যদি কোনো অংশ বুঝতে না পারেন, তবে সন্দেহ করুন। ডাউনলোড করা সফটওয়্যারের ক্ষেত্রে, সবসময় অফিসিয়াল রিপোজিটরি, প্রজেক্ট ওয়েবসাইট বা অন্যান্য নির্ভরযোগ্য উৎস থেকে তা নেওয়ার চেষ্টা করুন এবং ডেভেলপার চেকসাম প্রকাশ করলে তা যাচাই করে নিন।
সম্ভব হলে, প্রোডাকশন সার্ভার বা আপনার মূল মেশিনে স্ক্রিপ্ট বা ম্যানুয়ালগুলো প্রয়োগ করার আগে একটি বিচ্ছিন্ন পরিবেশে (যেমন ভার্চুয়াল মেশিন, ডকার কন্টেইনার বা টেস্ট এনভায়রনমেন্ট) সেগুলো পরীক্ষা করে নিন এবং লিনাক্স সফটওয়্যারের টিপস ও ট্রিকস দেখে নিন । এটি আপনাকে অনেক ঝামেলা থেকে বাঁচাতে পারে।
যেসব সার্ভারে একাধিক প্রশাসক থাকেন, সেখানে আরও এক ধাপ এগিয়ে গিয়ে sudoers-কে সূক্ষ্মভাবে কনফিগার করার পরামর্শ দেওয়া হয় , যাতে প্রত্যেকে কেবল তাদের প্রয়োজনীয় কমান্ডগুলোই চালাতে পারে। এর ফলে কোনো ভুল বা অ্যাকাউন্ট হ্যাক হওয়ার সম্ভাব্য ক্ষতি সীমিত হয় এবং যেকোনো সময়ে কে কী করেছে, তার সন্ধানও বজায় থাকে।
এই দিকগুলো মাথায় রেখে এবং এই ধারণাটিকে সম্মান করে যে রুট হলো বিশেষ মুহূর্তের জন্য একটি টুল, দৈনন্দিন কাজের জন্য কোনো পরীক্ষামূলক ব্যবহারকারী নয় , আপনি আপনার সিস্টেমের স্থিতিশীলতা এবং নিরাপত্তাকে অপ্রয়োজনীয়ভাবে বিপন্ন না করেই লিনাক্সের নমনীয়তার পূর্ণ সুবিধা নিতে পারেন।
লিনাক্স ইকোসিস্টেম সাধারণ ব্যবহারকারী এবং সুপারইউজারের মধ্যেকার বিভাজনের উপর ব্যাপকভাবে নির্ভর করে, এবং শুধুমাত্র প্রয়োজনের সময় তাদের মধ্যে পরিবর্তন করার জন্য sudo এবং su-এর মতো পদ্ধতির উপরও নির্ভরশীল। রুট কীভাবে কাজ করে, কখন এটি ব্যবহার করতে হবে, এর ব্যবহার সীমিত রাখা এবং জরুরি অবস্থায় কীভাবে এটি পুনরুদ্ধার করা যায়, তা বোঝা যেকোনো ডিস্ট্রিবিউশনকে বিচক্ষণতার সাথে পরিচালনা করার একটি মূল অংশ, তা আপনার ব্যক্তিগত ল্যাপটপেই হোক বা কোনো গুরুত্বপূর্ণ প্রোডাকশন সার্ভারেই হোক।


