লিনাক্স অপারেটিং সিস্টেম এর প্রাথমিক ধারনা-২

আজ এ সিরিজের ২য় পর্ব পোস্ট করতে যাচ্ছি। এখানে আমি শুধুমাত্র লিনাক্স অপারেটিং সিস্টেম এর বেসিক ধারনাগুলি নিয়ে আলোচনা করার চেষ্টা করছি যাতে ভবিষ্যতে এটি একটি ভিত্তি হিসেবে নতুন লিনাক্স ব্যবহারকারীদেরকে কিছুটা দিক নির্দেশনা দিতে পারে। কারন আমার অভিজ্ঞতায় দেখেছি- নতুন যারা লিনাক্স শেখা শুরু করেন প্রায়ই বলে থাকেন- কোন লিনাক্স(ডিস্ট্রো) ব্যবহার করব, কোথা থেকে শুরু করব, কি কি শিখব, সব তো দেখি কমান্ড লাইন ইত্যাদি ইত্যাদি। অনেকে আবার কিছু কমান্ড এর লিস্ট ধরিয়ে দেন এবং বলেন যে, প্র্যাকটিস করতে থাকেন। কিন্তু একটি সিস্টেম এর উপর পূর্নাঙ্গ ধারনা থাকলে সহজেই টার্গেট ঠিক করে এগিয়ে যেতে পারবেন যেমন- আমি কোন ডিস্ট্রিবিউশনটি ব্যবহার করব, কি কি শিখব, কেন শিখব- এ রকম আরো প্রশ্নের জবাব এখানে আশা করি পেয়ে যাবেন। তারপরও ভুল ত্রুটি থাকতে পারে, সীমাবদ্ধতা থাকতে পারে- তা আগে থেকেই স্বীকার করে নিচ্ছি।
:-p


লিনাক্স ব্যবহার

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

লিনাক্স দিয়ে আপনি নিচের কাজগুলি করতে পারেনঃ

  • ডেস্কটপ অপারেটিং সিস্টেম হিসেবে সাধারন কাজ যেমনঃ লেখালেখি, হিসাব নিকাশ, ব্রাউজিং, গান শোনা, মুভি দেখা ইত্যাদি
  • এক্সটারনাল(ইন্টারনেট) অথবা ইন্টারনাল (ইন্ট্রানেট) ওয়েব সার্ভার তৈরী করা
  • ইন্টারনাল এবং ইন্টারনেট ইমেইল এর জন্য মেইল সার্ভার তৈরী করা
  • অন্যান্য ইন্টারনেট নির্ভর প্রোগ্রাম সার্ভার যেমনঃ এফটিপি, নিউজ, আইআরসি(চ্যাট) ইত্যাদি স্থাপন
  • দূরবর্তী স্থান থেকে আপনার বাসা অথবা অফিসের কার্যকলাপ পর্যবেক্ষনের জন্য ওয়েব ক্যাম সার্ভার স্থাপন
  • বাসা অথবা অফিসে একটি একক ব্রডব্যান্ড ইন্টারনেট কানেকশনকে সব সিস্টেমে শেয়ারিং এর জন্য প্রক্সি/ন্যাট সার্ভার স্থাপন
  • নেটওয়ার্ক এ ইনকামিং এবং আউটগোয়িং ট্রাফিক কন্ট্রোল এর জন্য প্যাকেট ফিল্টারিং ফায়ারওয়্যাল স্থাপন
  • ফাইল এবং প্রিন্ট শেয়ারিং এর জন্য নোভেল অথবা এনটি/২০০০ এর মত ইন্টারনাল ল্যান সার্ভার তৈরী করা। সাম্বা নামে একটি প্যাকেজ আছে যেটি দিয়ে আপনার লিনাক্স সার্ভারকে নেটওয়ার্কে অবস্থিত উইন্ডোজ ক্লায়েন্টগুলির জন্য এনটি সার্ভার হিসেবে কাজ করানো যায়।
  • ইন্টারনাল ল্যান হোস্ট এবং ইন্টারনেট ডোমেইন নেম বেজড ডিএনএস সার্ভার স্থাপন
  • মাইএসকিউএল, ওরাকল অথবা পোস্টজিআরই নির্ভর ডাটাবেজ সার্ভার স্থাপন
  • ফ্যাক্স সার্ভার স্থাপন এবং নেটওয়ার্ক এ অবস্থিত সকল ব্যবহারকারীকে মেশিন থেকেই ফ্যাক্স পাঠানোর সুযোগ করে দেয়া যাতে ফ্যাক্স পাঠানোর আগে তা প্রিন্ট করতে না হয়।
  • ৫০০০ ডলার মূল্যের সিসকো রাউটার এর বদলে একটি ফ্রি ল্যান এবং ওয়ান রাউটার স্থাপন করা
  • কেন্দ্রীয়ভাবে নেটওয়ার্ক এবং সিস্টেম এর কার্যাবলী পর্যবেক্ষনের জন্য Syslog সার্ভার স্থাপন করা।
  • IDS (Intrusion Detection Systems) স্থাপনের মাধ্যমে ইন্টারনেট থেকে আগত হ্যাকিং ও বিভিন্ন ধরনের আক্রমন প্রতিহত করা।
ডস সদৃশ শেল স্ক্রিপ্টিং/কমান্ড
ডস এ যেখানে মাত্র একটি-ই ক্যারেক্টার নির্ভর ইন্টারফেস আছে সেখানে লিনাক্স(ইউনিক্স) এ আছে বেশ কয়েকটি । এদেরকে ইন্টারপ্রেটার এর বদলে শেল বলা হয়ে থাকে যদিও তারা ইন্টারপ্রেটার এর কাজই করে থাকে। ইউনিক্স এর মোট ৩টি শেল আছে যথাঃ C, Korn, এবং Bourne।

লিনাক্স এ উপরোক্ত তিনটি শেল এর নিজস্ব ভার্সন ছাড়াও আরো কয়েকটি শেল রয়েছে। "Bash", বা Bourne-Again Shell হচ্ছে বেশীরভাগ লিনাক্সের ডিফল্ট শেল কারন এটিতে Bourne এবং Korn শেলের বেশীর ভাগ ফিচারই রয়েছে।

লিনাক্স/ইউনিক্স শেলগুলির নিজস্ব প্রম্পট রয়েছে। যখন আপনি একটি শেল ওপেন করবেন তখন % অথবা $ এর যেকোন একটি দেখতে পাবেন যেটি শেল এর প্রকারভেদ কে নির্দেশ করে। যখন রুট হিসেবে লগইন করবেন তখন আরো একটি প্রম্পট পাবেন যেটিতে # চিহ্ন দেখা যায়। "root" হচ্ছে লিনাক্স/ইউনিক্স এর সবচেয়ে শক্তিশালী ব্যবহারকারী যেটি খানিকটা উইন্ডোজ এর এ্যাডমিনিস্ট্রেটর একাউন্ট অথবা নোভেল এর সুপারভাইজার এর মত।

ডসে যেভাবে dir এবং copy কমান্ড দেয়া হয় ঠিক একইভাবে লিনাক্সের শেল প্রম্পটে ls এবং cp কমান্ড দেয়া যায়।

উইন্ডোজ ৩.১ অপারেটিং সিস্টেমে যেভাবে ডস বেজড গ্রাফিক্যাল ইউজার ইন্টারফেস(GUI) ছিল একইভাবে লিনাক্সে বেশ কয়েকটি গ্রাফিক্যাল ইন্টারফেস পাওয়া যায়। সবচেয়ে বেশী ব্যবহৃত GUI হচ্ছে নোম/জিনোম (Gnome)। কেডিই(KDE) হচ্ছে আরেকটি জনপ্রিয় গ্রাফিক্যাল ইন্টারফেস। আপনি ব্যবহারের জন্য যেকোন একটি ইনস্টল করতে পারেন আপনার নিজস্ব পছন্দ অনুযায়ী। ইন্টারনেটে লিনাক্সের জন্য কোন প্রোগ্রাম খুজতে গেলে দেখবেন যে, প্রায় প্রোগ্রাম এর নামটি G অথবা K অক্ষর দিয়ে শুরু করা হয়েছে যেমন Gpad - যার অর্থ প্রোগ্রামটি জিনোম ইন্টারফেস এর জন্য তৈরী।

আবার কিছু প্রোগ্রাম দেখতে পাবেন যেগুলির নাম শুরু হয়েছে X দিয়ে যেটি মূলত X11, এক্স উইন্ডোজ অথবা এক্স প্রোগ্রামকে নির্দেশ করে। এর কারন হল লিনাক্স/ইউনিক্স এ গ্রাফিক্যাল ইন্টারফেসটি কিছুটা জটিল প্রসেস এ কাজ করে থাকে। এক্স সার্ভার নামে একটি সফটওয়্যারই মূলত গ্রাফিকস সমূহ তৈরী করে থাকে এবং আরেকটি ভিন্ন ডেস্কটপ ম্যানেজার-(কেডিই/জিনোম)- গ্রাফিক্স কে কিভাবে পর্দায় প্রদর্শন করা হবে তার ব্যবস্থা করে থাকে। এটি এমনভাবে করা হয় যাতে কেন্দ্রীয়ভাবে সার্ভার গ্রাফিক্স তৈরী করতে পারে এবং ভিন্ন ভিন্ন ওয়ার্কস্টেশন তাদের ডেস্কটপ ম্যানেজার সেটিংস কাস্টমাইজ করার মাধ্যমে গ্রাফিক্স কে প্রদর্শন করতে পারে। একটি সাধারন পিসিতে সার্ভার এবং ডেস্কটপ একই মেশিনে রান করে থাকে। যে সমস্ত প্রোগ্রাম গ্রাফিক্যাল ইন্টারফেসের বদলে ক্যারেক্টার নির্ভর শেল ইন্টারফেস এর জন্য তৈরী করা হয় তাদেরকে ‘কনসোল প্রোগ্রাম’ বলা হয়।


কেন শেল কমান্ড জানা জরুরী?

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

এছাড়া যদি মেশিনের মেমোরী সেভ করতে চান সেক্ষেত্রে গ্রাফিক্যাল ইন্টারফেস বন্ধ রেখে কাজ করতে পারেন কারন এটি প্রায় ৩২ মেগাবাইট মেমোরী ব্যবহার করে থাকে। খুব কম মেমোরীতে একাধিক সার্ভার প্রোগ্রাম চালিয়ে গ্রাফিক্যাল ইন্টারফেসে কাজ করতে থাকলে তা মেশিনকে অনেকসময় স্লো করে ফেলতে পারে।

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


শেল স্ক্রিপ্টিং কি?

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

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

শেল প্রম্পটে যেসব কমান্ড দেয়া যায় সেগুলিকেই একটি শেল স্ক্রিপ্ট ফাইলে লেখা যায় এবং এছাড়া বিভিন্ন কন্ডিশন টেস্ট এবং লজিক ফ্লো কন্ট্রোল এর জন্য কিছু স্ক্রিপ্ট নির্ভর কমান্ড আছে। যখন অন্যান্য অটোমোশন টুলস এর সাথে এগুলি ব্যবহার করবেন তখন অসাধারন কিছু কাজ করা যায় এই শেল স্ক্রিপ্ট ফাইলের মাধ্যমে। আসুন এরকম কয়েকটি কাজ এর বর্ননা দেখে নেয়া যাকঃ
  • cron - একটি নির্দিষ্ট সময় অথবা দিনে কোন শেল স্ক্রিপ্ট এর কমান্ড সমূহ স্বয়ংক্রিয়ভাবে চালানোর জন্য cron শিডিউলার ব্যবহার করা হয়ে থাকে।
  • Perl scripts - একটি শেল স্ক্রিপ্ট এর সাহায্যে কোন পার্ল স্ক্রিপ্ট কে কল করা যায়। পার্ল যদি ও একটি রিপোর্টিং ল্যাঙ্গুয়েজ হিসেবে যাত্রা শুরু করে কিন্তু এটি এখন টেক্সট ফাইলের স্ট্রিং এবং নিউমেরিক্যাল ডাটা নিয়ে কাজ করার জন্য ব্যাপক ক্ষমতাসম্পন্ন।
  • Regular expressions - ব্যবহারকারীর ইনপুট, ইমেইল বার্তা অথবা অন্যান্য কমান্ড এর আউটপুট, স্ক্রিপ্ট অথবা প্রোগ্রাম সমূহের টেক্সট স্ট্রিং নিয়ে কাজ করার (মিল খোজা এবং বদল করা) জন্য রেগুলার এক্সপ্রেশন কমান্ড ব্যবহার করা হয়ে থাকে।
  • Redirection - অন্য কোন ডিভাইস অথবা প্রসেস এ কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের ইনপুট/আউটপুট গুলিকে পাঠানো।
  • Piping - একটি কমান্ড, স্ক্রিপ্ট অথবা প্রোগ্রামের আউটপুটকে অন্য কোন প্রোগ্রামের ইনপুট হিসেবে ব্যবহার করা।
  • Custom programs - কাস্টমাইজ করা কোন কম্পাইলড প্রোগ্রামকে শেল প্রম্পট এর সাহায্যে চালিয়ে কোন সুনির্দিষ্ট কাজ করা। উদাহরনস্বরূপঃ কোন ডাটা ফাইল অথবা হার্ডওয়্যার যেগুলির স্বত্ব সংরক্ষিত তাদের জন্য কোন কমান্ড পরিচালনা করা।

বেশীরভাগ লিনাক্স শেল কমান্ড, ইউটিলিটি এবং প্রোগ্রাম এর জন্য বেশ কিছু অপশন/সুইচ থাকে যেগুলি ঐ প্রোগ্রাম/ কমান্ড এর বিহেভিয়ারকে নিয়ন্ত্রন করে থাকে। এ অপশনগুলিকে যখন স্বয়ংক্রিয়ভাবে ব্যবহার করা যায় কেবল তখনই এগুলি থেকে কাজ আদায় করে নেয়া যায়। এটিকে রিডাইরেকশন এবং পাইপিং এর সাথে যুক্ত করে ব্যবহার করতে পারলে অনেক কাজ সম্পাদনের জন্য এক লাইন কমান্ডই যথেষ্ট।

বেশীরভাগ প্রোগ্রামসমূহের জন্য অতিরিক্ত কিছু কনফিগারেশন ফাইল থাকে যেগুলি তৈরী করে/কাস্টমাইজ করে ঐ প্রোগ্রাম/কমান্ড এর অটোমোশন ক্ষমতা বাড়ানো যায়। উদাহরনস্বরূপ, আপনি এফটিপি শেল কমান্ড এর জন্য .netrc নামক একটি কনফিগারেশন ফাইল তৈরী করলেন যেখানে এফটিপি সার্ভার এ লগইন করা, সার্ভার এবং ফাইল লোকেশনগুলির অবস্থানের তথ্য এবং সেই সাথে কিছু এফটিপি প্রোগ্রাম এর কমান্ড (যেমন get, put, lcd ইত্যাদি) দেয়া আছে যার সাহায্যে স্বয়ংক্রিয়ভাবে ফাইল ট্রান্সফার করতে পারবেন। এই .netrc ফাইলটি ব্যবহারকারীর হোম ডিরেক্টরীতে ডিফল্টভাবে সংরক্ষিত হয় তাই ফাইলটিতে অবশ্যই রিড একসেস বন্ধ করে দিতে হবে কারন তাতে আপনার লগইন করার পাসওয়ার্ড সংরক্ষিত থাকতে পারে।

একটি শেল স্ক্রিপ্টে iptables এর কমান্ড ব্যবহার করে আপনার লিনাক্স সিস্টেমকে একটি প্রক্সি সার্ভার/ফায়ারওয়াল মেশিন এ পরিনত করতে পারেন। এখানে মাত্র কয়েকটি উদাহরন দিয়েছি - এরকম অসংখ্য কাজ স্ক্রিপ্ট এর মাধ্যমে করা সম্ভব।

0 comments:

Post a Comment