লিনাক্স ব্যবহার শুরুর আগে আমি পুরোপুরি উইন্ডোজ ব্যবহার করতাম। যখন লিনাক্স ব্যবহার শুরু করলাম এটি অন্যান্য নতুন ধারনার মত প্রথম শুরু ছিল যার সাথে উইন্ডোজের খুব কমই সাদৃশ্য ছিল।
প্রথম দিকে যে বিষয়টি আমার দৃষ্টি আকর্ষন করেছিল তা হচ্ছে লিনাক্সে কোন ভাইরাস নেই – যেটি ছিল উইন্ডোজ থেকে পুরোপুরি ভিন্ন একটি বিষয়। আমি এ ব্যাপারে বরাবরই আগ্রহী ছিলাম জানতে যে, কিভাবে এটি সম্ভব? সর্বোপরি, উইন্ডোজ ব্যবহারকারীরা যেখানে প্লাবনের মত আক্রান্ত হচ্ছে সেখানে লিনাক্স কিভাবে জাদুর মত কাজ করে? অপরিহার্যভাবেই, আমি এর উত্তর খোজা শুরু করলাম এবং দেখতে পেলাম এটি কিছুটা বিতর্কিত বিষয় ও বটে। কারো মতে লিনাক্সের মার্কেটটি খুবই ছোট তাই ভাইরাস নির্মাতাদের জন্য এ প্লাটফর্মটি মোটেও আকর্ষনীয় নয়। আবার কেউ কেউ বলেন এটি লিনাক্সের বৈচিত্রতা এবং বিভিন্নতার মধ্যেই নিহিত (অগনিত ডিস্ট্রোসমূহ, কোন একীভূত প্যাকেজিং সিস্টেম না থাকা ইত্যাদি)। সবশেষে, এমন কিছু মানুষ ও রয়েছেন যারা দাবী করেন লিনাক্স পুরোপুরি ভাইরাস প্রতিরোধী এবং বাকীরা একেবারেই অজ্ঞ তারা তাদের দাবীর বিষয়ে যা বলছেন।
ঘটনাক্রমে, আমি লিনাক্সের এ ভাইরাস প্রতিরোধীর বিষয়ে সন্দেহ না করার কোন কারন খুজে পাইনি, তাই আমি আরও পর্যবেক্ষন করতে থাকলাম এবং যদিও এ ধারনাটি সাধারনভাবে প্রচলিত ছিল। আমার অভিজ্ঞতা হল যে, আমার মত নতুন লিনাক্স ব্যবহারকারীরা মনে করে থাকেন- কোন ভাইরাস না থাকার অর্থ হচ্ছে কোন নিরাপত্তা সমস্যা না থাকা। আমার বিশ্বাস এটির মূল কারন নিহিত আছে ভাইরাস শব্দটির যথার্থ এবং উপযুক্ত ব্যবহারের অসচেতনতায়। এটি যাবতীয় সব ধরনের ম্যালওয়ারের সমার্থক হয়ে দাড়িয়েছে।
এ পোস্টে আমি ভাইরাস এবং লিনাক্স সিকিউরিটি নিয়ে কিছু পূর্বকথা আলোচনা করবো যেটি সম্ভাব্য অনেক বাতিল এবং ভুল ধারনাগুলিকে স্পষ্ট করে তুলে ধরবে।
ভাইরাস কি?
প্রথমেই বলে নিই, এটি সত্য যে, লিনাক্সে সে রকম কোন ভাইরাস নেই। এ পর্যন্ত ঠিক আছে, তবে আমরা যতক্ষন না জানছি ভাইরাস বলতে কি বোঝায় ততক্ষন পর্যন্ত এটি খুব একটা গুরুত্বপূর্ন অর্থ বহন করে না। উইকিপিডিয়ার দেয়া তথ্য অনুযায়ী-
"A computer virus is a program that can copy itself and infect a computer. The term "virus" is also commonly but erroneously used to refer to other types of malware, adware, and spyware programs that do not have the reproductive ability. A true virus can only spread from one computer to another (in some form of executable code) when its host is taken to the target computer"
অর্থ- কম্পিউটার ভাইরাস হল একটি প্রোগ্রাম যা নিজেই নিজের অনুলিপি তৈরি করতে পারে ও কোন কম্পিউটারকে আক্রান্ত করতে পারে। ভাইরাস শব্দটিকে সাধারনত বেশীরভাগ সময় ম্যালওয়ার, এ্যাডওয়্যার এবং স্পাইওয়্যার এর সমর্থক হিসেবে উল্লেখ করা হয় যাদের এ ধরনের পূনরুৎপাদনমূলক বৈশিষ্ট্য নেই। একটি সত্যিকারের ভাইরাস (কোন এক ধরনের এক্সিকিউটেবল কোড) এক কম্পিউটার থেকে অন্য কম্পিউটারে তখনই ছড়িয়ে পড়তে পারে যখন এর হোস্টকে (যে মেশিন ভাইরাস থাকে) টার্গেট কম্পিউটারের সংস্পর্শে নিয়ে আসা হয়।
এ সংজ্ঞাটি আগেই বেশ কিছু ধারনাকে স্পষ্ট করেছে। তার মধ্যে গুরুত্বপূর্ন ধারনা গুলি হলঃ
- একটি ভাইরাসকে অবশ্যই এক্সিকিউটেবল প্রোগ্রাম হতে হবে।
- একটি ভাইরাসকে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই/অজ্ঞাতে রান করার এবং অনুলিপি করার ক্ষমতা থাকতে হবে।
- একটি সত্যিকারের ভাইরাসকে ছড়ানোর জন্য অবশ্যই এর হোস্টকে ব্যবহার করেই টার্গেট মেশিনে আক্রমন চালাতে হবে।
এখন, আপনি যদি অনেক ধরনের ম্যালওয়্যারের নাম শুনে থাকেন তবে দ্রুতই উপলব্ধি করতে পারবেন যে এ সংজ্ঞা অনুযায়ী মাত্র কয়েকটিকে এর আওতায় ফেলা যেতে পারে। এ শ্রেনীবিভাগটি আমাদের মত লিনাক্স ব্যবহারকারীগনের উপলব্ধিতে নাও আসতে পারে। এ পোস্টের শেষে আমি সংক্ষেপে আমাদের যে সব বিষয়ে সচেতন হওয়া প্রয়োজন সেটি নিয়ে আলোচনা করবো, তার আগে দেখা যাক কেন ভাইরাস আমাদের জন্য কোন সমস্যা নয়।
ভাইরাসের মৌলিক বিষয়সমূহ এবং লিনাক্সের গঠনকাঠামো
এই মাত্র আমরা যা শিখলাম এবং এর সংজ্ঞায় যেটি সব থেকে গুরুত্বপূর্ন, একটি ভাইরাসকে নিজে নিজেই তার কাজ সম্পাদনে সমর্থ হতে হবে। অন্য কথায়, ব্যবহারকারীর হস্তক্ষেপ প্রয়োজন নেই এবং ভাইরাসের কার্যকলাপ অদৃশ্য থাকে। দু’পদ্ধতিতে ভাইরাস নিজেকে কপি করতে পারেঃ
১নং পদ্ধতি: সিস্টেম এক্সিকিউটেবল ফাইলসমূহে নিজস্ব কোড যুক্ত করে
ইউনিক্সের একটি সফল উত্তরাধিকার হিসেবে লিনাক্স এমন একটি ফাইল ব্যবস্থাপনা সমর্থন করে যেটি মৌলিকভাবে কোন ফাইলের মালিকানা এবং অধিকার সংরক্ষন করে। আরো সহজে বলা যায় যে, বাস্তবে এটি এভাবে কাজ করে থাকে-
১। যদি কোন ব্যবহারকারী লিনাক্সে একটি ফাইল তৈরী, কপি অথবা ডাউনলোড করে তবে ঐ ফাইলটি উক্ত ব্যবহারকারী এবং তার গ্রুপ কর্তৃক মালিকানাভুক্ত হবে এবং এটির এক্সিকিউট করার ক্ষমতা থাকে না। অতএব, এটি নিজেকে এক্সিকিউট করতে পারে না (এর কিছু বাস্তব ব্যতিক্রম রয়েছে যা আমরা পরে আলোচনা করবো)।
২। যদি কোন ব্যবহারকারী ভুলবশতঃ কোন খারাপ কোডকে বিশ্বাস করে এক্সিকিউট করার অনুমতি দিয়েও দেয় তারপরও এটি উক্ত ব্যবহারকারীর প্রবেশের অনুমতি আছে এমন স্থানেই কাজ করবে যেটি সাধারনতঃ উক্ত ব্যবহারকারীর হোম ফোল্ডারে সীমাবদ্ধ। সুতরাং যদি কোন ব্যবহারকারী এমন ধরনের সমস্যায় পড়েন তবে আরেকটি একাউন্ট তৈরী করে গুরুত্বপূর্ন ফাইলগুলিকে উক্ত একাউন্টে স্থানান্তর করে নিলেই সমস্যার সহজ সমাধান পাবেন। এখানে লক্ষ্য করুন আমরা ভাইরাস নিয়ে কোন আলোচনা করছি না, এটির কার্যকারিতার জন্য ব্যবহারকারীর হস্তক্ষেপ প্রয়োজন। বাস্তব ক্ষেত্রে, একটি ভাইরাসের অন্য কোন এ্যাপ্লিকেশনের উপর কোন প্রভাব নেই যতক্ষন না এটি সুপার ইউজার/ রুট ব্যবহারকারী কর্তৃক চালনা করা হচ্ছে।
রুট/সুপার ইউজার বেশীরভাগ লিনাক্সে অকার্যকর অবস্থায় পাওয়া যায়। যদি না থাকে, তবে ঘনঘন বার্তা প্রদর্শন হতে থাকে লগইন ও ব্যবহার করার সময় এবং অনুৎসাহিত করার চেষ্টা করে থাকে এটি না করার জন্য। প্রকৃতপক্ষে, আপনি যতক্ষন সিস্টেম এ্যাডমিন এর কাজ না করছেন ততক্ষন রুট ইউজার হিসেবে লগইন না করেও ডেস্কটপ এর প্রায় সকল কাজই করতে পারবেন।
তাই, অনুগ্রহপূর্বক রুট একাউন্ট ব্যবহার করবেন না যতক্ষন না প্রয়োজন হয়।
২নং পদ্ধতি: এক্সিকিউশন এর সময়ে অন্য কোন প্রসেসের মেমোরীর সাথে সংযুক্ত করা
লিনাক্স ইনটেল এর এক্স'৮৬ স্থাপত্যের উপর চলে (এএমডি ৬৪-বিট প্রকৃতপক্ষে ইনটেল এক্স'৮৬ এর একটি এক্সটেনশত মাত্র), তাই লিনাক্স কিভাবে এটিকে ব্যবহার করে থাকে তা বোঝাটা বেশ গুরুত্বপূর্ন। এক্স'৮৬ স্থাপত্য মূলতঃ চারটি রিং ব্যবহার করে থাকে, যেগুলিকে ০ থেকে ৩ দ্বারা চিহ্নিত করা হয়ে থাকে। লিনাক্স এ রিং-গুলির দুটি ব্যবহার করে থাকে, যথাঃ রিং-০ কার্নেল সিস্টেম কোড এর জন্য এবং রিং-৩ বিভিন্ন ব্যবহারকারীর প্রসেস, এ্যাপ্লিকেশন ইত্যাদির জন্য ব্যবহৃত হয়। এ দু'ধরনের কোডের মিশ্রন লিনাক্সে কখনই ঘটে না, তারা ভিন্ন ধরনের রিং ব্যবহার করে এবং এদের যোগাযোগের জন্য মাত্র একটিই দরজা/গেট রয়েছে। এখানে মূল ব্যাপারটি হচ্ছে একমাত্র কার্নেলই পারে কোন কিছুর পরিবর্তন করতে যাতে ভাইরাস সে সুযোগের সদ্ব্যবহার করতে পারে।
তাই প্রসেসের কোন কোড কার্নেলের কোন কোডকে আক্রান্ত করতে পারে না। এখানে প্রশ্ন আসতে পারে- তাহলে কিভাবে এক প্রসেস অন্য কোন প্রসেসকে আক্রান্ত করে থাকে? হ্যাঁ এখানেও সে একই বাধা পাবে। লিনাক্স কার্নেল প্রতিটি প্রসেসের জন্য পৃথক মেমোরী বরাদ্দ রাখে, যেটি অন্য কোন প্রসেস শেয়ার করতে পারে না। এর ফলে, যদি কোন প্রসেস তার সমস্ত বরাদ্দকৃত মেমোরী স্ক্যান করেও ফেলে, তারপরও সে অন্য কোন প্রসেসের মেমোরী আক্রান্ত করতে পারবে না, এটি হবে তার আওতা বহির্ভূত কাজ। তাই বলা যায় যে, এ পদ্ধতিও কাজ করবে না।
স্পষ্টতই, এখানে অত্যন্ত কারিগরী দিক নিয়ে আলোচনা করা হয়েছে, কিন্তু আমি আশা করি ভাইরাস কেন লিনাক্স ব্যবহারকারীদের জন্য মাথা ব্যথা নয় তা কিছুটা ব্যখ্যা করতে পেরেছি।
অন্যান্য ধরনের ম্যালওয়্যার
ভাইরাস নিয়ে আলোচনা তো অনেক হল, আসুন এবার অন্যান্য এ জাতীয় ক্ষতিকর কোড নিয়ন্ত্রিত প্রোগ্রামসমূহ নিয়ে কথা বলা যাক।
রুটকিটস্
লিনাক্স সহ আরও যতধরনের অপারেটিং সিস্টেম রয়েছে তাদের সবার জন্য, রুটকিট হচ্ছে কার্নেল এর উপর কিছু পরিবর্তন অথবা কোন এ্যাপ্লিকেশন কোডের পরিবর্তন। লিনাক্সের ক্ষেত্রে প্রথমটি সব থেকে গুরুত্বপূর্ন কেননা এটি খুঁজে বের করা অনেক কঠিন, এবং পুরো সিস্টেমকে আক্রান্ত করতে পারে। এর ফলে, সুনির্দিষ্ট এ্যাপ্লিকেশন ব্যবহারের পরও রুটকিটের ধরন খুজে বের করা খুব কঠিন।
ভীত হওয়ার প্রয়োজন নেই, লিনাক্সে একটি কার্যকরী রুটকিট তৈরী করা অত সহজ কাজ নয়। এটি অবশ্যই টার্গেট মেশিনে যে কোড রয়েছে হুবহু সেই কোড দিয়েই তৈরী করতে হবে এবং এর ইনস্টলেশন এর সময় আবার এডমিন এর অনুমতি প্রয়োজন হয়ে থাকে। লিনাক্স ভুবনে অবাধ স্বাধীনতা থাকার কারনে অনেক ধরনের ডিস্ট্রো রয়েছে, রয়েছে বিভিন্ন প্যাকেজিং সিস্টেম। তাই এটি কোন একজনের পক্ষে তৈরী করে ফেলা কঠিন যার প্রভাব হবে ব্যাপক। তাই বলা যায় যে, রুটকিট এর আক্রমন রিপোর্ট করা সম্ভব।
যদি আপনি কোন এক্সিকিউটেবল ফাইল চালিয়ে থাকেন যাকে আপনি বিশ্বাস করেন না এবং সন্দেহ করেন তবে রুটকিট আক্রমনের মুখে পড়তে পারেন অথবা আপনি নিজেই যদি কিছু করতে চান তবে-
যেহেতু রুটকিট সমূহ ভার্চুয়্যালি ডিটেক্ট করা যায় না প্রোগ্রামের রান টাইমের সময়, তাই সবচেয়ে ভাল উপায় হচ্ছে কোন একটি রিমুভেবল ড্রাইভ যেমন- সিডি-রম ড্রাইভ, ইউএসবি পেনড্রাইভ ইত্যাদির কোন একটির সাহায্যে বুট করা। তারপর ব্যবহার করুন CHKROOTKIT অথবা RKHUNTER , যে দুটো লিনাক্স ব্যবহারকারীদের জন্য অন্যতম জনপ্রিয় রুটকিট স্ক্যানার।
ট্রোজানসমূহ
এদেরকে বেশীরভাগ সময় ট্রোজান হর্স হিসেবে আখ্যায়িত করা হয়, এ এপ্লিকেশনসমূহ ব্যবহারকারীকে ধোকা দেয়ার জন্যই তৈরী করা হয়, যেটিকে মনে হয় কোন সেবা প্রদান করছে, কিন্তু যার আড়ালে সে অন্য কারো স্বার্থ সিদ্ধির জন্য দরজা খুলে দেয় যা তাকে দূর থেকে নিয়ন্ত্রন অথবা ব্যক্তিগত তথ্য চুরির কাজে সাহায্য করে থাকে। অন্য কথায়, তারা পাসওয়ার্ড চুরি করতে পারে, গোপনীয় তথ্য চুরি, সফটওয়্যার ইনস্টল, কি স্ট্রোকস লগ করা, মেশিনকে দিয়ে স্প্যাম করানো প্রভৃতি কাজ করে থাকে।
তারপরও এটিকে ব্যবহারকারী কর্তৃক কোন স্বয়ংক্রিয় প্রোগ্রাম চালনার কমান্ড স্থানীয়ভাবে সঞ্চিত করার প্রয়োজন হয় এবং এটির উপর ডাবল ক্লিকের প্রয়োজন হয়, কিন্তু ভেবে দেখুন উইন্ডোজে এটি কত হরহামেশাই ঘটে থাকে, তাই আমি মনে করি এটির উপর বিশেষ নজর রাখা প্রয়োজন।
কিছু ব্যবহারকারী রিপোর্ট করেছেন যে যখন তারা গানোম ডেস্কটপের জন্য আইক্যান্ডির প্যাকেজসমূহ জনপ্রিয় সাইট থেকে ডাউনলোড করেছেন তখন ট্রোজান দ্বারা আক্রান্ত হয়েছেন। প্রকৃতপক্ষে, লিনাক্স ব্যবহারকারীগন এ সমস্ত আক্রমনের সহজ টার্গেট, তাই কমিউটনিটি রিসোর্স থেকে এ জাতীয় কোন প্যাকেজ ডাউনলোড করা খুব বিপদজনক। কমিউটনিটির মাঝে বিশ্বাসের একটি সমন্বিত মাত্রাবস্থা রয়েছে, এবং আমার বিশ্বাস যে এটি সঠিকভাবে বুঝতে না পারাটাও একটি দূর্বলতা। বিশ্বাস করা ভাল, কিন্তু দায়িত্বজ্ঞানহীন হওয়া ভাল নয়।
উপসংহার
আমি মনে করি এ প্রবন্ধ থেকে যে বিষয়টি আমরা আলাদাভাবে মনে রাখতে পারি তা হল লিনাক্স ব্যবহার আপনার কম্পিউটার নিরাপত্তায় অবশ্যই গুরুত্বপূর্ন ভূমিকা রাখতে পারে, কিন্তু অলৌকিক কিছু আশা না করাই ভাল। ভাইরাস কোন সমস্যা নয়, কিন্তু আমরা অবশ্যই উদাসীন হতে পারি না। সতর্ক এবং যত্নবান হন আপনার ব্যক্তিগত ডেটা এবং নিরাপত্তার ব্যাপারে। রুট একাউন্ট ব্যবহার থেকে বিরত থাকুন, অবিশ্বস্ত সূত্র থেকে সফটওয়্যার ব্যবহারে বিরত হোন, কখনই পাসওয়ার্ড শেয়ার করবেন না ... এবং সন্দেহজনক কিছু দেখলে দ্রুত সাড়া দিন।
সূত্রঃ ইন্টারনেট
লিনাক্সকে এ ধরনের নেটওয়ার্কের সাথে খাপ খাওয়াতে হলে সাম্বা (samba) নামে একটি প্যাকেজ গুরুত্বপূর্ন ভুমিকা পালন করে থাকে। এটির সাহায্যে লিনাক্স মেশিন উইন্ডোজ মেশিনের সাথে যোগাযোগ রক্ষা করা থেকে শুরু করে বিভিন্ন হার্ডওয়্যার ডিভাইস শেয়ারিং (যেমনঃ প্রিন্টার, স্ক্যানার, সিডি/ডিভিডি রম) এর কাজ করে থাকে। উইন্ডোজ এর নিজস্ব নেটওয়ার্কিং প্রটোকল হচ্ছে SMB। সাম্বা লিনাক্স পরিবেশে এ প্রটোকল বাস্তবায়ন করে থাকে তাই লিনাক্স মেশিন খুব সহজেই উইন্ডোজ মেশিনকে চিনতে পারে। এছাড়াও সাম্বার সাহায্যে লিনাক্স মেশিনকে উইন্ডোজ নেটওয়ার্কের WINS Server বা ডোমেইন কন্ট্রোলার হিসেবে রূপান্তরিত করা যায়। তবে আমরা এখানে একটি পিয়ার টু পিয়ার নেটওয়ার্কিং পরিবেশে লিনাক্সকে কিভাবে কাজে লাগানো যায় তা দেখব অর্থাৎ এখানে সব মেশিন একটি নির্দিষ্ট ওয়ার্কগ্রুপের অধীনে একে অন্যের সাথে যোগাযোগ রক্ষা করবে। এ ধরনের নেটওয়ার্কিং দিয়ে সাধারন অফিস বা বাসাবাড়িতে কাজ করা হয়ে থাকে।
আধুনিক কাস্টোমাইজড ডিস্ট্রোগুলিতে সাম্বা সাধারনত ইনস্টল করা থাকে। এটি ইনস্টল করা আছে কিনা তা জানার জন্য কমান্ড দিনঃ
apt-cache search samba
এ কমান্ডটি দিলে একটি লম্বা লিস্ট দেখতে পাবেন। তবে ঘাবড়ানোর কিছু নেই। apt যেহেতু ডিপেনডেন্সী নিজেই মেইনটেইন করে থাকে তাই সাম্বা ইনস্টলের জন্য শুধুমাত্র samba প্যাকেজটি ইনস্টল করাই যথেষ্ট। অন্যান্য প্যাকেজ যেমন samba-common নিজে থেকেই ইনস্টল হয়ে যাবে। তাহলে সাম্বা ইনস্টলের জন্য কমান্ডটি হবে নিম্নরূপঃ
apt-get install samba
সাম্বাকে ডেমন হিসেবে ব্যাকগ্রাউন্ডে রান করাতে চাইলে সেটির স্ক্রিপ্ট পাওয়া যাবে /etc/init.d/samba- এখানে। সাম্বার জন্য কনফিগারেশন ফাইল পাওয়া যাবে নিচের ডিরেক্টরীতেঃ
/etc/samba
সাম্বার প্রধান কনফিগারেশন ফাইলটি হচ্ছে smb.conf যেটি উপরোক্ত ডিরেক্টরী বা ফোল্ডারে থাকে। সাম্বা ফাইল-প্রিন্ট শেয়ারিং অথবা ডোমেইন কন্ট্রোলার যেটি হিসেবেই কাজ করুন না কেন তা এ ফাইলের বিভিন্ন অপশনের মাধ্যমেই নির্ধারিত হয়ে থাকে।
smb.conf টিতে মোট ছয়টি সেকশন আছে। প্রতিটি সেকশনের কাজই ভিন্ন ভিন্ন। আসুন এগুলি প্রথমে দেখে নেই।
1. [global] - এ সেকশনে অনেকগুলি সাব-সেকশন আছে যা বিভিন্ন নেটওয়ার্ক রিলেটেড কাজ যেমন- domain/workgroup নাম, WINS, প্রিন্ট শেয়ারিং সেটিংস, অথেনটিকেশন, লগিং এন্ড একাউন্টিং ইত্যাদি করা হয়ে থাকে।
2. [homes] - ব্যবহারকারীর নিজস্ব হোম ডিরেক্টরী/ফোল্ডার শেয়ারিং করে থাকে অন্য মেশিনের সাথে।
3. [netlogon] - এটি সাধারনতঃ কমেন্ট চিহ্নের সাহায্যে বন্ধ করা থাকে যা সাম্বা সার্ভারকে ডোমেইন কন্ট্রোলার হিসেবে সেটআপ করে থাকে।
4. [printers] - লোকাল প্রিন্টার সমূহকে অন্য মেশিনের সাথে শেয়ারিং করার জন্য
5. [print$] - to set up a share for Windows printer drivers
6. [cdrom] - commented out by default, to optionally share the server's CD-ROM drive
প্রত্যেকটি সেকশন কিছু স্টেটমেন্টের সমষ্টি যার ফরম্যাট নিম্নরূপঃ
option = value
একটি সাধারন ফাইল ও প্রিন্ট শেয়ারিং
এখন আমরা খুব সাধারন একটি ফাইল ও প্রিন্ট শেয়ারিং কনফিগারেশন করবো সাম্বা প্যাকেজের সাহায্যে। এ ধরনের শেয়ারিং করতে কোন পাসওয়ার্ড প্রয়োজন হবে না এবং একজন ব্যবহারকারী যেকোন মেশিনের ফাইল, ফোল্ডার ও প্রিন্টার যা শেয়ার করা আছে তা নির্বিঘ্নে ব্যবহার করতে পারবেন। হোম এবং স্মল অফিস নেটওয়ার্কিং এর ক্ষেত্রে এ ধরনের শেয়ারিং বেশী ব্যবহৃত হয়। এজন্য সাম্বার কনফিগারেশন ফাইলটি হবে নিম্নরূপঃ
[global]
panic action = /usr/share/samba/panic-action %d
workgroup = BANK
server string = %h server (Samba %v)
hosts allow = 192.168.0. 192.168.1. 192.168.2. 192.168.79. 127. 10.0.0. 10.1.1.
security = share
map to guest = Bad User
;For Printer Sharing
printing = cups
printcap name = cups
printer name = hp_zahid
use client driver = no
;*******************section Homes*****************
[Shared]
path = /home/zahid/Shared
guest ok = yes
read only = no
[Music]
path = /home/zahid/Music
guest ok = yes
read only = no
[homes]
path = /home/zahid
guest ok = yes
comment = Home Directories
read only = no
;*******************section printers*****************
[printers]
comment = All Printers
path = /tmp
printable = yes
guest ok = yes
create mask = 0777
browseable = No
[hp_zahid]
printable = yes
path = /tmp
guest ok = yes
comment = hp_zahid
;************************section other folders****************
[My Documents]
guest ok = yes
path = /mnt/hda5/My Documents/
[Soft]
guest ok = yes
path = /mnt/hda6/Soft
প্রথমেই global সেকশন-
workgroup = BANK - আপনার কম্পিউটার যে নেটওয়ার্কের অধীনে আছে তার ওয়ার্কগ্রুপের (BANK) নাম।
hosts allow - এ অপশনে নেটওয়ার্কের যে সব মেশিন সাম্বা ব্যবহার করতে পারবে তাদের আই.পি নাম্বার এর তালিকা। কোন নির্দিষ্ট মেশিনকে অনুমতি দিতে চাইলে তার আই.পি নম্বর (১৯২.১৬৮.২.৩) দিতে হবে। আর যদি ওয়ার্কগ্রুপের সবাইকে পারমিশন দিতে চান তাহলে উক্ত ওয়ার্কগ্রুপের প্রথম তিনটি অক্টেট নম্বর দিতে হবে (১৯২.১৬৮.২.)। প্রতিটি এন্ট্রির পর একটি স্পেস দিতে হবে।
security = share এটি একটি গুরুত্বপূর্ন অপশন। এখানে share অপশন দিলে পাসওয়ার্ড ছাড়াই যে কেউ সাম্বা ব্যবহার করতে পারবে। আর যদি এখানে user দেয়া হয় তাহলে পাসওয়ার্ড ছাড়া সাম্বার বিভিন্ন শেয়ারিং ব্যবহার করা যাবে না। বর্তমান উদাহরনে যেহেতু আমরা একটি বেসিক নেটওয়ার্ক সেটআপ করতে যাচ্ছি যেখানে সবাই পাসওয়ার্ড ছাড়াই প্রিন্টার, ফোল্ডার শেয়ার করবেন তাই এটি আমরা share অপশন হিসেবে সেট করব।
map to guest = bad user সাম্বা যখন পাসওয়ার্ড প্রদান/ অথেনটিকেশন ছাড়া ব্যবহার করা হবে তখন গেস্ট হিসেবে কোন একাউন্ট সিস্টেম ব্যবহার করবে তা এখানে দিয়ে দেয়া হয়।
printing = cups এ অপশনটির সাহায্যে প্রিন্টার হিসেবে সাম্বা কি ব্যবহার করবে তা বলে দেয়া হয়। cups (common unix printing system)বেশীরভাগ লিনাক্সের ক্ষেত্রে প্রিন্টিং এর কাজে ব্যবহৃত হয়।cups ইনস্টল আছে কিনা তা দেখার জন্য ব্রাউজার খুলে এ্যাড্রেস বারে লিখুন- http://localhost:631। যদি সফলভাবে কাপস এর পেজ দেখা যায় তবে এখানে বিভিন্ন কাজ গ্রাফিক্যালি করতে পারবেন। এছাড়াও এখানে bsd ব্যবহার করা যায়।
printcap name = cups এ অপশনটিও প্রিন্টার এর জন্য ব্যবহৃত হয়।
printer name = hp_zahid এখানে যে প্রিন্টার এর নাম থাকবে তা শেয়ারিং এর সময় দেখা যাবে।এ অপশনটি Add Printer Wizard থেকে কোন প্রিন্টার সেটআপ করা হলে তবেই পাওয়া যাবে।
use client driver = no প্রিন্টার ইনস্টলের সময় কোন ড্রাইভার ব্যবহার করবে তা বলে দেয়া হয়। যদি no এর বদলে Yes থাকে তবে প্রিন্টার শেয়ারিং এর সময় প্রিন্টার মেশিন ছাড়া ও অন্য লোকেশন থেকে ড্রাইভার ইনস্টল করা যায়।
এবার আমরা [shared], [music], [home], [My Documents] & [Soft] সেকশনগুলি আলোচনা করবো। এগুলি একেকটি ফোল্ডার শেয়ার এর জন্য ব্যবহৃত হবে।
[home] - ব্রাকেটের মধ্যে যে নাম থাকবে শেয়ারিং এর সময় ফোল্ডার হিসেবে সে নামই দেখা যাবে।
path = /home/zahid - এখানে যে ফোল্ডার শেয়ারিং করবেন তার পাথ/লোকেশন দেয়া থাকে।
guest ok = yes - এ অপশনের সাহায্যে কোন গেস্ট একাউন্ট দিয়ে উক্ত সাম্বা সেট আপের ফাইল, ফোল্ডার ব্যবহার করা যাবে কিনা তা বলে দেয়া হয়।
এবার প্রিন্টার এর জন্য আরো দুটি সাব-সেকশন [printers] এবং [hp_zahid] নিয়ে আলোচনা করবো। প্রিন্টার এর জন্য কয়েকটি অপশন আমরা আগেই [global] সেকশনে দিয়ে এসেছি। বাকীগুলি এ দুটি সেকশনে দেয়া আছে।
Comment = All Printers - শেয়ারিং হিসেবে প্রিন্টার এর লিংকে এ নাম দেখা যাবে।
Path = /tmp - এখানে প্রিন্টার তার টেম্পরারি ফাইল হিসেবে যে ফোল্ডার ব্যবহার করবে তার লোকেশন দেয়া হয়।
Printable = yes - এটি যদি no দেয়া হয় তবে প্রিন্টার দেখা গেলেও তা দিয়ে প্রিন্ট করা যাবে না। তাই শেয়ারিং এর জন্য এটি অবশ্যই yes রাখতে হবে।
Guest ok = yes - এর কাজ আগের ফোল্ডারের বিবরনের মতই।
Browseable = no - এটি no দেয়া থাকলে এক্সপ্লোরারের সাহায্যে প্রিন্টার দেখা যাবে না। তবে শেয়ার করা যাবে।
[hp_zahid] - এ ধরনের আলাদা সেকশন থাকে যদি লোকাল কোন প্রিন্টারকে সুনির্দিষ্টভাবে শেয়ার করার প্রয়োজন হয়। এর কাজও আগের মতই। এ সেকশনটি সাধারনতঃ কোন প্রিন্টার লোকালি ইনস্টল করা হলে স্বয়ংক্রিয়ভাবে কনফিগারেশন ফাইলে যুক্ত হয়ে থাকে। যেমনঃ কেডিইতে Add Printer Wizard এর সাহায্যে কোন প্রিন্টার লিনাক্সে ইনস্টল করা হলে এরকম আলাদা একটি সেকশন যুক্ত হবে।
উপরে আমরা যে কনফিগারেশন ফাইলটি দেখলাম সেটি এডিট করার জন্য ভি-এডিটর বা এ জাতীয় কোন টেক্সট এডিটর ব্যবহার করুন। এর জন্য কমান্ড হবেঃ vi /etc/samba/smb.conf । যদি অন্য কোন এডিটর ব্যবহার করতে চান তবে vi এর স্থলে তার নাম দিন যেমনঃ gedit, kedit etc.। এভাবে একটি লিনাক্স মেশিন থেকে উইন্ডোজ মেশিনে ফোল্ডার ও প্রিন্টার শেয়ারিং করা যায়। উপরের কনফিগারেশন ফাইলটিতে বেশ কয়েকটি ফোল্ডার শেয়ারিং এর জন্য এন্ট্রি আছে। এখানে আপনার প্রয়োজনমত যে কয়টি ফোল্ডার শেয়ার করা দরকার শুধুমাত্র সে কয়টি ফোল্ডার শেয়ার করুন।
সবার শেষে কনফিগারেশন ফাইল এডিট করার পর সাম্বা রি-স্টার্ট করতে হবে যাতে পরিবর্তনসমূহ কার্যকরী হয়। এজন্য কমান্ড দিনঃ /etc/init.d/samba restart
উইন্ডোজ মেশিন থেকে লিনাক্স মেশিনের ফোল্ডার ও প্রিন্টার শেয়ারিং
সাম্বা ইনস্টল ও কনফিগারেশন করার পর আমরা এখন উইন্ডোজ মেশিন থেকে কিভাবে লিনাক্স মেশিনকে শেয়ার করা যায় তা দেখব।এটি করার পর লিনাক্স মেশিন থেকে কিভাবে উইন্ডোজ মেশিনের রিসোর্স শেয়ার করা যায় তা দেখব।
প্রথমে উইন্ডোজ মেশিন থেকে লিনাক্স মেশিনে প্রবেশ করার জন্য উইন্ডোজের স্টার্ট মেনু থেকে রান মেনুতে ক্লিক করুন। তারপর লিনাক্স মেশিনের আইপি (যেমনঃ //১৯২.১৬৮.২.৩) টাইপ করুন অথবা //hostname। তারপর লিনাক্সের প্রিন্টারটিতে রাইট মাউস ক্লিক করে Connect ক্লিক করুন। ড্রাইভার ইনস্টলের জন্য ডায়ালগ বক্স অনুসরন করুন।
শেয়ারড ফোল্ডারগুলি হোস্ট নেম/মেশিনের আইপি প্রবেশ করালেই উইন্ডোজ এক্সপ্লোরারে দেখা যাবে।
লিনাক্স মেশিন থেকে উইন্ডোজ মেশিনের ফোল্ডার ও প্রিন্টার শেয়ারিং
লিনাক্স মেশিন থেকে কোন উইন্ডোজ মেশিনে শেয়ার করা ফোল্ডার দেখার জন্য ডিফল্ট ফাইল ব্রাউজার যেমনঃ konqueror, nautilus খুলুন। তারপর এ্যাড্রেস বারে লিখুনঃ smb://hostname যেখানে হোস্টনেম এর জায়গায় মেশিনের আইপি নম্বর (192.168.2.3)অথবা হোস্টনেম (mepis1, pc1 etc)ইত্যাদি দিতে হবে। তারপর এন্টার কি প্রেস করলেই ফোল্ডার সমূহ দেখতে পাবেন।
লিনাক্স মেশিন থেকে উইন্ডোজ মেশিনে ইনস্টলকৃত প্রিন্টার শেয়ারিং এর জন্য লিনাক্স এর নিজস্ব Add Printer Wizard ব্যবহার করুন।

যেমন উপরের চিত্রে কেডিই ইন্টারফেসের Add Printer Wizard ডায়ালগ বক্স দেখা যাচ্ছে। এখানে SMB shared printer (Windows) সিলেক্ট করে Next বাটনে ক্লিক করি। তারপর ইউজার আইডেন্টিফিকেশন বক্স আসলে Anonymous সিলেক্ট করি। তারপর নেক্সট বাটনে ক্লিক করলে নিচের চিত্রের মত সবকিছু বসিয়ে আবার নেক্সট ক্লিক করি।

তবে স্ক্যান বাটনে ক্লিক করেও লোকাল প্রিন্টার খুজে বের করা যায় উইন্ডোজ মেশিনের মত। কিন্তু মাঝে মাঝে সমস্যা হয় ডিটেক্ট করতে এজন্য উপরের মত নিজ হাতে কনফিগার করে দিলেই ভাল। পরের ডায়ালগ বক্সে প্রিন্টার মডেল (Manufacturer, Model) নির্বাচন করে আবার নেক্সট বাটনে ক্লিক করি। ড্রাইভার সিলেকশন বক্সে রিকমেন্ডেড ড্রাইভার সিলেক্ট করে পরবর্তী ধাপে যাই। পরবর্তীতে একইভাবে ব্যানার, কোটা, ইউজার একসেস কন্ট্রোল ইত্যাদি সিলেক্ট করে কাজ শেষ করি। সর্বশেষ ধাপে প্রিন্টার এর একটি নাম যেমন- hp_bank ইত্যাদি দিয়ে দেই। তারপর Finish বাটনে ক্লিক করে কাজ শেষ করি।
ট্রাবলশুটিং
সাম্বার সাহায্যে লিনাক্স ও উইন্ডোজ মেশিনের মধ্যে নেটওয়ার্কিং করার সময় বেশ কিছু সমস্যার সম্মুখীন হতে হয়। সেগুলি কিভাবে সমাধান করতে হয় তা এখন দেখব।
১. প্রথমেই দেখুন /etc/samba/smb.conf ফাইলের hosts allow অপশনে আপনার মেশিনের নেটওয়ার্ক/ আইপিকে অনুমতি দেয়া আছে কিনা? দেয়া না থাকলে এখানে মেশিনের আইপি যেমনঃ ১৯২.১৬৮.২.৭৫ অথবা সম্পূর্ন নেটওয়ার্ক (১৯২.১৬৮.২.) কে যুক্ত করুন।
২. অনেক সময় ফায়ারওয়্যাল এনাবল করা থাকলে সাম্বা কাজ করতে পারে না। এজন্য লিনাক্স মেশিনের ফায়ারওয়্যাল (গার্ডডগ, ফায়ারস্টার্টার) বন্ধ করে নিন। প্রয়োজনে উইন্ডোজ মেশিনের ফায়ারওয়্যাল ও বন্ধ করে নিন। ফায়ারওয়্যাল চালু রাখতে চাইলে সাম্বার জন্য ১৩৭, ১৩৮, ১৩৯ নম্বর পোর্ট খুলে রাখুন। এজন্য কোন গ্র্যাফিক্যাল টুলস যেমনঃ ওয়েবমিন, গার্ডডগ, ফায়ারস্টার্টার ইত্যাদি ব্যবহার করতে পারেন।
৩. ifconfig -a কমান্ড দিয়ে দেখুন সাম্বার ব্রডকাস্ট এ্যাড্রেস এবং অন্য ক্লায়েন্টদের ব্রডকাস্ট এ্যাড্রেস একই আছে কিনা?
৪. smbclient -L localhost কমান্ড দিয়ে দেখুন সাম্বা সার্ভিস চালু আছে কিনা?
৫. testparm – সাম্বা রিস্টার্টের আগে এ কমান্ড দিয়ে দেখুন সাম্বার কনফিগারেশন ফাইল ঠিক আছে কিনা?
৬. smbstatus – কমান্ড দিয়ে দেখুন সাম্বার স্ট্যাটাস
৭. http://localhost:631 পাথ ব্রাউজারে লিখে এন্টার দিন। তারপর কাপসের জন্য পারমিশন দিয়ে দিন যাতে অন্য মেশিন থেকেও কাপসকে সাম্বার সাহায্যে শেয়ার করা যায়।
৮. যেকোন প্রিন্টার সেকশনের জন্য /etc/samba/smb.conf ফাইলে দেখুন path = /tmp অথবা path = /var/spool/samba এর মত কোন ভ্যালিড পাথ আছে কিনা?
৯. যদি আপনার মেশিনে দুটি নেটওয়ার্ক কার্ড থাকে তাহলে [global] সেকশনে interfaces = 127.0.0.1, 192.168.2.75/24 এবং bind interfaces = yes লাইন দুটি যোগ করে নিন।
১০. প্রিন্টার শেয়ারিং এ সমস্যা হলে [global] সেকশনে দেখুন printing = cups এবং printcap = cups লাইন দুটি আছে কিনা? যদি না থাকে তাহলে যোগ করে নিন।