Linux Archives - To Learn Team https://tolearnteam.com/tag/linux/ Learn about Everything Online Sat, 08 Aug 2026 05:02:05 +0000 en-US hourly 1 https://wordpress.org/?v=7.1.2 https://tolearnteam.com/wp-content/uploads/2026/07/cropped-Logo-32x32.png Linux Archives - To Learn Team https://tolearnteam.com/tag/linux/ 32 32 SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ https://tolearnteam.com/sqlite-installation-windows-linux-mac-bangla/ Thu, 06 Aug 2026 17:50:40 +0000 http://tolearnteam.com/?p=2110 SQLite-এর সবচেয়ে বড় বৈশিষ্ট্য হলো এর জিরো-কনফিগারেশন প্রকৃতি – কোনো জটিল সেটআপ বা প্রশাসনিক কাজ ছাড়াই ডাটাবেস চালু করা যায়। কিন্তু ব্যবহার শুরু করার আগে আপনার কম্পিউটারে SQLite ইন্সটল করা থাকতে হবে।…

The post SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ appeared first on To Learn Team.

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


প্রথমে যাচাই করে নিন: SQLite কি ইতিমধ্যেই আছে?

বেশিরভাগ লিনাক্স ডিস্ট্রো এবং ম্যাক ওএস-এ SQLite প্রি-ইন্সটলড থাকে। নিচের কমান্ডটি চালিয়ে দেখুন আপনি কপালে সেটা পড়েছেন কিনা।

টার্মিনাল (বা কমান্ড প্রম্পট) খুলুন এবং লিখুন:

bash

sqlite3 --version

যদি আপনি নিচের মত আউটপুট দেখতে পান (ভার্সন নম্বর 3.x.x), তাহলে ইন্সটলেশন প্রয়োজন নেই – সরাসরি টিউটোরিয়ালের পরবর্তী অংশে চলে যান।

text

3.51.1 2025-11-28 17:28:25 ...

যদি কমান্ডটি কাজ না করে বা “command not found” বলে, তবে নিচের নির্দেশনা অনুসরণ করুন।


উইন্ডোজে SQLite ইন্সটলেশন (ধাপে ধাপে)

উইন্ডোজে SQLite ইন্সটল করা মানে মূলত কয়েকটি ফাইল ডাউনলোড করে একটি ফোল্ডারে রাখা এবং সিস্টেমের PATH-এ সেই ফোল্ডারটি যুক্ত করা।

প্রয়োজনীয় প্যাকেজ: শুধুমাত্র sqlite-tools-win-x64-3510100.zip (অথবা আপনার সিস্টেম ৩২-বিট হলে ৩২-বিট ভার্সন)। আমরা এর ভেতরের ফাইলগুলোই ব্যবহার করব। sqlite-dll জিপটিও ডাউনলোড করতে পারেন (প্রোগ্রামিং ল্যাঙ্গুয়েজ থেকে ব্যবহারের দরকার পড়লে কাজে লাগবে)।

ধাপ ১: SQLite ডাউনলোড পৃষ্ঠায় যান। “Precompiled Binaries for Windows” সেকশন থেকে sqlite-tools-win-x64-3510100.zip ফাইলটি ডাউনলোড করুন।

ধাপ ২: আপনার সি ড্রাইভে C:\sqlite নামে একটি ফোল্ডার তৈরি করুন। ডাউনলোড করা জিপ ফাইলটি সেখানে এক্সট্রাক্ট করুন। এক্সট্রাক্ট করার পর ফোল্ডারের ভেতরের ফাইলগুলো হবে:

  • sqlite3.exe (প্রধান এক্সিকিউটেবল)
  • sqldiff.exe
  • sqlite3_analyzer.exe

আপনি চাইলে sqlite-dll-win-x64-*.zip থেকেও sqlite3.dll ও sqlite3.def ফাইলগুলো এখানে রাখতে পারেন, তবে আপাতত sqlite3.exe থাকলেই চলবে।

ডিরেক্টরি স্ট্রাকচার:

text

C:\
└── sqlite
    ├── sqlite3.exe
    ├── sqldiff.exe
    └── sqlite3_analyzer.exe

ধাপ ৩: এখন এই ফোল্ডারটিকে PATH এনভায়রনমেন্ট ভেরিয়েবলে যোগ করতে হবে, যাতে কমান্ড প্রম্পটের যেকোনো জায়গা থেকে sqlite3 লেখা যায়।

  • স্টার্ট মেনুতে সার্চ করে “এনভায়রনমেন্ট ভেরিয়েবল” (environment variables) লিখুন, “Edit the system environment variables” অপশনে ক্লিক করুন।
  • “Environment Variables…” বাটনে ক্লিক করুন।
  • সিস্টেম ভেরিয়েবলের তালিকা থেকে Path সিলেক্ট করুন এবং “Edit…” এ ক্লিক করুন।
  • “New” ক্লিক করে C:\sqlite লিখে দিন এবং OK দিয়ে সব উইন্ডো বন্ধ করুন।

ধাপ ৪: যাচাইকরণ। নতুন একটি কমান্ড প্রম্পট (cmd) খুলুন। লিখুন:

cmd

sqlite3

আপনার সামনে নিচের মত প্রম্পট আসবে:

text

SQLite version 3.51.1 2025-11-28 17:28:25
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

.quit লিখে আপাতত বেরিয়ে আসুন।

বিশেষ নির্দেশনা: PATH সেট করার পরেও যদি sqlite3 কমান্ড কাজ না করে, তবে কমান্ড প্রম্পট রিস্টার্ট করুন অথবা পুরো সিস্টেম রিবুট না করলেও চলবে, নতুন cmd উইন্ডো খুলুন। তাতেও না হলে ম্যানুয়ালি C:\sqlite ফোল্ডারে গিয়ে sqlite3 চালিয়ে নিন।


লিনাক্সে SQLite ইন্সটলেশন

বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনেই SQLite আগে থেকেই থাকে। তবুও ইন্সটল না থাকলে প্যাকেজ ম্যানেজার দিয়ে সহজেই পাওয়া যায়। নিচে উবুন্টু/ডেবিয়ানের উদাহরণ দেওয়া হলো, অন্যান্য ডিস্ট্রোর জন্য নিজস্ব প্যাকেজ ম্যানেজার কমান্ড ব্যবহার করুন।

পদ্ধতি ১: প্যাকেজ ম্যানেজার (সহজ)

bash

sudo apt update
sudo apt install sqlite3

ফেডোরা/সেন্ট-ওএসে:

bash

sudo dnf install sqlite

আর্চ-এ:

bash

sudo pacman -S sqlite

পদ্ধতি ২: সোর্স থেকে কম্পাইল (সর্বশেষ নির্দিষ্ট ভার্সনের প্রয়োজনে)
১. SQLite ডাউনলোড পৃষ্ঠা থেকে sqlite-autoconf-3510100.tar.gz (Source Code সেকশন) ডাউনলোড করুন।
২. টার্মিনালে নিচের কমান্ডগুলো চালান:

bash

tar xvfz sqlite-autoconf-3510100.tar.gz
cd sqlite-autoconf-3510100
./configure --prefix=/usr/local
make
sudo make install

ইন্সটল সম্পন্ন হলে sqlite3 --version দিয়ে যাচাই করে নিন।

যাচাইকরণ:

bash

sqlite3

যদি SQLite version 3.51.1 ... দেখা যায়, তাহলে ইন্সটলেশন সফল।


ম্যাক ওএস-এ SQLite ইন্সটলেশন

ম্যাক ওএস-এও সাধারণত SQLite বিল্ট-ইন থাকে। ভার্সন চেক করে দেখুন:

bash

sqlite3 --version

যদি না থাকে বা আপডেটেড ভার্সন চান, তাহলে Homebrew ব্যবহার করাই সবচেয়ে সহজ:

bash

brew install sqlite3

সোর্স থেকে করতে চাইলে লিনাক্সের মতোই sqlite-autoconf-3510100.tar.gz ডাউনলোড করে কম্পাইল করুন:

bash

tar xvfz sqlite-autoconf-3510100.tar.gz
cd sqlite-autoconf-3510100
./configure --prefix=/usr/local
make
sudo make install

সবশেষে sqlite3 কমান্ড দিয়ে শেল চালু করুন এবং ভার্সন দেখুন।


প্রথম পরীক্ষা: একটি ডাটাবেস ফাইল তৈরি

ইন্সটলেশন যাচাই হয়ে গেলে আমরা একটি ছোট্ট টেস্ট করে নেব।

টার্মিনাল বা কমান্ড প্রম্পটে যেকোনো ফোল্ডারে গিয়ে (যেমন ডেস্কটপে mkdir sqlite-test && cd sqlite-test) নিচের কমান্ড দিন:

bash

sqlite3 test.db

এটি একটি ফাইল test.db তৈরি করবে এবং SQLite প্রম্পটে (sqlite>) নিয়ে যাবে। এখন একটি টেবিল বানাই:

sql

CREATE TABLE hello (message TEXT);
INSERT INTO hello VALUES ('SQLite ইন্সটলেশন সফল!');
SELECT * FROM hello;

আপনি যদি SQLite ইন্সটলেশন সফল! বার্তা দেখতে পান, তাহলে সবকিছু ঠিকঠাক কাজ করছে। .quit দিয়ে বেরিয়ে আসুন।

বর্তমান ডিরেক্টরি স্ট্রাকচার:

text

sqlite-test/
└── test.db

মাত্র একটি ফাইল, যার ভেতরেই পুরো ডাটাবেস টেবিলসহ সংরক্ষিত।


পরবর্তী পর্বে

আমরা SQLite-এর কমান্ড-লাইন শেল ও ডট কমান্ড নিয়ে বিস্তারিত শিখব। .tables, .schema, .dump সহ আরও গুরুত্বপূর্ণ কমান্ড হাতে-কলমে দেখব।

লেখকের কথা: এই টিউটোরিয়ালে SQLite 3.51.1 ভার্সন ব্যবহার করা হয়েছে। বাংলায় প্রযুক্তি শেখার এই সিরিজ আপনার ভালো লাগলে বন্ধুদের সাথে শেয়ার করুন, এবং নিয়মিত আপডেটের জন্য ব্লগটি সাবস্ক্রাইব করুন। কোনো সমস্যায় কমেন্ট করতে দ্বিধা করবেন না!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

The post SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ appeared first on To Learn Team.

]]>
Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড https://tolearnteam.com/centos-stream-9-install-bangla-tutorial-step-by-step/ Wed, 05 Aug 2026 14:03:27 +0000 http://tolearnteam.com/?p=2065 ভূমিকা: CentOS কি এবং কেন শিখবেন? CentOS Stream হলো Red Hat Enterprise Linux (RHEL) এর আপস্ট্রিম ডেভেলপমেন্ট প্ল্যাটফর্ম। এন্টারপ্রাইজ লেভেল সার্ভার, ওয়েব হোস্টিং, ডেটাবেস সার্ভার চালানোর জন্য CentOS সবচেয়ে স্টেবল ও…

The post Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড appeared first on To Learn Team.

]]>
ভূমিকা: CentOS কি এবং কেন শিখবেন?

CentOS Stream হলো Red Hat Enterprise Linux (RHEL) এর আপস্ট্রিম ডেভেলপমেন্ট প্ল্যাটফর্ম। এন্টারপ্রাইজ লেভেল সার্ভার, ওয়েব হোস্টিং, ডেটাবেস সার্ভার চালানোর জন্য CentOS সবচেয়ে স্টেবল ও সিকিউর ডিস্ট্রোগুলোর একটি।

গুরুত্বপূর্ণ নোট: CentOS 8 EOL হয়ে গেছে। এখন CentOS Stream 9 হলো কারেন্ট ভার্সন। এটা RHEL 9 এর আপস্ট্রিম। প্রোডাকশনের জন্য অনেকে Rocky Linux বা AlmaLinux ব্যবহার করে, কিন্তু CentOS Stream সিস্টেম অ্যাডমিন শেখার জন্য বেস্ট।

এই আর্টিকেলে যা শিখবেন:

  1. ISO ডাউনলোড ও বুটেবল মিডিয়া তৈরি
  2. VMware/VirtualBox এ VM কনফিগার
  3. Anaconda Installer দিয়ে স্টেপ-বাই-স্টেপ ইনস্টল
  4. Manual Partition: LVM, /boot, /, swap এর বেস্ট প্র্যাকটিস
  5. Network, Hostname, User ও Root সেটআপ
  6. Minimal vs Server with GUI ইনস্টলেশনের পার্থক্য
  7. একাডেমিক আলোচনা: RHEL Ecosystem ও RPM প্যাকেজ ম্যানেজমেন্ট

১. পূর্বশর্ত ও প্রয়োজনীয় জিনিসপত্র

বিষয়প্রয়োজনক্লারিফিকেশন
ISO ফাইলCentOS-Stream-9-latest-x86_64-dvd1.iso ∼9GBঅফিসিয়াল সাইট: mirror.stream.centos.org
RAMমিনিমাম 2GB, রেকমেন্ডেড 4GBGUI এর জন্য 4GB+ লাগবে
Diskমিনিমাম 20GB, রেকমেন্ডেড 40GB+LVM ব্যবহার করলে পরে বাড়ানো যায়
CPU2 Core64-bit x86_64 আর্কিটেকচার
HypervisorVMware Workstation, VirtualBox, Proxmoxফিজিক্যাল সার্ভারেও একই প্রসেস
নেটওয়ার্কNAT বা Bridgedইনস্টলের সময় আপডেট নামানোর জন্য

স্পেশাল ইনস্ট্রাকশন: প্রোডাকশন সার্ভারে সবসময় Minimal Install ব্যবহার করবেন। GUI সার্ভারে রিসোর্স নষ্ট করে ও সিকিউরিটি রিস্ক বাড়ায়।


২. Step 1: ISO ডাউনলোড ও VM তৈরি

2.1. ISO ডাউনলোড

অফিসিয়াল মিরর থেকে ডাউনলোড করুন:

Bash

wget https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso

ক্লারিফিকেশন: dvd1.iso তে সব প্যাকেজ থাকে। boot.iso শুধু নেটওয়ার্ক ইনস্টলের জন্য।

2.2. VMware/VirtualBox সেটিংস

VMware Workstation:

  1. Create New Virtual Machine → Custom → Next
  2. Installer disc image file → CentOS ISO সিলেক্ট করুন
  3. Guest OS: Linux → Version: Red Hat Enterprise Linux 9 64-bit
  4. RAM: 4096 MB, CPU: 2 Core
  5. Disk: 40GB, Store as single file
  6. Network: NAT
  7. Finish এর আগে Customize Hardware → Display → 3D acceleration টিক তুলে দিন।

VirtualBox:

  1. New → Name: CentOS-9, Type: Linux, Version: Red Hat 64-bit
  2. Memory: 4096 MB, Processors: 2
  3. Hard disk: Create 40GB VDI, Dynamically allocated
  4. Settings → Storage → Empty তে ISO মাউন্ট করুন
  5. Network → Adapter 1: NAT

৩. Step 2: Anaconda Installer দিয়ে ইনস্টলেশন

VM স্টার্ট করলে বুট মেনু আসবে। Install CentOS Stream 9 সিলেক্ট করে Enter দিন।

3.1. ভাষা ও কিবোর্ড

  1. Welcome Screen: English → Continue. সার্ভারে সবসময় English ব্যবহার করা বেস্ট প্র্যাকটিস।
  2. Installation Summary স্ক্রিন আসবে। এখান থেকে সব কনফিগার করতে হবে।

3.2. Keymap, Time & Date

  1. Keyboard: English (US) ঠিক আছে কিনা চেক করুন।
  2. Time & Date: Region: Asia, City: Dhaka. Network Time: On করুন। NTP সার্ভার টাইম সিঙ্ক করবে।
    ক্লারিফিকেশন: সার্ভারে সঠিক টাইম না থাকলে SSL, Kerberos, লগ সব ভুল হবে।

3.3. Software Selection – সবচেয়ে গুরুত্বপূর্ণ

Software Selection এ ক্লিক করুন।

অপশনকখন ব্যবহার করবেনডিস্ক সাইজ
Minimal Installপ্রোডাকশন সার্ভার, ওয়েব, ডাটাবেস∼1.5GB
ServerCLI সার্ভার + কমন টুলস∼2.5GB
Server with GUIশিখার জন্য, GUI দরকার হলে∼5GB+
Workstationডেস্কটপ হিসেবে ব্যবহার∼6GB+

রেকমেন্ডেশন: Minimal Install সিলেক্ট করুন। Add-Ons থেকে Standard এবং Guest Agents টিক দিন। এটা VMware Tools ইনস্টল করবে।

3.4. Installation Destination – Manual Partition

এটা সবচেয়ে ক্রিটিক্যাল স্টেপ। Installation Destination এ ক্লিক করুন।

  1. আপনার 40GB ডিস্ক সিলেক্ট করুন।
  2. Storage Configuration: Custom সিলেক্ট করে Done দিন।
  3. Manual Partitioning স্ক্রিন আসবে। LVM সিলেক্ট করুন।

প্রোডাকশন স্ট্যান্ডার্ড পার্টিশন টেবিল:

Mount PointSizeDevice TypeFile Systemক্লারিফিকেশন
/boot1 GBStandard Partitionxfsকার্নেল ও grub ফাইল থাকে। LVM এর বাইরে রাখতে হয়।
/boot/efi600 MBStandard PartitionEFI Systemশুধু UEFI সিস্টেমের জন্য। BIOS হলে লাগবে না।
/20 GBLVMxfsরুট ফাইল সিস্টেম। OS ও সফটওয়্যার।
/home10 GBLVMxfsইউজার ডাটা। আলাদা রাখলে OS রি-ইনস্টলে ডাটা সেফ থাকে।
swap4 GBLVMswapRAM এর 1x থেকে 2x। 4GB RAM হলে 4GB swap যথেষ্ট।
Free Space∼5 GBLVMভবিষ্যতে / বা /var বাড়ানোর জন্য রাখুন।

LVM কেন ব্যবহার করবেন? Logical Volume Management দিয়ে পরে পার্টিশন রিসাইজ করা যায় সার্ভার বন্ধ না করে। এটা এন্টারপ্রাইজ স্ট্যান্ডার্ড।

Click + দিয়ে একটা একটা করে বানান। সব শেষে Done → Accept Changes দিন।

3.5. Network & Host Name

  1. Network & Host Name এ ক্লিক করুন।
  2. Ethernet On করুন। IP অটো DHCP থেকে পাবে।
  3. Host Name: centos9-server.ToLearnTeam.local দিন → Apply.
  4. Configure → IPv4 Settings → Manual দিয়ে স্ট্যাটিক IP সেট করতে পারেন প্রোডাকশনে।
    উদাহরণ: Address: 10.0.0.100, Netmask: 255.255.255.0, Gateway: 10.0.0.1, DNS: 8.8.8.8

3.6. Root Password ও User Creation

  1. Root Password সেট করুন। খুব স্ট্রং পাসওয়ার্ড দিন। Lock root account টিক তুলে দিন।
  2. User Creation → নতুন ইউজার বানান। যেমন: admin। Make this user administrator টিক দিন। এটা wheel গ্রুপে অ্যাড করবে, ফলে sudo ব্যবহার করতে পারবে।
    স্পেশাল ইনস্ট্রাকশন: সরাসরি root দিয়ে লগইন করা সিকিউরিটি রিস্ক। সবসময় নন-রুট ইউজার + sudo ব্যবহার করুন।

সব Done হলে Begin Installation এ ক্লিক করুন। ১০-২০ মিনিট লাগবে।


৪. Step 3: পোস্ট ইনস্টলেশন টাস্ক

ইনস্টল শেষে Reboot System দিন। ISO ফাইল আনমাউন্ট করুন না হলে আবার ইনস্টলার চালু হবে।

4.1. প্রথম লগইন ও সিস্টেম আপডেট

admin ইউজার দিয়ে লগইন করুন।

Bash

sudo dnf update -y

ক্লারিফিকেশন: dnf হলো CentOS 9 এর ডিফল্ট প্যাকেজ ম্যানেজার। yum এর আপগ্রেডেড ভার্সন। -y মানে সব প্রশ্নে yes।

4.2. প্রয়োজনীয় প্যাকেজ ইনস্টল

মিনিমাল ইনস্টলে অনেক বেসিক টুল থাকে না। ইনস্টল করুন:

Bash

sudo dnf install vim wget curl net-tools bash-completion tree git -y
প্যাকেজকাজ
vimঅ্যাডভান্সড টেক্সট এডিটর
net-toolsifconfig, netstat কমান্ডের জন্য
bash-completionTab চাপলে কমান্ড অটো-কমপ্লিট হবে
treeডিরেক্টরি স্ট্রাকচার দেখার জন্য

4.3. ফায়ারওয়াল ও SELinux চেক

Bash

sudo systemctl status firewalld  # Active দেখাবে
sudo getenforce                  # Enforcing দেখাবে

ক্লারিফিকেশন: firewalld ও SELinux সেন্টওএস এর মেইন সিকিউরিটি ফিচার। প্রোডাকশনে কখনো ডিজেবল করবেন না। কনফিগার করতে শিখুন।

4.4. IP ও হোস্টনেম ভেরিফাই করুন

Bash

ip a                    # IP অ্যাড্রেস দেখাবে
hostnamectl             # হোস্টনেম, OS ভার্সন দেখাবে
ping -c 4 google.com    # ইন্টারনেট আছে কিনা চেক

৫. একাডেমিক আলোচনা: CentOS Ecosystem ও ডিরেক্টরি স্ট্রাকচার

5.1. RHEL Ecosystem এ CentOS এর অবস্থান

CentOS Stream হলো “Rolling Preview” of RHEL। Red Hat প্রথমে CentOS Stream এ ফিচার টেস্ট করে, তারপর সেটা RHEL এ স্টেবল রিলিজ হিসেবে যায়।
ফ্লো: Fedora → CentOS Stream → RHEL → AlmaLinux/Rocky Linux

এজন্য CentOS Stream শিখলে আপনি RHEL, Alma, Rocky সবই কভার করছেন। চাকরির বাজারে এটাই চায়।

5.2. Linux ডিরেক্টরি স্ট্রাকচার – FHS Standard

ইনস্টলের পর এই ডিরেক্টরিগুলো বোঝা জরুরি:

/ # রুট ডিরেক্টরি, সবকিছুর মূল
/bin # বেসিক ইউজার কমান্ড: ls, cp, mv
/sbin # সিস্টেম অ্যাডমিন কমান্ড: fdisk, iptables
/etc # সব কনফিগ ফাইল: /etc/ssh/sshd_config
/home # ইউজার হোম ডিরেক্টরি: /home/admin
/var # ভেরিয়েবল ডাটা: লগ /var/log, ওয়েব /var/www
/usr # ইউজার প্রোগ্রাম ও লাইব্রেরি
/boot # কার্নেল, grub বুটলোডার ফাইল
/tmp # টেম্পোরারি ফাইল, রিবুটে মুছে যায়
/opt # থার্ড পার্টি সফটওয়্যার

5.3. RPM প্যাকেজ ম্যানেজমেন্ট

CentOS .rpm প্যাকেজ ব্যবহার করে। dnf হলো হাই-লেভেল টুল।

sudo dnf install nginx # ইনস্টল
sudo dnf remove nginx # রিমুভ
sudo dnf search nginx # সার্চ
sudo dnf info nginx # ডিটেইল দেখা

একাডেমিক তাৎপর্য: Debian/Ubuntu apt ও .deb ব্যবহার করে। দুটো সিস্টেমই জানা থাকলে আপনি যেকোনো লিনাক্স সার্ভার ম্যানেজ করতে পারবেন।


৬. কমন এরর ও ট্রাবলশুটিং

সমস্যাকারণসমাধান
Pane is deadGUI ইনস্টলে RAM কমVM এ 4GB+ RAM দিন
No network during installNAT/Bridged সিলেক্ট করা নাইVM সেটিংসে Network Adapter এনাবল করুন
Warning: /dev/root does not existLVM/পার্টিশন এররManual Partition আবার করুন, /boot Standard Partition রাখুন
X startup failedServer with GUI তে ড্রাইভার ইস্যুMinimal Install দিয়ে CLI ব্যবহার করুন

৭. উপসংহার ও পরবর্তী ধাপ

আপনি এখন সফলভাবে CentOS Stream 9 ইনস্টল করে একটি বেসিক সার্ভার রেডি করেছেন। LVM পার্টিশন, নেটওয়ার্ক, ইউজার ম্যানেজমেন্ট সহ সবকিছু প্রোডাকশন স্ট্যান্ডার্ড মেনে করা হয়েছে।

সিরিজের পরবর্তী পর্ব: CentOS 9 Initial Server Setup - SSH, Firewalld, SELinux কনফিগারেশন। সেখানে আমরা সার্ভারকে ইন্টারনেটে এক্সপোজ করার জন্য সিকিউর করব।

ToLearnTeam.com এর সাথে থাকুন। আপনার প্রশ্ন কমেন্টে জানান।

The post Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড appeared first on To Learn Team.

]]>
Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক https://tolearnteam.com/linux-telnet-server-configuration-bangla-tutorial/ Wed, 05 Aug 2026 12:14:39 +0000 http://tolearnteam.com/?p=2056 ভূমিকা: Telnet কি এবং কেন এটি এখন পড়বেন? গুরুত্বপূর্ণ সতর্কতা: Telnet একটি অত্যন্ত অনিরাপদ প্রোটোকল। এটি আপনার ইউজারনেম, পাসওয়ার্ড, কমান্ড সহ সবকিছু প্লেইন টেক্সটে পাঠায়। প্রোডাকশন সার্ভারে কখনোই Telnet ব্যবহার…

The post Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক appeared first on To Learn Team.

]]>
ভূমিকা: Telnet কি এবং কেন এটি এখন পড়বেন?

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

Telnet (Teletype Network) হলো একটি Application Layer প্রোটোকল যা 1969 সালে RFC 15 এর মাধ্যমে ডেভেলপ করা হয়। এটি TCP পোর্ট 23 ব্যবহার করে রিমোট কম্পিউটারে ভার্চুয়াল টার্মিনাল অ্যাক্সেস দেয়।

এই আর্টিকেলে যা শিখবেন:

  1. Ubuntu/CentOS/RHEL এ Telnet Server ইনস্টল ও কনফিগার
  2. Firewall ও SELinux সেটিংস
  3. Telnet এর ডিরেক্টরি স্ট্রাকচার ও ফাইল
  4. একাডেমিক সিকিউরিটি অ্যানালাইসিস ও Wireshark প্র্যাকটিক্যাল
  5. Telnet vs SSH এর বিস্তারিত তুলনা

১. পূর্বশর্ত ও প্রয়োজনীয় প্যাকেজ

পূর্বশর্ত:

  1. একটি Linux সার্ভার: Ubuntu 22.04 / CentOS 9 / RHEL 9
  2. sudo বা root অ্যাক্সেস
  3. ২টি মেশিন: একটি সার্ভার, একটি ক্লায়েন্ট টেস্টের জন্য

প্রয়োজনীয় প্যাকেজ:

প্যাকেজের নামকাজইনস্টল কমান্ড
telnet-serverTelnet ডেমন in.telnetd চালায়CentOS/RHEL এ লাগে
telnetdUbuntu তে সার্ভার প্যাকেজUbuntu/Debian এ লাগে
xinetdSuper Server Daemon, পোর্ট 23 এ রিকোয়েস্ট আসলে telnetd চালু করেসব ডিস্ট্রোতে লাগে
telnetক্লায়েন্ট, অন্য সার্ভারে কানেক্ট করার জন্যসব ডিস্ট্রোতে লাগে

ইনস্টলেশন কমান্ড:

Ubuntu 22.04 / Debian 12:

sudo apt update
sudo apt install telnetd xinetd telnet -y

CentOS 9 / RHEL 9 / Rocky Linux:

Bash

sudo dnf install telnet-server telnet xinetd -y

ক্লারিফিকেশন: telnet-server প্যাকেজটি শুধু সার্ভার মেশিনে লাগবে। যে মেশিন থেকে কানেক্ট করবেন সেটায় শুধু telnet ক্লায়েন্ট হলেই হবে।


২. ডিরেক্টরি স্ট্রাকচার ও গুরুত্বপূর্ণ ফাইল

Telnet কনফিগার করার সময় এই ফাইলগুলো সম্পর্কে জানা জরুরি:

/etc/xinetd.d/telnet # Telnet সার্ভিস কনফিগারেশন। এখানে disable = no করতে হয়।
/etc/xinetd.conf # xinetd এর গ্লোবাল সেটিংস। সব সার্ভিসের জন্য কমন।
/etc/services # পোর্ট ডাটাবেস। এখানে telnet 23/tcp লেখা থাকে।
/usr/sbin/in.telnetd # Telnet ডেমনের আসল বাইনারি ফাইল।
/var/log/secure # RHEL/CentOS এ Telnet লগইন/ফেইল লগ থাকে।
/var/log/auth.log # Ubuntu/Debian এ Telnet লগইন/ফেইল লগ থাকে।

৩. স্টেপ বাই স্টেপ কনফিগারেশন

Step 1: Telnet সার্ভিস এনাবল করুন

xinetd এর অধীনে Telnet ডিফল্টভাবে disable থাকে।

Bash

sudo nano /etc/xinetd.d/telnet

ফাইলটি খুলে disable = yes লাইনটি disable = no করে দিন।

ফাইনাল কনফিগারেশন:

INI

#default: on

service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
only_from = 10.0.0.0/24 # স্পেশাল ইনস্ট্রাকশন: শুধু আপনার লোকাল নেটওয়ার্ক এলাও করুন
}

ক্লারিফিকেশন: only_from দিয়ে IP রেস্ট্রিকশন করা সিকিউরিটির জন্য বেস্ট প্র্যাকটিস। wait = no মানে মাল্টি-ইউজার কানেকশন এলাও করবে।

Step 2: xinetd সার্ভিস চালু ও এনাবল করুন

sudo systemctl start xinetd
sudo systemctl enable xinetd
sudo systemctl status xinetd # Active (running) দেখাবে

পোর্ট 23 লিসেন হচ্ছে কিনা চেক করুন:

Bash

sudo ss -tulpn | grep :23

আউটপুট: tcp LISTEN 0 64 *:23 *:* users:(("xinetd",pid=1234,fd=5))

Step 3: ফায়ারওয়াল কনফিগারেশন

পোর্ট 23 ডিফল্টভাবে বন্ধ থাকে। খুলে দিতে হবে।

Ubuntu/UFW:

sudo ufw allow 23/tcp
sudo ufw reload
sudo ufw status

CentOS/RHEL/firewalld:

sudo firewall-cmd –permanent –add-port=23/tcp
sudo firewall-cmd –reload
sudo firewall-cmd –list-ports

Step 4: SELinux ও ইউজার তৈরি – CentOS/RHEL এর জন্য

Telnet রুট ইউজারকে লগইন করতে দেয় না। একটি টেস্ট ইউজার বানান:

sudo adduser telnetuser
sudo passwd telnetuser # একটি পাসওয়ার্ড দিন, যেমন: Telnet@123

SELinux যদি Enforcing মোডে থাকে, তাহলে পলিসি অ্যাড করতে হতে পারে:

Bash

sudo setsebool -P telnetd_connect_network 1

৪. টেস্টিং ও ব্যবহারের উদাহরণ

ধরুন আপনার সার্ভারের IP: 10.0.0.1। ক্লায়েন্ট মেশিন থেকে কমান্ড দিন:

Bash

telnet 10.0.0.1

সফল আউটপুট:

Trying 10.0.0.1…
Connected to 10.0.0.1.
Escape character is ‘^]’.
Ubuntu 22.04.3 LTS
server01 login: telnetuser
Password:
Welcome to Ubuntu 22.04.3 LTS
telnetuser@server01:~$

সেশন থেকে বের হতে: exit লিখুন অথবা Ctrl + ] চেপে quit লিখুন।


৫. Academic Discussion: Telnet এর সিকিউরিটি অ্যানালাইসিস

৫.১. কেন Telnet অনিরাপদ? OSI মডেলের আলোকে

Telnet OSI Layer 7 – Application Layer এ কাজ করে। এর নিচের লেয়ারগুলোতে কোনো এনক্রিপশন নেই।

Wireshark প্র্যাকটিক্যাল: VM-Beta তে Wireshark চালু করে telnet 10.0.0.1 করুন এবং telnetuser দিয়ে লগইন করুন। Wireshark এ telnet ফিল্টার দিলে দেখবেন:

Code

TELNET Data: Password: Telnet@123

এখানে পাসওয়ার্ডটি সম্পূর্ণ প্লেইন টেক্সটে দেখা যাচ্ছে। এটি CIA Triad এর Confidentiality এবং Integrity দুটোই ভঙ্গ করে।

৫.২. Telnet vs SSH: একাডেমিক তুলনা

বৈশিষ্ট্যTelnetSSH (Secure Shell)একাডেমিক তাৎপর্য
স্ট্যান্ডার্ডRFC 854, 1969RFC 4251, 2006প্রোটোকল বিবর্তন
এনক্রিপশননেইAES-256, ChaCha20Cryptography এর প্রয়োগ
পোর্ট23/TCP22/TCPWell-known ports
অথেনটিকেশনPlaintext PasswordPassword, Public-Key, GSSAPIAuthentication Methods
ব্যান্ডউইথকম লাগেএনক্রিপশনের জন্য বেশিPerformance vs Security Trade-off
আধুনিক ব্যবহার০% প্রোডাকশনে৯৯% প্রোডাকশনেIndustry Standard

একাডেমিক উপসংহার: NIST SP 800-123 এবং ISO/IEC 27001 অনুযায়ী Telnet ব্যবহার করা একটি High Severity Vulnerability। তাই কম্পিউটার নেটওয়ার্ক ও সাইবার সিকিউরিটি কোর্সে Telnet পড়ানো হয় “Legacy Protocol Vulnerability Analysis” এর কেস স্টাডি হিসেবে।


৬. কমন এরর ও ট্রাবলশুটিং

এরর মেসেজকারণসমাধান
telnet: Unable to connect to remote host: Connection refusedxinetd চলছে না 2. পোর্ট 23 ফায়ারওয়ালে বন্ধsudo systemctl start xinetd, sudo ufw allow 23/tcp
telnet: Unable to connect to remote host: No route to hostনেটওয়ার্ক সমস্যা বা IP ভুলping 10.0.0.1 দিয়ে চেক করুন
Login incorrectভুল পাসওয়ার্ড 2. রুট দিয়ে লগইন ট্রাই করছেননন-রুট ইউজার ব্যবহার করুন। Telnet রুট এলাও করে না
telnetd: No login program found/usr/sbin/in.telnetd ফাইল মিসিংপ্যাকেজ রি-ইনস্টল করুন: sudo apt install --reinstall telnetd

৭. উপসংহার ও পরবর্তী ধাপ

আমরা এই টিউটোরিয়ালে ল্যাব এনভায়রনমেন্টে Telnet সেটআপ করা শিখলাম এবং একাডেমিক দৃষ্টিকোণ থেকে এর সিকিউরিটি রিস্ক অ্যানালাইসিস করলাম।

ফাইনাল রেকমেন্ডেশন: লিগ্যাসি সিস্টেম মেইনটেইন করা ছাড়া কখনোই Telnet ব্যবহার করবেন না। প্রোডাকশন সার্ভারের জন্য SSH একমাত্র নিরাপদ অপশন।

সিরিজের পরবর্তী পর্ব: SSH Key-Based Authentication in Linux - পাসওয়ার্ড ছাড়া সিকিউর লগইন। সেখানে আমরা শিখব কিভাবে ssh-keygen ও ssh-copy-id ব্যবহার করে সবচেয়ে সিকিউর উপায়ে সার্ভারে লগইন করতে হয়।

আপনার কোনো প্রশ্ন থাকলে ToLearnTeam.com এর কমেন্ট সেকশনে জানান।


nano কি এবং কেন ব্যবহার করবেন?

বিষয়ব্যাখ্যা
পুরো নামGNU nano
কাজটার্মিনালের ভিতরেই .txt, .conf, .sh এর মতো ফাইল তৈরি ও এডিট করা
কেন জনপ্রিয়খুবই সহজ, Notepad এর মতো 2. সব লিনাক্সে ডিফল্ট থাকে 3. মাউস লাগে না
বিকল্পvi/vim, emacs, micro। কিন্তু vim নতুনদের জন্য কঠিন

nano এর বেসিক ব্যবহার – Telnet ফাইলের উদাহরণে

আপনি যখন এই কমান্ড দেন:

Bash

sudo nano /etc/xinetd.d/telnet

১. ইন্টারফেস দেখতে কেমন:

GNU nano 6.2 /etc/xinetd.d/telnet

default: on

service telnet
{
disable = yes
flags = REUSE
socket_type = stream


^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify

নিচে ^X মানে Ctrl + X। এগুলোই শর্টকাট।

২. সবচেয়ে দরকারি ৫টি শর্টকাট:

শর্টকাটকাজকখন লাগবে
Ctrl + OWrite Out = ফাইল সেভ করাএডিট করার পর সেভ করতে
Ctrl + XExit = nano থেকে বের হওয়াকাজ শেষ হলে
Ctrl + WWhere Is = কোনো লেখা খোঁজাdisable লাইনটা খুঁজতে
Ctrl + KCut = লাইন কেটে দেওয়া/ডিলিটকোনো লাইন মুছতে
Ctrl + UPaste = কাট করা লাইন পেস্টলাইন কপি-পেস্ট করতে

৩. Telnet ফাইল এডিট করার সম্পূর্ণ প্রসেস:

Step 1: ফাইল ওপেন করুন

Bash

sudo nano /etc/xinetd.d/telnet

Step 2: Ctrl + W চাপুন, তারপর disable লিখে Enter দিন। কার্সর disable = yes লাইনে চলে যাবে।

Step 3: yes কেটে no লিখুন। এখন হবে disable = no

Step 4: Ctrl + O চাপুন → Enter চাপুন → ফাইল সেভ হবে

Step 5: Ctrl + X চাপুন → nano থেকে বের হয়ে যাবেন

nano vs vim: নতুনদের জন্য কোনটা?

ফিচারnanovim
শেখা2 মিনিটে শেখা যায়2 সপ্তাহ লাগতে পারে
বের হওয়াCtrl + X:q! বা :wq – অনেকে আটকে যায়
মোডকোনো মোড নেই, ডাইরেক্ট টাইপNormal, Insert, Visual মোড আছে
কাদের জন্যবিগিনার, সার্ভার কনফিগপ্রো ডেভেলপার, দ্রুত কোডিং

সারসংক্ষেপ: nano হলো লিনাক্সের Notepad। কনফিগ ফাইল এডিট করার সবচেয়ে সহজ উপায়। sudo দিয়ে ওপেন করলে সিস্টেম ফাইল এডিট করতে পারবেন।

GNU nano 6.2 শুধু দেখাচ্ছে এবং ফাইল খালি, মানে /etc/xinetd.d/telnet ফাইলটা এখনো তৈরি হয়নি।

কেন এমন হচ্ছে?

১. telnet-server ইনস্টল করেননি
Ubuntu তে telnetd ইনস্টল করলে সবসময় এই ফাইল অটো তৈরি হয় না।
২. ফাইলের নাম ভুল
৩. xinetd ইনস্টল নেই

সমাধান: স্টেপ বাই স্টেপ

Step 1: প্যাকেজগুলো আছে কিনা চেক করুন

Bash

dpkg -l | grep -E 'telnet|xinetd'

আউটপুটে telnetd এবং xinetd থাকতে হবে। না থাকলে ইনস্টল করুন:

Ubuntu/Debian:

Bash

sudo apt updatesudo apt install telnetd xinetd -y

CentOS/RHEL:

Bash

sudo dnf install telnet-server xinetd -y

Step 2: xinetd.d ডিরেক্টরি আছে কিনা চেক করুন

Bash

ls /etc/xinetd.d/

যদি No such file or directory দেখায়, তাহলে xinetd ইনস্টল হয়নি।

Step 3: ফাইলটি ম্যানুয়ালি তৈরি করুন

প্যাকেজ ইনস্টল করার পরও ফাইল না থাকলে নিজে বানিয়ে নিন:

Bash

sudo nano /etc/xinetd.d/telnet

এবার nano তে এই পুরো কনফিগটা কপি করে পেস্ট করুন:

INI

#default: on

#description: The telnet server serves telnet sessions

service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
instances = 100
}

তারপর সেভ করুন: Ctrl + O → Enter → Ctrl + X

Step 4: in.telnetd ফাইল আছে কিনা চেক করুন

xinetd এই বাইনারি ফাইলটা রান করে। লোকেশন চেক করুন:

Bash

ls /usr/sbin/in.telnetd

No such file আসলে telnetd প্যাকেজ ঠিকমতো ইনস্টল হয়নি। রি-ইনস্টল করুন:

Bash

sudo apt install --reinstall telnetd -y

Step 5: সার্ভিস রিস্টার্ট করুন

Bash

sudo systemctl restart xinetdsudo systemctl enable xinetdsudo ss -tulpn | grep :23

*:23 লিসেন দেখালে কাজ শেষ।

সংক্ষেপে আপনার করণীয়:

  1. sudo apt install telnetd xinetd -y রান করুন
  2. sudo nano /etc/xinetd.d/telnet দিয়ে উপরের কনফিগ পেস্ট করুন
  3. sudo systemctl restart xinetd

গুরুত্বপূর্ণ: CentOS 9/RHEL 9 এ telnet-server ডেপ্রিকেটেড। অনেক সময় dnf install telnet-server দিলেও ফাইল আসে না। সেক্ষেত্রে ম্যানুয়ালি বানানোই সমাধান।


sudo ss -tulpn | grep :23 এ কিছু না দেখানো মানে পোর্ট 23 এ কোনো সার্ভিস লিসেন করছে না। অর্থাৎ Telnet/xinetd চালু হয়নি বা এরর খাচ্ছে।

স্টেপ বাই স্টেপ ট্রাবলশুটিং

Step 1: xinetd চলছে কিনা চেক করুন

Bash

sudo systemctl status xinetd

৩ ধরনের আউটপুট আসতে পারে:

Case A: Active: inactive (dead)

Bash

sudo systemctl start xinetd
sudo systemctl enable xinetd

Case B: Active: active (running) কিন্তু পোর্ট 23 নাই
মানে xinetd চলছে কিন্তু telnet সার্ভিস লোড হয়নি। Step 2 দেখুন।

Case C: Failed with result 'exit-code'
কনফিগে এরর আছে। লগ দেখুন:

Bash

sudo journalctl -u xinetd -n 20 --no-pager

Step 2: telnet কনফিগ ফাইল ঠিক আছে কিনা চেক করুন

Bash

cat /etc/xinetd.d/telnet

মাস্ট থাকতে হবে:

INI

service telnet
{    disable = no          # এটা `no` হতে হবে, `yes` হলে চলবে না    
     server  = /usr/sbin/in.telnetd    # এই ফাইল থাকতে হবে
}

in.telnetd ফাইল আছে কিনা চেক করুন:

Bash

ls -l /usr/sbin/in.telnetd

No such file আসলে প্যাকেজ মিসিং:

Bash

# Ubuntu
sudo apt install --reinstall telnetd -y
# CentOS/RHEL
sudo dnf reinstall telnet-server -y

Step 3: xinetd রিস্টার্ট দিয়ে এরর চেক করুন

Bash

sudo systemctl restart xinetd

যদি এরর দেয়, তাহলে ডিটেইল লগ দেখুন:

Bash

sudo journalctl -xeu xinetd

কমন এরর:

  1. line 3: exec of /usr/sbin/in.telnetd failed → telnetd প্যাকেজ ইনস্টল নেই
  2. service/protocol error in /etc/xinetd.d/telnet → ফাইলে সিনট্যাক্স এরর, ব্র্যাকেট মিসিং

Step 4: ম্যানুয়ালি টেস্ট করুন

xinetd ছাড়া in.telnetd চলে কিনা দেখুন:

Bash

sudo /usr/sbin/in.telnetd

যদি in.telnetd: command not found আসে, তাহলে প্যাকেজ ইনস্টল হয়নি।

Step 5: Ubuntu 22.04+ এর স্পেশাল কেস

নতুন Ubuntu তে telnetd ইনস্টল করলেও অনেক সময় systemd socket ইউজ করে। xinetd লাগে না।

চেক করুন systemd socket আছে কিনা:

Bash

sudo systemctl status telnet.socket

যদি থাকে, তাহলে এটা এনাবল করুন:

Bash

sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket

এক্ষেত্রে xinetd লাগবে না। ss -tulpn | grep :23 এ এখন দেখাবে।

কুইক ফিক্স সামারি – Ubuntu এর জন্য

আপনার জন্য সবচেয়ে সহজ সমাধান:

1. পুরানো কনফিগ ক্লিন করুন

sudo systemctl stop xinetd
sudo apt purge telnetd xinetd -y

2. নতুন করে ইনস্টল করুন

sudo apt update
sudo apt install telnetd xinetd -y

3. ফাইল ম্যানুয়ালি বানান

echo ‘service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}’ | sudo tee /etc/xinetd.d/telnet

4. চালু করুন

sudo systemctl restart xinetd
sudo systemctl enable xinetd

5. চেক করুন

sudo ss -tulpn | grep :23

এখন tcp LISTEN 0 64 *:23 *:* users:(("xinetd",...)) দেখাবে।


Server /usr/sbin/in.xinetd is not executable file এরর মানে /etc/xinetd.d/telnet ফাইলে server এর পাথ ভুল লিখেছেন।

আপনি লিখেছেন /usr/sbin/in.xinetd কিন্তু আসল ফাইল হবে /usr/sbin/in.telnetd।

xinetd হলো সুপার সার্ভার, আর in.telnetd হলো আসল telnet ডেমন।

সমাধান: ফাইল এডিট করুন

Step 1: ফাইল ওপেন করুন

Bash

sudo nano /etc/xinetd.d/telnet

Step 2: ভুল লাইন ঠিক করুন

ভুল কনফিগ:

INI

service telnet
{
    disable = no
    server  = /usr/sbin/in.xinetd    # এটা ভুল
}

সঠিক কনফিগ:

INI



service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd # telenetd, xinetd না
log_on_failure += USERID
}

in.xinetd কেটে in.telnetd লিখুন। x এর জায়গায় tel হবে।

সেভ করুন: Ctrl + O → Enter → Ctrl + X

Step 3: in.telnetd ফাইল আছে কিনা নিশ্চিত হন

Bash

ls -l /usr/sbin/in.telnetd

আউটপুট এমন হওয়া উচিত:

Code

-rwxr-xr-x 1 root root 12345 Jan 10 2025 /usr/sbin/in.telnetd

যদি No such file or directory আসে, তাহলে প্যাকেজ ইনস্টল হয়নি:

Ubuntu/Debian:

Bash

sudo apt install telnetd -y

CentOS/RHEL:

Bash

sudo dnf install telnet-server -y

Step 4: xinetd রিস্টার্ট করুন

Bash

sudo systemctl restart xinetd
sudo systemctl status xinetd

এখন Active: active (running) দেখাবে, এরর থাকবে না।

Step 5: পোর্ট 23 চেক করুন

Bash

sudo ss -tulpn | grep :23

আউটপুট:

Code

tcp   LISTEN 0      64     *:23     *:*    users:(("xinetd",pid=2345,fd=5))

কেন এই ভুল হয়?

xinetd এবং in.telnetd নাম দুটো কাছাকাছি। xinetd হলো ম্যানেজার, আর in.telnetd হলো ওয়ার্কার। xinetd পোর্ট 23 এ শোনে, কেউ কানেক্ট করলে in.telnetd চালু করে দেয়।

সহজ মনে রাখার উপায়:

  • xinetd = Extended Internet Services Daemon = ম্যানেজার
  • in.telnetd = Internet Telnet Daemon = আসল সার্ভার

কুইক ফিক্স ওয়ান-লাইনার:

Bash

sudo sed -i 's/in\.xinetd/in.telnetd/g' /etc/xinetd.d/telnet && sudo systemctl restart xinetd

এই কমান্ড in.xinetd খুঁজে in.telnetd দিয়ে রিপ্লেস করে xinetd রিস্টার্ট করবে।

The post Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস https://tolearnteam.com/linux-basic-commands-su-sudo-root-bangla-tutorial/ Tue, 04 Aug 2026 16:36:41 +0000 http://tolearnteam.com/?p=2037 লিনাক্স সার্ভারে কাজ করার আগে ৩টা জিনিস বুঝতেই হবে: ১. আপনি কে? ২. আপনি কোথায়? ৩. আপনার ক্ষমতা কতটুকু? এই পোস্টে আমরা su, sudo, root এবং বেসিক সিস্টেম কমান্ড শিখব। প্রয়োজনীয় প্যাকেজ: sudo, coreutils – এগুলো সব…

The post লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস appeared first on To Learn Team.

]]>
লিনাক্স সার্ভারে কাজ করার আগে ৩টা জিনিস বুঝতেই হবে: ১. আপনি কে? ২. আপনি কোথায়? ৩. আপনার ক্ষমতা কতটুকু? এই পোস্টে আমরা su, sudo, root এবং বেসিক সিস্টেম কমান্ড শিখব।

প্রয়োজনীয় প্যাকেজ: sudo, coreutils – এগুলো সব ডিস্ট্রোতে ডিফল্ট থাকে।

Step 1: আপনি কে? – আইডেন্টিটি কমান্ড

১. whoami – আমি কোন ইউজার?

Bash

whoami

আউটপুট: tolearn – বর্তমানে লগইন করা ইউজারের নাম দেখাবে।

২. id – ইউজারের সব ডিটেইল

Bash

id

আউটপুট: uid=1000(tolearn) gid=1000(tolearn) groups=1000(tolearn),27(sudo)
ব্যাখ্যা: uid = ইউজার আইডি, gid = গ্রুপ আইডি, groups = আপনি কোন কোন গ্রুপের সদস্য। sudo গ্রুপে থাকলে অ্যাডমিন কমান্ড চালাতে পারবেন।

Step 2: su vs sudo – অ্যাডমিন হওয়ার ২টি রাস্তা

লিনাক্সে root হলো সর্বময় ক্ষমতার অধিকারী সুপারইউজার। কিন্তু ডিরেক্ট root দিয়ে লগইন করা বিপজ্জনক।

১. su – Switch User

Bash

su - root

ব্যাখ্যা: - দিলে root এর এনভায়রনমেন্ট সহ লগইন হবে। root এর পাসওয়ার্ড লাগবে। Ubuntu তে ডিফল্টভাবে root এর পাসওয়ার্ড সেট করা থাকে না, তাই এটা ফেইল করবে।

২. sudo – Superuser Do – এটাই রেকমেন্ডেড

Bash

sudo apt update

ব্যাখ্যা: শুধু এই একটি কমান্ড root হিসেবে রান হবে। আপনার নিজের পাসওয়ার্ড চাইবে।

৩. sudo -i – root এর ইন্টারেক্টিভ শেল – Ubuntu এর জন্য বেস্ট

Bash

sudo -i

ব্যাখ্যা: su -i নামে কোনো কমান্ড নেই। Ubuntu/Debian এ root হতে sudo -i ব্যবহার করুন। এটা আপনাকে root এর শেল দেবে এবং /root ডিরেক্টরিতে নিয়ে যাবে। বের হতে exit লিখুন।

su vs sudo -i পার্থক্য:

কমান্ডপাসওয়ার্ডলগনিরাপত্তা
su -root এর পাসওয়ার্ডলগ হয় নাকম
sudo -iনিজের পাসওয়ার্ড/var/log/auth.log এ লগ হয়বেশি

Step 3: আপনি কোথায়? – নেভিগেশন কমান্ড

১. pwd – Print Working Directory

Bash

pwd

আউটপুট: /home/tolearn – আপনি এখন কোন ফোল্ডারে আছেন।

২. ls – লিস্ট ফাইল

Bash

ls -lha

ব্যাখ্যা: -l=Details, -h=Human Readable Size, -a=Hidden ফাইল সহ দেখাবে।

৩. cd – Change Directory

Bash

cd /etc       # /etc ফোল্ডারে যানcd ~          # নিজের হোমে যান = /home/tolearncd ..         # এক ধাপ উপরের ফোল্ডারে যান

Step 4: লিনাক্স ডিরেক্টরি স্ট্রাকচার – ৫টি মাস্ট জানা ফোল্ডার

/
├── root/ <– root ইউজারের হোম। sudo -i দিলে এখানে আসবেন। পারমিশন 700
├── home/ <– সব সাধারণ ইউজারের হোম। /home/tolearn/
├── etc/ <– সব কনফিগ ফাইল। sshd_config, passwd এখানেই থাকে
├── var/ <– Variable Data। লগ /var/log/, ওয়েবসাইট /var/www/
└── bin/ <– সব বেসিক কমান্ড। ls, cp, mv এখানে থাকে

গোল্ডেন রুল: /etc বা /var এ কাজ করতে হলে sudo লাগবেই।

Step 5: প্যাকেজ ম্যানেজমেন্ট – সফটওয়্যার ইনস্টল

Ubuntu/Debian এর জন্য apt:

sudo apt update # প্যাকেজ লিস্ট আপডেট
sudo apt upgrade # সব প্যাকেজ আপগ্রেড
sudo apt install htop # htop ইনস্টল
sudo apt remove htop # রিমুভ

CentOS/RHEL এর জন্য yum বা dnf:

sudo yum update
sudo yum install htop

Step 6: অন্যান্য দরকারি বেসিক কমান্ড

clear # টার্মিনাল পরিষ্কার
history # আগে কী কমান্ড দিয়েছেন
man ls # যেকোনো কমান্ডের ম্যানুয়াল। q চেপে বের হবেন
reboot # সার্ভার রিস্টার্ট। sudo লাগবে
poweroff # সার্ভার বন্ধ। sudo লাগবে
df -h # ডিস্ক স্পেস চেক
free -h # RAM চেক
top / htop # চলমান প্রসেস দেখা। q চেপে বের হবেন


3. সিরিজের পরবর্তী পর্ব

Part-1: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট – এই বেসিক কমান্ড ব্যবহার করে useradd দিয়ে নতুন ইউজার বানানো শিখব।

গট ইট! আপনার Part-0: বেসিক অপারেশনাল কমান্ড পোস্টে restart, shutdown এবং অন্যান্য দরকারি সিস্টেম কমান্ড অ্যাড করে ফাইনাল আপডেটেড ভার্সন দিলাম।


2. পোস্ট কনটেন্ট: আপডেটেড সেকশন

লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস

Step 6: সিস্টেম কন্ট্রোল – Restart, Shutdown ও অন্যান্য

সার্ভার মেইনটেনেন্সের জন্য এই কমান্ডগুলো সবচেয়ে বেশি লাগবে। সতর্কতা: সবগুলোতে sudo লাগবে।

১. reboot – সার্ভার রিস্টার্ট

Bash

sudo reboot

ব্যাখ্যা: সার্ভার সাথে সাথে রিস্টার্ট হবে। কার্নেল আপডেট বা কনফিগ চেঞ্জের পর লাগে।

২. shutdown – সার্ভার বন্ধ করা

sudo shutdown now # এখনই বন্ধ
sudo shutdown -h +10 # ১০ মিনিট পর বন্ধ। -h = halt
sudo shutdown -r 22:00 # রাত ১০টায় রিস্টার্ট। -r = reboot
sudo shutdown -c # শিডিউল করা শাটডাউন ক্যান্সেল

৩. systemctl – আধুনিক সার্ভিস কন্ট্রোল – সবচেয়ে গুরুত্বপূর্ণ
init.d এর বদলে এখন systemd ব্যবহার হয়।

sudo systemctl reboot # reboot কমান্ডের আধুনিক ভার্সন
sudo systemctl poweroff # shutdown কমান্ডের আধুনিক ভার্সন
sudo systemctl status ssh # ssh সার্ভিস চলছে কিনা দেখা
sudo systemctl restart nginx # nginx রিস্টার্ট দেওয়া
sudo systemctl enable docker # সার্ভার অন হলে docker অটো চালু হবে

৪. অন্যান্য দরকারি সিস্টেম কমান্ড

কমান্ডকাজউদাহরণ
uptimeকতক্ষণ ধরে সার্ভার চলছেuptime -p
uname -aকার্নেল ও OS তথ্যuname -r = শুধু কার্নেল ভার্সন
hostnamectlHostname চেঞ্জ ও OS তথ্যsudo hostnamectl set-hostname server1
dateসার্ভারের সময় দেখাdate -s "2026-08-05 10:00:00"
timedatectlটাইমজোন সেট করাsudo timedatectl set-timezone Asia/Dhaka
df -hডিস্ক স্পেস চেকdf -h / = রুট পার্টিশন
free -hRAM ও Swap চেকfree -m = MB তে দেখাবে
top / htopলাইভ CPU/RAM ব্যবহারsudo apt install htop লাগবে
ps auxসব চলমান প্রসেসps aux \| grep nginx
killপ্রসেস বন্ধ করাsudo kill -9 1234 = PID 1234 কে জোর করে বন্ধ
wget / curlফাইল ডাউনলোডwget https://example.com/file.zip
tarফাইল Zip/Unziptar -czvf backup.tar.gz /var/www

Step 7: লিনাক্স ডিরেক্টরি স্ট্রাকচার – আপডেটেড লিস্ট

ডিরেক্টরিকী থাকেকেন দরকার
/rootroot ইউজারের হোমsudo -i দিলে এখানে আসবেন
/homeসব ইউজারের পার্সোনাল ফোল্ডার/home/tolearn/
/etcসব কনফিগ ফাইলsshd_config, passwd, nginx
/varলগ, ওয়েবসাইট, ডেটাবেজ/var/log/auth.log, /var/www/
/usrইউজার প্রোগ্রাম/usr/bin/python3
/bin /sbinবেসিক কমান্ডls, reboot, shutdown
/tmpটেম্পোরারি ফাইলরিস্টার্ট দিলে মুছে যায়
/optথার্ড-পার্টি সফটওয়্যারGoogle Chrome, XAMPP

Special Instruction for Ubuntu: Ubuntu তে ডিফল্ট root অ্যাকাউন্ট লক থাকে। তাই su - কাজ করবে না। sudo passwd root দিয়ে প্রথমে root এর পাসওয়ার্ড সেট করতে হবে। কিন্তু এটা নিরাপত্তার জন্য রেকমেন্ডেড না। সবসময় sudo -i ব্যবহার করুন।


3. কমপ্লিট কমান্ড চিটশিট: কপি-পেস্ট করুন

আইডেন্টিটি

whoami
id
sudo -i # root হওয়া

নেভিগেশন

pwd
ls -lha
cd /etc

সিস্টেম কন্ট্রোল

sudo reboot
sudo shutdown now
sudo systemctl status nginx
uptime
df -h
free -h
top

প্যাকেজ

sudo apt update && sudo apt upgrade
sudo apt install htop

The post লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং https://tolearnteam.com/linux-ssh-key-authentication-server-hardening-bangla/ Tue, 04 Aug 2026 16:04:26 +0000 http://tolearnteam.com/?p=2034 পাসওয়ার্ড দিয়ে SSH লগইন করা হলো বাড়ির দরজায় তালা না দিয়ে চিরকুটে পাসওয়ার্ড লিখে রাখার মতো। Brute-force অ্যাটাক দিয়ে যেকোনো সময় হ্যাক হতে পারে। সমাধান: SSH Key। প্রয়োজনীয় প্যাকেজ: openssh-server, openssh-client, fail2ban Step…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং appeared first on To Learn Team.

]]>
পাসওয়ার্ড দিয়ে SSH লগইন করা হলো বাড়ির দরজায় তালা না দিয়ে চিরকুটে পাসওয়ার্ড লিখে রাখার মতো। Brute-force অ্যাটাক দিয়ে যেকোনো সময় হ্যাক হতে পারে। সমাধান: SSH Key।

প্রয়োজনীয় প্যাকেজ: openssh-server, openssh-client, fail2ban

Step 1: SSH Key Pair তৈরি করা – ssh-keygen

আপনার লোকাল পিসি/ল্যাপটপ থেকে রান করুন, সার্ভারে না:

Bash

ssh-keygen -t ed25519 -C "tolearn@my-laptop"

ব্যাখ্যা:

  • -t ed25519: সবচেয়ে সিকিউর ও আধুনিক অ্যালগরিদম। RSA এর চেয়ে ভালো
  • -C: কমেন্ট, কোন মেশিনের কী সেটা বোঝার জন্য

এন্টার চাপলে এটি ২টি ফাইল তৈরি করবে:

/home/your-user/.ssh/
├── id_ed25519 # Private Key: এটা TOP SECRET, কাউকে দেবেন না
└── id_ed25519.pub # Public Key: এটা সার্ভারে দিতে হবে

Special Instruction: Passphrase চাইলে খালি রাখতে পারেন, তবে Passphrase দিলে আরও সিকিউর।

Step 2: সার্ভারে Public Key কপি করা – ssh-copy-id

এটাই সবচেয়ে সহজ উপায়। tolearn ইউজার দিয়ে সার্ভারে লগইন করার জন্য:

Bash

ssh-copy-id tolearn@10.0.0.1

সার্ভারের পাসওয়ার্ড ১ বার চাইবে। এরপর থেকে আর লাগবে না।

Manual পদ্ধতি যদি ssh-copy-id না থাকে:

Bash

cat ~/.ssh/id_ed25519.pub | ssh tolearn@10.0.0.1 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

সার্ভারে যে ডিরেক্টরি ও ফাইল তৈরি হবে:

/home/tolearn/.ssh/
└── authorized_keys # পারমিশন 600 হতে হবে

চেক করুন: chmod 700 ~/.ssh এবং chmod 600 ~/.ssh/authorized_keys

কেন এবং কীভাবে কাজ করে:

1. সিনারিও:

আপনার ল্যাপটপ = 192.168.1.100 <– এখান থেকে কমান্ড দেবেন
সার্ভার VM-Alpha = 10.0.0.1 <– এখানে key যাবে

2. স্টেপ-বাই-স্টেপ:

Step-A: আপনার ল্যাপটপ/পিসিতে Key বানান

আপনার উইন্ডোজ/লিনাক্স/ম্যাক ল্যাপটপের টার্মিনালে

ssh-keygen -t ed25519 -C "my-laptop"

এটা ~/.ssh/id_ed25519.pub ফাইল বানাবে আপনার ল্যাপটপে।

Step-B: ল্যাপটপ থেকেই Key সার্ভারে পাঠান

আবার আপনার ল্যাপটপ থেকেই রান করুন

ssh-copy-id tolearn@10.0.0.1

এটা প্রথমবার tolearn ইউজারের পাসওয়ার্ড চাইবে। দেওয়ার পর আপনার ল্যাপটপের id_ed25519.pub ফাইলটি সার্ভারের /home/tolearn/.ssh/authorized_keys ফাইলে কপি হয়ে যাবে।

Step-C: টেস্ট করুন – ল্যাপটপ থেকে

Bash

ssh tolearn@10.0.0.1

এবার আর পাসওয়ার্ড চাইবে না।

গুরুত্বপূর্ণ ৩টি পয়েন্ট:

প্রশ্নউত্তর
কমান্ড কোথায় রান করব?আপনার লোকাল পিসি/ল্যাপটপে। যেখান থেকে সার্ভারে লগইন করতে চান।
সার্ভারে রান করলে কী হবে?এরর দেবে। কারণ সার্ভারের পাবলিক কী আপনার ল্যাপটপে পাঠানোর দরকার নেই।
Windows হলে কী করব?Windows 10/11 এ PowerShell বা Git Bash ওপেন করে একই কমান্ড। ssh-keygen ও ssh-copy-id এখন বিল্ট-ইন থাকে।

সহজ মনে রাখার ট্রিক:
ssh-copy-id = “আমার ID/চাবি কপি করে সার্ভারে দাও”। তাই চাবি যার কাছে আছে, কমান্ড সে দেবে। চাবি আপনার ল্যাপটপে আছে, তাই ল্যাপটপ থেকে কমান্ড দেবেন।

Step 3: টেস্ট করুন: পাসওয়ার্ড ছাড়া লগইন

Bash

ssh tolearn@10.0.0.1

ব্যস, পাসওয়ার্ড ছাড়াই লগইন হয়ে যাবে!

Step 4: সার্ভার হার্ডেনিং – /etc/ssh/sshd_config

সতর্কতা: এই ফাইল এডিট করার আগে অবশ্যই আরেকটি SSH সেশন খোলা রাখুন। ভুল হলে লকআউট হয়ে যাবেন।

Bash

sudo nano /etc/ssh/sshd_config

এই ৫টি লাইন মাস্ট চেঞ্জ করুন:

Port 2222 # 1. ডিফল্ট 22 পোর্ট চেঞ্জ করুন
PermitRootLogin no # 2. root দিয়ে ডিরেক্ট লগইন বন্ধ
PasswordAuthentication no # 3. পাসওয়ার্ড লগইন সম্পূর্ণ বন্ধ
PubkeyAuthentication yes # 4. শুধু Key দিয়ে লগইন Allow
AllowUsers tolearn developer # 5. শুধু এই ইউজাররা লগইন করতে পারবে

সেভ করে SSH রিস্টার্ট দিন:

Bash

sudo systemctl restart sshd

নতুন পোর্ট দিয়ে লগইন:

Bash

ssh -p 2222 tolearn@10.0.0.1

Step 5: Fail2Ban দিয়ে Brute-Force অ্যাটাক বন্ধ করা

কেউ বারবার ভুল পাসওয়ার্ড দিলে তার IP অটো ব্যান হয়ে যাবে।

১. ইনস্টল:

Bash

sudo apt update && sudo apt install fail2ban -y

২. কনফিগারেশন কপি করুন:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

৩. [sshd] সেকশন এডিট করুন:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 1h
findtime = 10m

ব্যাখ্যা: 10 মিনিটে 3 বার ভুল করলে 1 ঘন্টার জন্য ব্যান।

৪. রিস্টার্ট ও স্ট্যাটাস চেক:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Step 6: বোনাস হার্ডেনিং টিপস

  1. UFW Firewall: শুধু দরকারি পোর্ট খুলুন।

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw enable

  1. Automatic Updates: সিকিউরিটি প্যাচ অটো ইনস্টল।

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades


3. সিরিজের পরবর্তী পর্ব

Part-4: লিনাক্স ওয়েব সার্ভার সেটআপ – Nginx/Apache, PHP, MySQL – tolearn ইউজার দিয়ে একটি সম্পূর্ণ ওয়েবসাইট হোস্ট করা শিখব।

ssh-copy-id tolearn@10.0.0.1 কাজ না করার ৭টা কমন কারণ + সমাধান দিচ্ছি। ৯০% কেস এগুলোর মধ্যেই পড়ে।

Troubleshooting: ssh-copy-id কাজ না করলে কী করবেন

1. প্রথমে বেসিক চেক: ping ও ssh চলে কিনা

আপনার ল্যাপটপ থেকে:

Bash

ping 10.0.0.1
ssh tolearn@10.0.0.1

যদি ssh পাসওয়ার্ড দিয়ে লগইন না হয়, তাহলে ssh-copy-id ও হবে না। আগে ssh ঠিক করুন।

Error: Connection refused → সার্ভারে SSH ইনস্টল নেই।
সমাধান – সার্ভারে লগইন করে:

Bash

sudo apt update && sudo apt install openssh-server -y
sudo systemctl enable ssh --now
sudo systemctl status ssh

2. Error: Permission denied (publickey,password)

কারণ: সার্ভারের /etc/ssh/sshd_config এ PasswordAuthentication no করা আছে।
সমাধান: সাময়িকভাবে পাসওয়ার্ড লগইন চালু করুন।

সার্ভারে:

Bash

sudo nano /etc/ssh/sshd_config

এই লাইন খুঁজে চেঞ্জ করুন:

Bash

PasswordAuthentication yes

সেভ করে রিস্টার্ট:

Bash

sudo systemctl restart sshd

এখন ল্যাপটপ থেকে আবার ssh-copy-id দিন। হয়ে গেলে PasswordAuthentication no করে দিন।

3. Error: ssh: connect to host 10.0.0.1 port 22: Connection timed out

কারণ ১: IP ভুল অথবা সার্ভার বন্ধ
ip a দিয়ে সার্ভারের IP চেক করুন।

কারণ ২: Firewall ব্লক করছে
সার্ভারে:

Bash

sudo ufw allow 22/tcp
sudo ufw reload

কারণ ৩: পোর্ট 22 না, অন্য পোর্ট
আপনি যদি Part-3 অনুযায়ী পোর্ট 2222 করে থাকেন:

Bash

ssh-copy-id -p 2222 tolearn@10.0.0.1

4. Error: /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: .../.ssh/id_ed25519.pub does not exist

কারণ: আপনার ল্যাপটপে key বানানোই হয়নি।
সমাধান – ল্যাপটপে:

Bash

ssh-keygen -t ed25519 -C "my-laptop"

এন্টার চাপতে থাকুন। তারপর আবার ssh-copy-id দিন।

5. Error: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

কারণ: আপনি সার্ভার রি-ইনস্টল করেছেন, তাই fingerprint মিলছে না।
সমাধান – ল্যাপটপে:

Bash

ssh-keygen -R 10.0.0.1

এটা পুরনো key মুছে দেবে। তারপর আবার ট্রাই করুন।

6. Windows এ ssh-copy-id command not found

সমাধান ১: PowerShell এ ম্যানুয়ালি করুন

powershell

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh tolearn@10.0.0.1 "cat >> .ssh/authorized_keys"

সমাধান ২: Git Bash ব্যবহার করুন – Git Bash এ ssh-copy-id কাজ করে।

7. ১০০% কাজ করবে এমন ম্যানুয়াল পদ্ধতি

যদি ssh-copy-id কোনোভাবেই কাজ না করে:

Step-1: ল্যাপটপে public key দেখুন

Bash

cat ~/.ssh/id_ed25519.pub

পুরো আউটপুট কপি করুন। ssh-ed25519 AAAAC3... my-laptop এর মতো হবে।

Step-2: সার্ভারে পাসওয়ার্ড দিয়ে লগইন করুন

Bash

ssh tolearn@10.0.0.1

Step-3: সার্ভারে key পেস্ট করুন

Bash

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

কপি করা key টা পেস্ট করে Ctrl+O, Enter, Ctrl+X দিয়ে সেভ করুন।

Step-4: পারমিশন ঠিক করুন – এটা মাস্ট

Bash

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Step-5: ল্যাপটপ থেকে টেস্ট

Bash

exit  # সার্ভার থেকে বের হনssh tolearn@10.0.0.1

এখন পাসওয়ার্ড ছাড়া লগইন হবে।


Quick Debug Checklist:

  1. ping 10.0.0.1 চলে?
  2. ssh tolearn@10.0.0.1 পাসওয়ার্ড দিয়ে ঢোকে?
  3. সার্ভারে sudo systemctl status ssh active?
  4. ls ~/.ssh/id_ed25519.pub ফাইল আছে?
  5. পোর্ট 22 নাকি অন্য কিছু? sudo ss -tulpn | grep sshd

ed25519 vs rsa – কোনটা ব্যবহার করবেন?

Key Typeকমান্ডসাইজসিকিউরিটিস্পিডরেকমেন্ডেশন
ed25519ssh-keygen -t ed25519256 bitসবচেয়ে বেশিসবচেয়ে ফাস্ট2026 এটাই বেস্ট
rsassh-keygen -t rsa -b 40964096 bitঅনেক বেশিস্লোপুরনো সার্ভারের জন্য
ecdsassh-keygen -t ecdsa256 bitভালোফাস্টএখন আর ইউজ হয় না
dsassh-keygen -t dsa1024 bitদুর্বলস্লোব্যবহার নিষেধ

1. ed25519 কেন বেস্ট?

  1. ছোট সাইজ: Key মাত্র 68 ক্যারেক্টার, RSA 4096-bit হয় 800+ ক্যারেক্টার
  2. ফাস্ট: লগইন, সাইন করতে সময় কম লাগে
  3. সিকিউর: 256-bit ed25519 = 3072-bit RSA এর সমান সিকিউরিটি
  4. Modern: OpenSSH 6.5+ এ ডিফল্ট। এখন সব সার্ভার সাপোর্ট করে

2. কখন rsa ব্যবহার করবেন?

যদি আপনার সার্ভার খুব পুরনো হয় – যেমন Ubuntu 14.04, CentOS 6। সেগুলো ed25519 সাপোর্ট করে না।

RSA Key বানানোর কমান্ড:

Bash

ssh-keygen -t rsa -b 4096 -C "my-laptop"

-b 4096 মাস্ট দেবেন। 2048 এখন দুর্বল।

3. ssh-copy-id সব টাইপেই কাজ করে

আপনি যে টাইপের key ই বানান, কমান্ড একই:

Bash

ssh-copy-id tolearn@10.0.0.1

এটা অটো ~/.ssh/id_ed25519.pub অথবা ~/.ssh/id_rsa.pub যেটা পাবে সেটা কপি করবে।

স্পেসিফিক ফাইল দিতে চাইলে:

Bash

ssh-copy-id -i ~/.ssh/id_rsa.pub tolearn@10.0.0.1

4. চেক করুন সার্ভার কোনটা সাপোর্ট করে

সার্ভারে লগইন করে:

Bash

ssh -Q key

আউটপুটে ssh-ed25519 থাকলে → ed25519 সাপোর্টেড।

সারসংক্ষেপ: আপনি কোনটা ইউজ করবেন?

আপনার সার্ভার যদি 2020 এর পরের হয় → ed25519 ইউজ করুন:

Bash

ssh-keygen -t ed25519 -C "tolearn-laptop"

যদি “Key type not supported” Error দেয় → rsa ইউজ করুন:

Bash

ssh-keygen -t rsa -b 4096 -C "tolearn-laptop"

ed25519 ফিক্সড না, কিন্তু 2026 এ এটাই ইন্ডাস্ট্রি স্ট্যান্ডার্ড। dsa বাদে বাকি সব চলবে।


cat is not recognized Error মানে আপনি Windows এর Command Prompt বা PowerShell এ আছেন। লিনাক্সের কমান্ড Windows এ সরাসরি চলে না।

সমাধান: আপনি কোন OS এ আছেন তার উপর নির্ভর করে

Case 1: আপনার ল্যাপটপ Windows, সার্ভার Linux

এটাই সবচেয়ে কমন কেস। ssh-keygen আর ssh-copy-id আপনার Windows ল্যাপটপে রান করবেন।

Windows এ cat এর বদলে type ব্যবহার করুন:

১. Public Key দেখতে:

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub

ব্যাখ্যা: %USERPROFILE% = C:\Users\YourName। এটা cat ~/.ssh/id_ed25519.pub এর Windows ভার্সন।

২. ssh-copy-id Windows এ নেই। তাই ম্যানুয়ালি করুন:

Step-A: Key কপি করুন

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub

পুরো ssh-ed25519 AAAAC3... user@DESKTOP লাইনটা কপি করুন।

Step-B: সার্ভারে লগইন করুন

powershell

ssh tolearn@10.0.0.1

Step-C: সার্ভারের ভিতর পেস্ট করুন

Bash

mkdir -p ~/.sshecho "ssh-ed25519 AAAAC3... user@DESKTOP" >> ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysexit

echo "..." এর ভিতর আপনার কপি করা key পেস্ট করবেন।

Step-D: টেস্ট করুন – Windows থেকে

powershell

ssh tolearn@10.0.0.1

এখন পাসওয়ার্ড ছাড়া ঢুকবে।

Case 2: Windows এ লিনাক্স কমান্ড চালাতে চান

Option 1: Git Bash ব্যবহার করুন
Git ইনস্টল করলে Git Bash পাবেন। ওটা খুললে cat, ls, ssh-keygen, ssh-copy-id সব চলবে। লিনাক্সের মতোই।

Option 2: PowerShell এ OpenSSH
Windows 10/11 এ বিল্ট-ইন আছে। PowerShell ওপেন করে ssh-keygen দিন। cat এর বদলে Get-Content বা type ইউজ করুন।

Option 3: WSL ব্যবহার করুন
wsl --install দিয়ে Ubuntu ইনস্টল করলে পুরো লিনাক্স টার্মিনাল পাবেন।

কুইক চিটশিট: Windows vs Linux কমান্ড

কাজLinux/MacWindows CMDWindows PowerShell
ফাইল দেখাcat file.txttype file.txtGet-Content file.txt বা type file.txt
ফোল্ডার লিস্টls -ladirls বা dir
হোম ডিরেক্টরি~ বা \$HOME%USERPROFILE%\$HOME বা \$env:USERPROFILE

সারসংক্ষেপ: cat Error মানে আপনি Windows এ। type %USERPROFILE%\.ssh\id_ed25519.pub দিয়ে key দেখুন, তারপর ম্যানুয়ালি সার্ভারে পেস্ট করুন।

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস https://tolearnteam.com/linux-file-permission-acl-bangla-tutorial/ Tue, 04 Aug 2026 16:02:15 +0000 http://tolearnteam.com/?p=2031 Part-1 এ আমরা tolearn ইউজার বানিয়েছি। কিন্তু সে কোন ফাইল পড়তে পারবে, কোনটা এডিট করতে পারবে? সেটা ঠিক করে দেয় ফাইল পারমিশন। ভুল পারমিশন = হ্যাক হওয়ার রাস্তা খুলে দেওয়া। প্রয়োজনীয় প্যাকেজ: coreutils এবং acl – sudo…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস appeared first on To Learn Team.

]]>
Part-1 এ আমরা tolearn ইউজার বানিয়েছি। কিন্তু সে কোন ফাইল পড়তে পারবে, কোনটা এডিট করতে পারবে? সেটা ঠিক করে দেয় ফাইল পারমিশন। ভুল পারমিশন = হ্যাক হওয়ার রাস্তা খুলে দেওয়া।

প্রয়োজনীয় প্যাকেজ: coreutils এবং acl – sudo apt install acl দিয়ে ACL ইনস্টল করুন।

Step 1: বেসিক পারমিশন বোঝা – ls -l

যেকোনো ফাইলের পারমিশন দেখুন:

Bash

ls -l /var/www/project/index.php

আউটপুট: -rwxr-xr-- 1 tolearn www-data 2048 Aug 4 22:00 index.php

ব্যাখ্যা:

অংশমানে
-ফাইল, d হলে ডিরেক্টরি
rwxOwner tolearn এর পারমিশন: Read, Write, Execute
r-xGroup www-data এর পারমিশন: Read, Execute
r--Others এর পারমিশন: শুধু Read

Numeric Value: r=4, w=2, x=1। তাই rwx = 7, r-x = 5, r-- = 4। rwxr-xr-- মানে 754।

Step 2: পারমিশন পরিবর্তন – chmod

সবচেয়ে কমন পারমিশন:

Bash

chmod u+x script.sh  # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt   # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt   # Others কে শুধু Read পারমিশন দিন

Symbolic Way:

chmod u+x script.sh # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt # Others কে শুধু Read পারমিশন দিন

Step 3: মালিকানা পরিবর্তন – chown ও chgrp

ফাইলের মালিক ও গ্রুপ চেঞ্জ:

Bash

sudo chown tolearn:www-data /var/www/project/index.php

ব্যাখ্যা: tolearn হলো নতুন Owner, www-data হলো নতুন Group।

শুধু গ্রুপ চেঞ্জ:

Bash

sudo chgrp developers /var/www/project/

Step 4: স্পেশাল পারমিশন – setuid, setgid, sticky bit

এগুলো অ্যাডভান্সড সিকিউরিটির জন্য।

১. setuid 4xxx: ফাইলটি যে Owner-এর, তার পারমিশন নিয়ে রান হবে। passwd কমান্ড এভাবে কাজ করে।

Bash

sudo chmod 4755 /usr/bin/program

২. setgid 2xxx: ফোল্ডারে নতুন ফাইল তৈরি হলে Parent ফোল্ডারের গ্রুপ পাবে। শেয়ার্ড ফোল্ডারের জন্য দরকারি।

Bash

sudo chmod 2775 /var/www/shared_project/

৩. sticky bit 1xxx: /tmp ফোল্ডারে থাকে। ইউজার শুধু নিজের ফাইল ডিলিট করতে পারবে।

Bash

sudo chmod 1777 /tmp

Step 5: ACL – Access Control List: আসল ক্ষমতা

chmod দিয়ে শুধু 3 ধরনের ইউজার কন্ট্রোল করা যায়। কিন্তু যদি tolearn ইউজারকে রিড আর developer ইউজারকে রাইট দিতে চান? তখন লাগবে ACL।

১. ACL চেক করা:

Bash

getfacl /var/www/project/index.php

২. নির্দিষ্ট ইউজারকে পারমিশন দেওয়া:

Bash

sudo setfacl -m u:developer:rw /var/www/project/index.php

ব্যাখ্যা: developer ইউজারকে Read+Write দিলাম, অথচ ফাইলের Owner tolearn ই আছে।

৩. নির্দিষ্ট গ্রুপকে পারমিশন দেওয়া:

Bash

sudo setfacl -m g:testers:r /var/www/project/

৪. ACL মুছে ফেলা:

Bash

sudo setfacl -b /var/www/project/index.php

Step 6: ডিরেক্টরি স্ট্রাকচার ও বেস্ট প্র্যাকটিস

ওয়েব সার্ভারের জন্য রেকমেন্ডেড পারমিশন:

/var/www/ root:root 755
└── project/ tolearn:www-data 755
├── index.php tolearn:www-data 644
├── uploads/ www-data:www-data 775 + setgid
└── config.php tolearn:www-data 640 # Others পড়তে পারবে না

গোল্ডেন রুল:

  1. ফোল্ডার: 755, ফাইল: 644
  2. কনফিগ ফাইল: 640 বা 600
  3. কখনোই 777 পারমিশন দেবেন না।

3. সিরিজের পরবর্তী পর্ব

Part-3: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং – পাসওয়ার্ড ছাড়া সিকিউর লগইন এবং root লগইন বন্ধ করা শিখব।

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] https://tolearnteam.com/linux-user-account-management-bangla-tutorial/ Tue, 04 Aug 2026 15:57:15 +0000 http://tolearnteam.com/?p=2028 লিনাক্স সার্ভারের নিরাপত্তার প্রথম ধাপ হলো সঠিক ইউজার ম্যানেজমেন্ট। root ইউজার দিয়ে সব কাজ করা ঝুঁকিপূর্ণ। তাই এই টিউটোরিয়ালে আমরা শিখব কিভাবে নতুন ইউজার বানাবেন, পারমিশন দেবেন এবং সিকিউরিটি নিশ্চিত করবেন। প্রয়োজনীয়…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] appeared first on To Learn Team.

]]>
লিনাক্স সার্ভারের নিরাপত্তার প্রথম ধাপ হলো সঠিক ইউজার ম্যানেজমেন্ট। root ইউজার দিয়ে সব কাজ করা ঝুঁকিপূর্ণ। তাই এই টিউটোরিয়ালে আমরা শিখব কিভাবে নতুন ইউজার বানাবেন, পারমিশন দেবেন এবং সিকিউরিটি নিশ্চিত করবেন।

প্রয়োজনীয় প্যাকেজ: passwd, shadow-utils – এগুলো সাধারণত সব ডিস্ট্রোতে ডিফল্টভাবে থাকে।

Step 1: নতুন ইউজার তৈরি করা – useradd

এটি সবচেয়ে গুরুত্বপূর্ণ কমান্ড।

Bash

sudo useradd -m -s /bin/bash tolearn

ব্যাখ্যা:

  • sudo: অ্যাডমিন রাইট নিয়ে কমান্ড রান করা
  • useradd: নতুন ইউজার তৈরির কমান্ড
  • -m: ইউজারের জন্য /home/tolearn হোম ডিরেক্টরি তৈরি করবে
  • -s /bin/bash: ইউজারের ডিফল্ট শেল bash সেট করবে
  • tolearn: নতুন ইউজারের নাম

ডিরেক্টরি স্ট্রাকচার যা তৈরি হবে:

/home/
└── tolearn/ <– নতুন ইউজারের হোম
├── .bashrc
├── .profile
└── .bash_logout

গুরুত্বপূর্ণ ফাইল আপডেট হয়: /etc/passwd, /etc/shadow, /etc/group

Step 2: ইউজারের পাসওয়ার্ড সেট করা – passwd

ইউজার তৈরি করলেই সে লগইন করতে পারবে না। পাসওয়ার্ড সেট করতে হবে।

Bash

sudo passwd tolearn

এন্টার দেওয়ার পর নতুন পাসওয়ার্ড ২ বার দিতে বলবে।

Step 3: সব ইউজারের লিস্ট দেখা

Bash

cat /etc/passwd | cut -d: -f1

অথবা শুধু রিয়েল ইউজার দেখতে:

awk -F: ‘$3 >= 1000 && $1 != “nobody” {print $1}’ /etc/passwd

ব্যাখ্যা: UID 1000 থেকে সাধারণ ইউজার শুরু হয়।

Step 4: ইউজারের তথ্য পরিবর্তন – usermod

ইউজারকে sudo গ্রুপে যোগ করা:

Bash

sudo usermod -aG sudo tolearn

-aG: Append to Group. এটা না দিলে আগের সব গ্রুপ মুছে যাবে।

ইউজারের হোম ডিরেক্টরি চেঞ্জ:

Bash

sudo usermod -d /var/www/tolearn -m tolearn

Step 5: ইউজার অ্যাকাউন্ট ডিজেবল/এনাবল করা

১. পাসওয়ার্ড লক করে ডিজেবল:

sudo passwd -l tolearn # Lock
sudo passwd -u tolearn # Unlock

২. অ্যাকাউন্ট এক্সপায়ার করে ডিজেবল:

sudo chage -E 2026-01-01 tolearn # এই তারিখের পর লগইন বন্ধ
sudo chage -E -1 tolearn # আবার এনাবল করা

৩. শেল পরিবর্তন করে লগইন বন্ধ:

Bash

sudo usermod -s /sbin/nologin tolearn

Step 6: পারমিশন ও মালিকানা – chmod ও chown

ধরুন tolearn ইউজারকে /var/www/project ফোল্ডারের মালিকানা দিতে চান:

sudo chown -R tolearn:tolearn /var/www/project
sudo chmod -R 755 /var/www/project

ব্যাখ্যা:

  • chown -R: Recursively মালিকানা পরিবর্তন
  • tolearn:tolearn: ইউজার:গ্রুপ
  • chmod 755: Owner-এর সব রাইট, Group ও Others-এর Read+Execute

Step 7: ইউজার ডিলিট করা – userdel

Bash

sudo userdel -r tolearn

-r: হোম ডিরেক্টরি সহ ডিলিট করবে। সাবধান! ডেটা মুছে যাবে।


3. বোনাস টিপস: আমার সাজেশন

আপনার সিরিজে এই ২টা টপিক অবশ্যই যোগ করবেন:

  1. Sudoers File: /etc/sudoers ফাইল visudo দিয়ে এডিট করে পাসওয়ার্ড ছাড়া নির্দিষ্ট কমান্ড চালানোর পারমিশন দেওয়া।
  2. Password Policy: chage কমান্ড দিয়ে পাসওয়ার্ড কতদিন পর পর চেঞ্জ করতে হবে সেট করা। sudo chage -M 90 tolearn = ৯০ দিন পর পাসওয়ার্ড এক্সপায়ার।

4. সিরিজের পরবর্তী পর্বের আইডিয়া

Part-2: লিনাক্স ফাইল পারমিশন ও ACL মাস্টারক্লাস
Part-3: SSH Key-Based Authentication সেটআপ

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] appeared first on To Learn Team.

]]>