লিনাক্স সুডো কমান্ডের ব্যাখ: ব্যবহার, কনফিগারেশন ও সমস্যার সমাধান

目次

১. শুরু করা: sudo কী?

sudo-এর মৌলিক অর্থ এবং ভূমিকা

লিনাক্স এবং ইউনিক্স-জাতীয় সিস্টেমে, “sudo” একটি গুরুত্বপূর্ণ কমান্ড।
“sudo” হলো “superuser do” এর সংক্ষিপ্ত রূপ এবং এটি অস্থায়ীভাবে অ্যাডমিনিস্ট্রেটরের অনুমতি (রুট অনুমতি) ধার করে কমান্ড চালানোর একটি টুল। সাধারণত, সাধারণ ব্যবহারকারীরা পুরো সিস্টেমকে প্রভাবিত করা অপারেশন (যেমন প্যাকেজ ইনস্টল করা বা সিস্টেম সেটিংস পরিবর্তন করা) করার অধিকার থাকে না। তবে, sudo কমান্ড ব্যবহার করে এই বিশেষ অনুমতিযুক্ত অপারেশনগুলি সীমিত ভিত্তিতে চালানো যায়।

উদাহরণস্বরূপ, নিম্নলিখিত কমান্ড চালিয়ে আপনি রুট অনুমতি দিয়ে apt কমান্ড চালাতে পারেন:

sudo apt update

তাই, sudo সিস্টেম নিরাপত্তা এবং সুবিধার ভারসাম্য রক্ষায় “অ্যাডমিনিস্ট্রেটরের অনুমতি নিরাপদে ব্যবহারের যন্ত্রাংশ” হিসেবে ভূমিকা পালন করে।

su কমান্ড থেকে পার্থক্য

sudo-এর সাথে অনুরূপ উদ্দেশ্যে একটি su কমান্ড রয়েছে, কিন্তু দুটির মধ্যে স্পষ্ট পার্থক্য রয়েছে।

  • su মানে “substitute user” এবং এটি অন্য ব্যবহারকারীতে (প্রধানত রুট) সুইচ করার কমান্ডsu ব্যবহার করলে, অপারেশনগুলি নির্দিষ্ট ব্যবহারকারী “হয়ে যাওয়ার” পদ্ধতিতে সম্পাদিত হয়।
  • অন্যদিকে, sudo বর্তমান ব্যবহারকারী থাকার অবস্থায় অস্থায়ীভাবে ধার করা অ্যাডমিনিস্ট্রেটরের অনুমতি দিয়ে কমান্ড চালায়

অর্থাৎ, su প্রতি-সেশন ভিত্তিতে সুইচ করার পদ্ধতি, যেখানে sudo প্রতি-কমান্ড ভিত্তিতে অনুমতি বাড়ানোর পদ্ধতি। এই পার্থক্য নিরাপত্তার দিক থেকে উল্লেখযোগ্য; sudo অপারেশনের ইতিহাস পরিচালনা করতে সহজ করে, এবং সাম্প্রতিক ডিস্ট্রিবিউশনে sudo স্ট্যান্ডার্ড পদ্ধতি হয়ে উঠেছে।

sudo ব্যবহারকারী সাধারণ লিনাক্স ডিস্ট্রিবিউশন

sudo অনেক লিনাক্স ডিস্ট্রিবিউশনে ডিফল্টভাবে ব্যবহৃত হয়, এবং নিম্নলিখিত ডিস্ট্রিবিউশনগুলিতে এর ব্যবহার বিশেষভাবে ধরা হয়েছে:

  • Ubuntu-ভিত্তিক (Ubuntu, Linux Mint ইত্যাদি) → প্রাথমিকভাবে, আপনি সরাসরি রুট অ্যাকাউন্টে লগইন করেন না বরং sudo দিয়ে এটি পরিচালনা করেন।
  • Debian-ভিত্তিক → sudo পরবর্তীতে সক্রিয় করা যায়, কিন্তু এটি প্রায়শই নিরাপত্তা নীতি হিসেবে সুপারিশ করা হয়।
  • Fedora, CentOS এবং Red Hat-ভিত্তিক → রুট অ্যাকাউন্ট ব্যবহার সম্ভব হলেও, sudo ব্যবহারও সাধারণ।

বিশেষ করে Ubuntu-এ, রুট অ্যাকাউন্ট ডিফল্টভাবে নিষ্ক্রিয়, এবং সকল অ্যাডমিনিস্ট্রেটিভ অপারেশন sudo-এর মাধ্যমে সম্পাদনের জন্য ডিজাইন করা হয়েছে। তাই, Ubuntu ব্যবহারকারীদের জন্য sudo বোঝা অপরিহার্য।

কেন “sudo sudo” অনুসন্ধান করা হয়?

অনুসন্ধান কীওয়ার্ড “sudo sudo” প্রথম দৃষ্টিতে অপ্রয়োজনীয় মনে হতে পারে, কিন্তু আসলে এটি নিম্নলিখিত উদ্দেশ্যে অনুসন্ধান করা হয়:

  • sudo-এর অর্থ এবং ব্যবহার জানতে চান শিক্ষানবিসরা এটি জোর দেওয়ার জন্য বারবার লেখেন।
  • sudo ব্যবহার করে সমস্যার সম্মুখীন ব্যবহারকারীরা (যেমন, sudo: sudo: command not found ) সমাধান অনুসন্ধান করছেন।
  • স্ক্রিপ্ট বা পাইপলাইনে ডাবল sudo ব্যবহারের উদাহরণ দেখে বিস্মিত ব্যবহারকারীরা।

এই অনুসন্ধান উদ্দেশ্যগুলি বুঝে, নিম্নলিখিত অধ্যায়গুলিতে sudo-এর সঠিক ব্যবহার এবং কনফিগারেশন পদ্ধতি, সেইসাথে সমস্যা সমাধান বিস্তারিতভাবে ব্যাখ্যা করা হবে।

২. sudo কমান্ডের মৌলিক ব্যবহার

sudo-এর মৌলিক সিনট্যাক্স

sudo-এর মৌলিক ফরম্যাট খুবই সহজ।

sudo [options] command

উদাহরণস্বরূপ, সিস্টেমের প্যাকেজ তথ্য আপডেট করতে নিম্নলিখিতটি ব্যবহার করুন:

sudo apt update

এই কমান্ডটি অর্থ ” রুট অনুমতি দিয়ে ‘apt update’ চালানো”।

পাসওয়ার্ড প্রমাণীকরণ যন্ত্রাংশ এবং ক্যাশ

প্রথমবার sudo ব্যবহার করলে, বা নির্দিষ্ট সময় অতিবাহিত হলে, সিস্টেম আপনাকে ব্যবহারকারীর পাসওয়ার্ড লেখার জন্য অনুরোধ করবে। এটি নিরাপত্তা বাড়ানো এবং দুর্ঘটনাজনক অপারেশন বা তৃতীয় পক্ষের অননুমোদিত ব্যবহার প্রতিরোধের যন্ত্রাংশ।

পাসওয়ার্ড লেখার পর, এটি নির্দিষ্ট সময়ের জন্য ক্যাশ করা হয় (Ubuntu-এ ডিফল্ট ৫ মিনিট), এবং sudo আবার ব্যবহার করলে পাসওয়ার্ড লেখা এড়ানো যায়। এই সময় sudoers ফাইলে পরিবর্তন করা যায়।

ঘন ঘন ব্যবহৃত অপশন

sudo-এর অনেক অপশন রয়েছে যা অপারেশনকে আরও সুবিধাজনক এবং নমনীয় করে। নিচে কয়েকটি সবচেয়ে সাধারণ অপশন দেওয়া হলো।

-u (অন্যান্য ইউজার হিসেবে এক্সিকিউট করুন)

ডিফল্টভাবে, এটি রুট প্রিভিলেজ ব্যবহার করে, কিন্তু -u অপশন ব্যবহার করে আপনি যেকোনো ইউজার হিসেবে কমান্ড এক্সিকিউট করতে পারেন

sudo -u www-data whoami

এক্সিকিউশনের ফলাফল হবে www-data, যা নিশ্চিত করে যে “কমান্ডটি www-data হিসেবে এক্সিকিউট হয়েছে, আমার হিসেবে নয়।”

-s (শেল শুরু করুন)

নিম্নলিখিত কমান্ডটি আপনাকে রুট প্রিভিলেজ সহ অস্থায়ীভাবে একটি শেল খুলতে দেয়

sudo -s

তবে, রুট অবস্থায় অপারেশনগুলি সতর্কতার সাথে সম্পাদন করা উচিত।

-i (পূর্ণ রুট ইউজার হিসেবে লগ ইন করুন)

এই অপশনটি একটি আরও সম্পূর্ণ রুট পরিবেশ পুনর্নির্মাণ করে। যেহেতু পরিবেশ ভেরিয়েবলগুলিও রুটের হিসেবে পরিবর্তিত হয়, এটি লগইনের ঠিক পরের অবস্থার মতো একটি রুট সেশন হয়ে ওঠে।

sudo -i

-l (এক্সিকিউটযোগ্য কমান্ড চেক করুন)

আপনি sudo ব্যবহার করে এক্সিকিউট করতে পারেন এমন কমান্ডগুলি চেক করতে পারেন।

sudo -l

এটি নিরাপত্তা সীমাবদ্ধতা চেক করতে এবং প্রিভিলেজ সেটিংস পরীক্ষা করতে উপকারী।

শিক্ষানবিসদের জন্য বিবেচনা করার পয়েন্টসমূহ

  • আপনাকে ** sudo-এর পর স্পেস রাখতে হবে**। উদাহরণ: sudoapt ভুল।
  • যদি আপনি একাধিক কমান্ড এক্সিকিউট করতে চান, তাহলে সম্পূর্ণ কমান্ডটি কোটস ( " বা ' ) এর মধ্যে রাখুন অথবা সেমিকোলন দিয়ে আলাদা করুন।
  • sudo দিয়ে GUI অ্যাপ্লিকেশন চালানোর সময় সতর্ক থাকুন, কারণ এটি কনফিগারেশন ফাইলগুলি ক্ষতিগ্রস্ত করতে পারে (যেমন, sudo gedit )।

৩. sudoers ফাইল এবং অ্যাক্সেস কন্ট্রোল

sudoers ফাইল কী?

sudo কমান্ডের আচরণ নিয়ন্ত্রণ করে এমন কনফিগারেশন ফাইলটি সিস্টেমে /etc/sudoers। এই ফাইলটি কে sudo দিয়ে কোন কমান্ড এক্সিকিউট করতে পারে তা নির্ধারণ করে

উদাহরণস্বরূপ, একটি নির্দিষ্ট ইউজারকে শুধুমাত্র নির্দিষ্ট কমান্ডগুলি sudo দিয়ে এক্সিকিউট করার অনুমতি দেওয়ার মতো সূক্ষ্ম অ্যাক্সেস কন্ট্রোল সম্ভব।
এই নমনীয়তা ইউজারদের শুধুমাত্র ন্যূনতম প্রয়োজনীয় প্রিভিলেজ প্রদানের নিরাপত্তা নীতি (প্রিন্সিপাল অফ লিস্ট প্রিভিলেজ) বাস্তবায়ন করতে সাহায্য করে।

visudo কমান্ড দিয়ে নিরাপদ এডিটিং

/etc/sudoers ফাইলটি সরাসরি টেক্সট এডিটর দিয়ে এডিট করা উচিত নয়

এর কারণ হলো, সিনট্যাক্স ত্রুটি sudo ব্যবহারযোগ্য অকার্যকর করে তুলতে পারে, যা পুনরুদ্ধার কঠিন করে তোলে। তাই, এডিটিংয়ের জন্য visudo কমান্ড ব্যবহার করার সুপারিশ করা হয়

sudo visudo

visudo সেভ করার সময় সিনট্যাক্স চেক করে, যা নিরাপদ এডিটিং সম্ভব করে।

মৌলিক সিনট্যাক্স এবং কনফিগারেশন উদাহরণসমূহ

sudoers ফাইলের মৌলিক সিনট্যাক্স নিম্নরূপ:

username hostname = (runas_user) command(s)

উদাহরণ:

alice ALL=(ALL:ALL) ALL

এই সেটিংটি “alice” ইউজারকে সকল হোস্টে যেকোনো ইউজার হিসেবে সকল কমান্ড এক্সিকিউট করার অনুমতি দেয়।

আরও সীমাবদ্ধতা যোগ করতে:

bob ALL=(ALL) /usr/bin/systemctl restart nginx

এই সেটিংটি “bob” ইউজারকে শুধুমাত্র “nginx রিস্টার্ট কমান্ড” sudo দিয়ে এক্সিকিউট করার অনুমতি দেয়।

গ্রুপ দিয়ে নিয়ন্ত্রণ: sudo গ্রুপ

ইউবুন্টুর মতো অনেক ডিস্ট্রিবিউশনে, sudo গ্রুপের অন্তর্ভুক্ত ইউজারদের sudo ব্যবহারের প্রিভিলেজ প্রদান করা হয়।

%sudo  ALL=(ALL:ALL) ALL

এভাবে %sudo লিখে গ্রুপ দিয়ে ম্যানেজমেন্ট সম্ভব হয়।

sudo গ্রুপে একজন ইউজার যোগ করতে, নিম্নলিখিত কমান্ড ব্যবহার করুন:

sudo usermod -aG sudo username

NOPASSWD অপশনের ব্যবহার এবং সতর্কতা

প্রতিবার sudo এক্সিকিউট করার সময় পাসওয়ার্ড ইনপুট করা ঝামেলার লাগলে, পাসওয়ার্ড ইনপুট এড়ানোর জন্য NOPASSWD অপশন ব্যবহার করতে পারেন।

alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

এই সেটিংয়ের সাথে, “alice” ইউজার পাসওয়ার্ড ছাড়াই nginx রিস্টার্ট করতে পারবে।

তবে, এটি নিরাপত্তা ঝুঁকি বাড়ায়, তাই শুধুমাত্র সীমিত সংখ্যক কমান্ডের জন্য এটি ব্যবহার করা গুরুত্বপূর্ণ
বিশেষ করে, এটিকে ALL-এর সাথে যুক্ত করা সুপারিশ করা হয় না।

৪. sudo-এর অ্যাডভান্সড ব্যবহার

নির্দিষ্ট ইউজার হিসেবে কমান্ড এক্সিকিউট করা

সাধারণত, sudo রুট প্রিভিলেজ দিয়ে কমান্ড এক্সিকিউট করে, কিন্তু অপশন ব্যবহার করে আপনি যেকোনো ইউজার হিসেবে কমান্ড এক্সিকিউট করতে পারেন

উদাহরণস্বরূপ, ওয়েব সার্ভার দ্বারা ব্যবহৃত “www-data” ইউজার হিসেবে একটি কমান্ড এক্সিকিউট করতে চাইলে, নিম্নলিখিতটি ব্যবহার করুন:

sudo -u www-data whoami

নির্বাহের ফলাফল হবে www-data , যা নিশ্চিত করে যে “কমান্ডটি www-data হিসেবে নির্বাহিত হয়েছে, আমার নিজের হিসেবে নয়।”

এই ব্যবহারটি দরকারী যখন আপনি প্রত্যেক ব্যবহারকারীর জন্য ভিন্ন ভিন্ন পরিবেশ বা সুবিধা চেক করতে চান

রিডাইরেক্ট এবং পাইপের সাথে সমন্বয়

নতুনদের জন্য একটি সাধারণ বিভ্রান্তির বিন্দু হল sudo এর সাথে রিডাইরেক্ট (>) এবং পাইপ (|) এর সমন্বয়।
উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি প্রথম দৃষ্টিতে সঠিক মনে হতে পারে, কিন্তু এটি যথেষ্টভাবে কাজ করবে না:sudo echo "test" > /etc/test.conf

এই ক্ষেত্রে, echo নিজেই sudo দিয়ে নির্বাহিত হয়, কিন্তু > সহ রিডাইরেক্টটি সাধারণ ব্যবহারকারীর সুবিধায় নির্বাহিত হয়। তাই, লেখা ব্যর্থ হবে।

সঠিক উপায় হল tee কমান্ডটি ব্যবহার করা:

echo "test" | sudo tee /etc/test.conf

এটি করে, রিডাইরেক্ট অংশটিও sudo সুবিধায় নির্বাহিত হয়, এবং আপনি ত্রুটি এড়াতে পারেন।

স্ক্রিপ্টে sudo ব্যবহার

যখন একটি শেল স্ক্রিপ্টে অ্যাডমিনিস্ট্রেটর সুবিধা প্রয়োজনীয় কমান্ড অন্তর্ভুক্ত করেন, তখন কমান্ডের আগে স্পষ্টভাবে sudo যোগ করুন।
তবে, যদি আপনি একটি স্ক্রিপ্ট তৈরি করেন ধরে নেয়া হয় যে এটি সাধারণ ব্যবহারকারী দ্বারা নির্বাহিত হবে, তাহলে এটি নিরাপদ যে শুধুমাত্র প্রয়োজনীয় অংশে sudo যোগ করুন এবং সম্পূর্ণ স্ক্রিপ্টটি sudo দিয়ে নির্বাহিত করা এড়ান।

উদাহরণ (install.sh):

#!/bin/bash

echo "Installing package..."
sudo apt install -y nginx

স্ক্রিপ্টের শুরুতে এটি root কিনা চেক করার একটি প্যাটার্নও রয়েছে:

if [ "$EUID" -ne 0 ]; then
    echo "This script must be run as root"
    exit 1
fi

এমন নিয়ন্ত্রণ অন্তর্ভুক্ত করে, নিরাপদ স্ক্রিপ্ট অপারেশন সম্ভব হয়।

ঘন ঘন ব্যবহৃত সুবিধাজনক কমান্ডসমূহ

  • sudo !! → পূর্ববর্তী কমান্ডটি sudo দিয়ে পুনরায় নির্বাহ করে। উদাহরণস্বরূপ:
    apt update
    sudo !!
    

এটির একই প্রভাব sudo apt update এর মতো।

  • sudo -k → sudo পাসওয়ার্ড ক্যাশ ম্যানুয়ালি ক্লিয়ার করে। এটি নিরাপত্তার কারণে দরকারী, যেমন টার্মিনাল থেকে অস্থায়ীভাবে চলে যাওয়ার আগে।
  • sudo -v → বর্তমান সেশনের জন্য sudo সুবিধা বাড়ায়। এটি দীর্ঘ কাজের জন্য সুবিধাজনক।

৫. নিরাপত্তা এবং সেরা অনুশীলনসমূহ

সর্বনিম্ন সুবিধার নীতি মেনে চলুন

sudo ব্যবহারের প্রধান উদ্দেশ্য হল সর্বনিম্ন প্রয়োজনীয় সুবিধায় সিস্টেম অপারেশন সক্ষম করা
অর্থাৎ, আদর্শ ব্যবহার নয় “সর্বদা সর্বশক্তিমান root ব্যবহারকারী হওয়া,” বরং “শুধুমাত্র প্রয়োজনীয় সময়ে এবং প্রয়োজনীয় পরিধির মধ্যে root এর শক্তি ধার করা।”

এই নীতি অনুসরণ করে, নিম্নলিখিত সেটিংসমূহ, উদাহরণস্বরূপ, কাঙ্ক্ষিত:

  • ব্যবহারকারীদের শুধুমাত্র নির্দিষ্ট কমান্ড sudo দিয়ে নির্বাহ করতে অনুমতি দিন (যেমন, systemctl restart nginx )।
  • NOPASSWD এর ব্যবহার সীমিত করুন।
  • অ্যাডমিনিস্ট্রেটিভ সুবিধাসম্পন্ন ব্যবহারকারীদের গ্রুপে পরিচালনা করুন (যেমন, sudo )।

লগিং এবং অডিটিং

sudo নির্বাহিত কমান্ডগুলি লগে রেকর্ড করে। এটি পরবর্তীতে চেক করতে দেয় যে কে কোন কমান্ড কখন ব্যবহার করেছে।

প্রধান লগ গন্তব্যগুলি নিম্নরূপ (বিতরণের উপর নির্ভর করে পরিবর্তিত হতে পারে):

  • /var/log/auth.log (Ubuntu, Debian-ভিত্তিক)
  • journalctl (systemd সহ বিতরণসমূহ)

উদাহরণস্বরূপ, Ubuntu তে sudo ব্যবহার ইতিহাস চেক করতে:

grep 'sudo' /var/log/auth.log

অথবা:

journalctl _COMM=sudo

এটি অননুমোদিত বা দুর্ঘটনাজনক অপারেশনের ক্ষেত্রেও কে কী করেছে তা ট্র্যাক করা সম্ভব করে। এটি সার্ভার পরিচালনায় অপরিহার্য দৃষ্টিভঙ্গি।

প্রকৃত sudo দুর্বলতা (CVE-2021-3156)

যদিও sudo একটি অত্যন্ত নির্ভরযোগ্য টুল, অতীতে উল্লেখযোগ্য দুর্বলতাসমূহ রিপোর্ট করা হয়েছে।

একটি বিশেষভাবে বিখ্যাত উদাহরণ হল CVE-2021-3156 (সাধারণত Baron Samedit নামে পরিচিত), ২০২১ সালে প্রকাশিত।
এটি ছিল একটি গুরুতর দুর্বলতা যেখানে, নির্দিষ্ট শর্তে, একটি ক্ষতিকর ইনপুট একটি সাধারণ ব্যবহারকারীকে root সুবিধা অর্জন করতে অনুমতি দিতে পারে

এই সমস্যাটি ইতিমধ্যে ঠিক করা হয়েছে, কিন্তু এই ক্ষেত্রটি দেখায় যে:

  • sudo সহ গুরুত্বপূর্ণ প্যাকেজগুলি সর্বদা সর্বশেষ সংস্করণে রাখুন।
  • নিয়মিত চেক করুন অফিসিয়াল ওয়েবসাইট এবং দুর্বলতা ডাটাবেস।

এমন ব্যবস্থাসমূহ প্রয়োজনীয়।

sudo এর বিকল্প পরিচিতি: doas

কিছু ন্যূনতম লিনাক্স পরিবেশ এবং নিরাপত্তা-সচেতন ব্যবহারকারীদের মধ্যে, doas নামক একটি কমান্ড sudo এর বিকল্প হিসেবে ব্যবহৃত হয়।

doas হলো OpenBSD থেকে উদ্ভূত একটি সংক্ষিপ্ত অধিকার বৃদ্ধি টুল, যা sudo এর তুলনায় সরল কনফিগারেশন এবং উচ্চ নিরাপত্তা দ্বারা চিহ্নিত।

উদাহরণ:

doas apt update

কনফিগারেশন ফাইল /etc/doas.conf এ লেখা হয়। সিনট্যাক্সও সরল:

permit nopass :wheel

যেমন দেখানো হয়েছে, wheel গ্রুপের ব্যবহারকারীদের পাসওয়ার্ড ছাড়াই doas ব্যবহার করতে দেওয়ার মতো সেটিংস সহজেই লিখতে পারেন।

তবে, কিছু লিনাক্স পরিবেশে doas ডিফল্টভাবে প্রদান করা হয় না, তাই ইনস্টল এবং কনফিগার করতে কিছু প্রচেষ্টা লাগে।
উদ্দেশ্য এবং লক্ষ্য অনুসারে, sudo বা doas কোনটি আরও উপযুক্ত তা বেছে নেওয়া ভালো।

৬. সাধারণ ত্রুটি এবং সমস্যা সমাধান

“User is not in the sudoers file” ত্রুটি

username is not in the sudoers file. This incident will be reported.

এই ত্রুটি প্রদর্শিত হয় যখন বর্তমান ব্যবহারকারীর sudo ব্যবহার করার অনুমতি নেই। এটি সাধারণত ঘটে যখন sudo গ্রুপে যুক্ত না করা একটি নতুন ব্যবহারকারী একটি কমান্ড চালায়।

সমাধান:

  1. রুট অধিকার সম্পন্ন অন্য ব্যবহারকারী দিয়ে লগ ইন করুন।
  2. লক্ষ্য ব্যবহারকারীকে sudo গ্রুপে যুক্ত করুন।
    sudo usermod -aG sudo username
    

তারপর, সেশন থেকে লগ আউট করে পুনরায় লগ ইন করুন, এবং sudo উপলব্ধ হবে।

রিডাইরেক্ট বা পাইপ ব্যবহার করার সময় “Permission denied” ত্রুটি

Permission denied

এই ত্রুটি ঘটে কারণ sudo দিয়ে কমান্ড চালানোর উদ্দেশ্য থাকলেও, রিডাইরেকশন গন্তব্য বা পাইপ প্রসেসিং sudo এর বাইরে করা হচ্ছে

ভুল উদাহরণ:

sudo echo "test" > /etc/test.conf

এই ক্ষেত্রে, echo sudo দিয়ে চালানো হয়, কিন্তু ফাইলে লেখা সাধারণ ব্যবহারকারীর অধিকারে করা হয়, ফলে ত্রুটি হয়।

সঠিক ব্যবহার:

echo "test" | sudo tee /etc/test.conf

অথবা, একসাথে একাধিক লাইন লিখতে, sudo tee বা sudo bash -c ব্যবহার করা ভালো।

sudo bash -c 'echo "line1" > /etc/test.conf'

sudoers ফাইল সম্পাদনায় ত্রুটির কারণে অকার্যকরতা

যদি আপনি sudoers ফাইল সরাসরি সম্পাদনা করেন এবং সিনট্যাক্স ত্রুটি করেন, তাহলে sudo নিজেই অকার্যকর হয়ে যেতে পারে। এটি একটি খুব বিপজ্জনক অবস্থা।

সমাধান:

  1. রুট অ্যাকাউন্ট দিয়ে লগ ইন করুন (উল্লেখ্য যে Ubuntu তে এটি ডিফল্টভাবে নিষ্ক্রিয়)।
  2. নিম্নলিখিত কমান্ড দিয়ে মেরামত করুন:
    pkexec visudo
    

যদি pkexec ব্যবহার করা না যায়, তাহলে রিকভারি মোড বা অনুরূপে বুট করে /etc/sudoers ফাইল পরিবর্তন করতে হবে।

এছাড়া, সিনট্যাক্স ত্রুটি প্রতিরোধ করতে, সম্পাদনার জন্য সর্বদা নিম্নলিখিত ব্যবহার করুন:

sudo visudo

“sudo: command not found”

sudo: command not found

এই ত্রুটি ঘটে যখন সিস্টেমে sudo ইনস্টল নেই বা PATH পরিবেশ ভেরিয়েবলের সমস্যার কারণে খুঁজে পাওয়া যায় না।

সমাধান:

  • রুট অধিকার দিয়ে লগ ইন করুন এবং নিম্নরূপ sudo পুনরায় ইনস্টল করুন:
    apt update
    apt install sudo
    
  • অথবা /usr/bin/sudo এর পাথ সরাসরি নির্দিষ্ট করে চালান:
    /usr/bin/sudo ls
    

৭. FAQ: sudo সম্পর্কিত ঘন ঘন জিজ্ঞাসিত প্রশ্ন

Q1. sudo এবং su এর মধ্যে পার্থক্য কী?

A:
sudo হলো “অ্যাডমিনিস্ট্রেটর অধিকারে শুধুমাত্র নির্দিষ্ট কমান্ডগুলি অস্থায়ীভাবে চালানোর” কমান্ড, যেখানে su হলো “সম্পূর্ণ ব্যবহারকারীতে (প্রধানত রুট) সুইচ করার” কমান্ড।

  • sudo : বর্তমান ব্যবহারকারী থাকার সময় শুধুমাত্র কিছু অপারেশনের জন্য অধিকার বৃদ্ধি করে।
  • su : সম্পূর্ণভাবে অন্য ব্যবহারকারীতে সুইচ করে।

নিরাপত্তা এবং অপারেশন ইতিহাসের দৃষ্টিকোণ থেকে, সাম্প্রতিক বছরগুলিতে sudo ব্যবহারের সুপারিশ করা হয়।

Q2. sudo ব্যবহার করার সময় রুট পাসওয়ার্ড দরকার হয় কি?

A:
না, সাধারণত আপনি আপনার নিজের লগইন পাসওয়ার্ড প্রবেশ করান, রুট পাসওয়ার্ড নয়।
এটি রুট পাসওয়ার্ড ফাঁসের ঝুঁকি কমানো এবং ব্যবহারকারীর অপারেশন ইতিহাস ট্র্যাক করা সহজ করার জন্য।

Q3. sudo লগ কোথায় রেকর্ড করা হয়?

A:
অনেক লিনাক্স ডিস্ট্রিবিউশনে, sudo দ্বারা অপারেশন লগগুলি নিম্নলিখিতগুলির একটিতে রেকর্ড করা হয়:

  • Ubuntu/Debian-ভিত্তিক: /var/log/auth.log
  • RHEL/CentOS-ভিত্তিক: /var/log/secure
  • সকল systemd পরিবেশ: journalctl _COMM=sudo

এটি অননুমোদিত বা দুর্ঘটনাজনক অপারেশনের ক্ষেত্রেও কে কী করেছে তা ট্র্যাক করা সম্ভব করে তোলে।

Q4. আমি দুর্ভাবনায় sudoers ফাইলটি সম্পাদনা করেছি। আমি কী করব?

A:
প্রথমে, সম্পাদনার আগে সর্বদা sudo visudo ব্যবহার করুন।
যদি সিনট্যাক্স ত্রুটির কারণে আর sudo ব্যবহার করতে না পারেন, তাহলে নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে মেরামত করার চেষ্টা করুন:

  • রুট অ্যাকাউন্ট দিয়ে লগ ইন করুন এবং visudo দিয়ে ঠিক করুন।
  • যদি এটি Ubuntu হয়, “Recovery Mode” থেকে রুট হিসেবে বুট করুন এবং মেরামত করুন।
  • pkexec visudo (যেখানে polkit সক্রিয় আছে সেই পরিবেশে)।

সিনট্যাক্স ত্রুটি পুরো সিস্টেমের অপারেশনকে প্রভাবিত করে, তাই ঠিক করার পর আবার পরীক্ষা করুন।

Q5. sudo ব্যবহার না করে রুট প্রিভিলেজ পাওয়ার উপায় আছে কি?

A:
হ্যাঁ, কিন্তু এটি নিরাপত্তা ঝুঁকি বাড়ার কারণে সুপারিশ করা হয় না।

উদাহরণস্বরূপ:

  • su কমান্ড দিয়ে রুটে সুইচ করুন (রুট পাসওয়ার্ড প্রয়োজন)।
  • রুট অ্যাকাউন্ট দিয়ে সরাসরি লগ ইন করুন (Ubuntu-তে ডিফল্টভাবে নিষ্ক্রিয়)।

অনেক লিনাক্স ডিস্ট্রিবিউশনের নীতি রুট অ্যাকাউন্টের সরাসরি ব্যবহার এড়ানো, এবং sudo ব্যবহার নিরাপদ।

Q6. sudo ব্যবহার করে GUI অ্যাপ লঞ্চ করা ঠিক আছে কি?

A:
মূলত, এটি এড়ানো ভালো। উদাহরণস্বরূপ, sudo gedit এর মতো কিছু চালানো রুট প্রিভিলেজ দিয়ে GUI কনফিগারেশন ফাইলগুলি ওভাররাইট করতে পারে, যা পারমিশন অসঙ্গতি বা কনফিগারেশন ক্ষয়ক্ষতির কারণ হতে পারে।

GUI অ্যাপ্লিকেশন ব্যবহার করার সময়, নিম্নরূপ gksudo বা pkexec ব্যবহার করা সুপারিশ করা হয় (তবে, এই টুলগুলি পরিবেশভেদে অপ্রচলিত বা ইনস্টল না থাকতে পারে):

pkexec gedit

৮. উপসংহার

sudo-এর ভূমিকা সঠিকভাবে বুঝুন

এই নিবন্ধে, আমরা লিনাক্স এবং ইউনিক্স-লাইক সিস্টেমের একটি অত্যন্ত গুরুত্বপূর্ণ কমান্ড “sudo,” বিস্তারিতভাবে ব্যাখ্যা করেছি, যাতে এর মৌলিক ভূমিকা, ব্যবহার, কনফিগারেশন পদ্ধতি, অ্যাপ্লিকেশন, নিরাপত্তা ব্যবস্থা, সাধারণ ত্রুটি, এবং FAQ অন্তর্ভুক্ত।

sudo শুধুমাত্র “কমান্ডের আগে রাখার জিনিস” নয়, বরং একটি গুরুত্বপূর্ণ অ্যাক্সেস কন্ট্রোল মেকানিজম যা সিস্টেম নিরাপত্তা বজায় রেখে প্রয়োজনীয় কাজ সম্ভব করে

সঠিক ব্যবহার সমস্যা প্রতিরোধ করে

নিম্নলিখিত পয়েন্টগুলিতে বিশেষ মনোযোগ দেওয়া sudo নিরাপদে ব্যবহারের চাবিকাঠি:

  • ন্যূনতম প্রয়োজনীয় প্রিভিলেজ দিয়ে অপারেট করুন (লিস্ট প্রিভিলেজের নীতি)।
  • visudo ব্যবহার করে সেটিংস নিরাপদে ম্যানেজ করুন।
  • লগ ব্যবহার করে অপারেশন ইতিহাস চেক এবং ম্যানেজ করুন।
  • পাইপ এবং রিডাইরেক্টের সাথে যুক্ত করার সময় আচরণের প্রতি সতর্ক থাকুন।
  • মূলত GUI অ্যাপ্লিকেশনের জন্য এটি ব্যবহার এড়ান।

এই পয়েন্টগুলি না বোঝায় সমস্যা হতে পারে যেমন “ফাইল ক্ষতিগ্রস্ত,” “সেটিংস পুনরুদ্ধার করা যাবে না,” বা “sudo ব্যবহারযোগ্য নয়।”

আপনার সিস্টেম অপারেশনের উপযোগী স্টাইল বেছে নিন

লিনাক্স একটি অত্যন্ত নমনীয় সিস্টেম। sudo ব্যবহার ছাড়াও, প্রয়োজনে doas এর মতো বিকল্প টুল ব্যবহার করতে পারেন।
আপনার অপারেশনাল নীতি এবং নিরাপত্তা নীতি অনুসারে, আপনার উপযোগী স্টাইল বেছে নিন এবং সঠিকভাবে কনফিগার এবং অপারেট করুন, যা ভালো সিস্টেম ম্যানেজমেন্টের দিকে নিয়ে যাবে।

অবশেষে

sudo বোঝা হলো লিনাক্স বোঝার প্রথম ধাপ
শুধুমাত্র সুবিধাজনক কমান্ড হিসেবে নয়, বরং পুরো সিস্টেম রক্ষার “চাবি” হিসেবে সঠিক জ্ঞান এবং ব্যবহার অর্জন করুন।

আমরা আশা করি যে পরবর্তীবার লিনাক্স ব্যবহার করার সময়, আপনার প্রত্যেক কমান্ড আরও আত্মবিশ্বাসের সাথে এক্সিকিউট হবে।