Day 02: Linux File System & Commands (Hands-on)
DevOps শেখার জন্য Linux জানা অত্যন্ত গুরুত্বপূর্ণ। বেশিরভাগ cloud server, web server, container এবং DevOps infrastructure Linux-based environment-এ পরিচালিত হয়। এই Day 02 lesson-এ আমরা Linux file system, basic commands, file ও directory management, users, groups, file permissions, ownership, sudo এবং disk usage সম্পর্কে hands-on শিখব।
What is Linux File System?
Linux file system হলো একটি hierarchical file system। Linux-এর পুরো file system-এর শুরু হয় root directory (/) থেকে। Windows-এর C:\ drive-এর সাথে কিছুটা তুলনা করা যায়, তবে Linux-এর structure এবং permission system আলাদা।
Linux-এ files, directories, devices এবং অন্যান্য resources একটি single directory tree-এর মধ্যে সংগঠিত থাকে।
Basic Linux File System Hierarchy
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── opt
├── root
├── tmp
├── usr
└── var
Important Linux Directories
| Directory | Purpose |
|---|---|
| / | Linux file system-এর root directory |
| /bin | Essential binary commands |
| /boot | Boot-related files এবং kernel files |
| /dev | Device files |
| /etc | System এবং application configuration files |
| /home | সাধারণ users-এর home directories |
| /lib | Essential shared libraries |
| /opt | Optional বা third-party software-এর জন্য ব্যবহৃত হতে পারে |
| /root | Root user-এর home directory |
| /tmp | Temporary files |
| /usr | User programs, libraries এবং অন্যান্য read-only/shareable data |
| /var | Variable data যেমন logs, cache, spool ইত্যাদি |
DevOps-এর জন্য Linux File System জানা কেন গুরুত্বপূর্ণ?
DevOps engineers-দের server configuration, logs, application files, permissions, deployment directories এবং system services নিয়ে কাজ করতে হয়। তাই /etc, /var, /home, /opt এবং /tmp সম্পর্কে basic ধারণা থাকা প্রয়োজন।
Hands-On: Basic Linux Navigation Commands
এখন আমরা Linux terminal ব্যবহার করে basic navigation এবং file management commands practice করব।
pwd — Print Working Directory
বর্তমানে আপনি কোন directory-তে আছেন তা দেখতে pwd command ব্যবহার করা হয়।
pwd
Example output:
/home/dhaka
ls — List Files
বর্তমান directory-এর files এবং folders দেখতে ls command ব্যবহার করা হয়।
ls
ls -l — Detailed File Listing
File permission, owner, group, size এবং modification time দেখতে:
ls -l
cd — Change Directory
এক directory থেকে অন্য directory-তে যেতে cd command ব্যবহার করা হয়।
cd /etc
Home directory-তে যেতে:
cd ~
Parent directory-তে যেতে:
cd ..
mkdir — Create Directory
নতুন directory তৈরি করতে:
mkdir test
touch — Create File
একটি empty file তৈরি করতে:
touch file1
rm — Remove File
File delete করতে:
rm file1
rmdir — Remove Empty Directory
Empty directory remove করতে:
rmdir test
Basic Navigation Practice
- বর্তমান directory দেখুন।
- Files এবং folders list করুন।
- /etc directory-তে যান।
- Home directory-তে ফিরে আসুন।
- test নামে একটি directory তৈরি করুন।
- file1 নামে একটি file তৈরি করুন।
- File এবং directory remove করুন।
pwd
ls
cd /etc
cd ~
mkdir test
touch file1
rm file1
rmdir test
Hands-On: Viewing & Editing Files
Linux server-এ configuration file, log file এবং application file দেখতে ও edit করতে বিভিন্ন command ব্যবহার করা হয়।
cat Command
cat command ব্যবহার করে file-এর content দ্রুত terminal-এ দেখা যায়।
cat /etc/os-release
এটি Linux distribution এবং version সম্পর্কিত information দেখাতে পারে।
less Command
File অনেক বড় হলে একসাথে পুরো content দেখার পরিবর্তে scroll করে দেখতে less ব্যবহার করা যায়।
less /var/log/syslog
less থেকে বের হতে সাধারণত q চাপা হয়।
vi Editor
Linux-এ text file edit করার জন্য vi একটি জনপ্রিয় terminal-based editor।
vi testfile.txt
Linux server-এ configuration file edit করার সময় আগে file-এর backup রাখা ভালো। Production server-এ সরাসরি configuration পরিবর্তন করার আগে বিশেষভাবে সতর্ক থাকুন।
Creating Users in Linux
Linux server-এ বিভিন্ন team member বা application-এর জন্য আলাদা user account তৈরি করা যায়।
Create a User
sudo adduser dhaka
User-এর password সেট করতে:
sudo passwd dhaka
Switch User
নতুন user হিসেবে login বা switch করতে:
su - dhaka
Ubuntu/Debian system-এ package list update করার command:
sudo apt update
Linux File Permissions & Ownership
Linux-এর অন্যতম গুরুত্বপূর্ণ concept হলো file permissions। প্রতিটি file এবং directory-এর permission থাকে, যা নির্ধারণ করে কে file read, write অথবা execute করতে পারবে।
Check File Permissions
ls -l file.txt
Example output:
-rwxr-xr-- 1 user group 1024 Jul 19 10:00 file.txt
Permission Structure
-rwxr-xr--
│ │ │ │
│ │ │ └── Others
│ │ └───── Group
│ └──────── Owner
└────────── File type
| Symbol | Meaning |
|---|---|
| - | Regular file |
| d | Directory |
| r | Read permission |
| w | Write permission |
| x | Execute permission |
| - | No permission |
Understanding rwxr-xr--
ধরুন permission হলো:
rwxr-xr--
এটি তিনটি অংশে ভাগ করা যায়:
rwx | r-x | r--
↓ ↓ ↓
Owner Group Others
| Section | Permission | Who | Meaning |
|---|---|---|---|
| rwx | Read, Write, Execute | Owner | সব permission আছে |
| r-x | Read, Execute | Group | Read এবং execute করতে পারে |
| r-- | Read only | Others | শুধু read করতে পারে |
chmod: Changing File Permissions
chmod command ব্যবহার করে file বা directory-এর permissions পরিবর্তন করা হয়।
Symbolic Mode
# Owner-এর execute permission যোগ করা
chmod u+x script.sh
# Group-এর write permission remove করা
chmod g-w file.txt
# Others-এর read permission যোগ করা
chmod o+r file.txt
Numeric Mode
Linux-এ numeric permission mode-ও ব্যবহার করা হয়। যেমন:
chmod 755 script.sh
755-এর অর্থ:
7 = rwx → Owner
5 = r-x → Group
5 = r-x → Others
Permission Numeric Values
| Value | Permission |
|---|---|
| 0 | --- |
| 1 | --x |
| 2 | -w- |
| 3 | -wx |
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
Numeric permission-এর প্রতিটি digit যথাক্রমে Owner, Group এবং Others-এর permission বোঝায়। যেমন 640 = rw- r-- ---।
chown: Changing File Ownership
chown command ব্যবহার করে file-এর owner এবং group পরিবর্তন করা যায়।
chown user:group file.txt
উদাহরণ:
sudo chown rajiv:devops sample.txt
Deleting Linux Users
Linux system থেকে user delete করতে userdel command ব্যবহার করা যায়।
Delete User Without Removing Home Directory
sudo userdel t2
Delete User and Home Directory
sudo userdel -r t2
দ্বিতীয় command user-এর home directory এবং associated files remove করার চেষ্টা করবে। তাই production environment-এ এটি ব্যবহার করার আগে data backup এবং user-এর files প্রয়োজনীয় কি না যাচাই করুন।
Adding a User to the Sudo Group
Ubuntu-তে কোনো user-কে sudo group-এ যুক্ত করলে সে system configuration অনুযায়ী administrative commands চালাতে পারে।
sudo usermod -aG sudo rajiv1
তারপর group membership check করতে:
groups rajiv1
Apply Group Access Without Full Logout
বর্তমান shell-এ group membership-এর নতুন context নিতে newgrp ব্যবহার করা যায়:
newgrp sudo
Sudo access দেওয়ার আগে user-এর প্রয়োজন এবং security requirements যাচাই করুন। প্রত্যেক developer বা team member-কে অপ্রয়োজনে full administrative access দেওয়া উচিত নয়।
Understanding Sudo and Sudoers
sudo ব্যবহার করে অনুমোদিত user নির্দিষ্ট administrative command elevated privileges-এ চালাতে পারে। Sudo permissions সাধারণত /etc/sudoers এবং sudo configuration files-এর মাধ্যমে নিয়ন্ত্রণ করা হয়।
Safely Edit Sudoers
সাধারণত sudoers configuration পরিবর্তনের জন্য visudo ব্যবহার করা safer, কারণ এটি syntax check করতে সাহায্য করে।
sudo visudo
আপনার lesson-এর example হিসেবে:
dhaka ALL=(ALL) NOPASSWD: ALL
এর অর্থ হলো dhaka user সব command sudo দিয়ে password ছাড়া চালাতে পারবে।
Restricted Sudo Access
Real-world DevOps environment-এ একজন developer-কে full root access না দিয়ে শুধু নির্দিষ্ট deployment script চালানোর permission দেওয়া যেতে পারে।
এভাবে least privilege principle অনুসরণ করা যায়—অর্থাৎ user-এর কাজ করার জন্য যতটুকু permission প্রয়োজন, ততটুকুই দেওয়া।
DevOps security-এর একটি গুরুত্বপূর্ণ principle হলো: user-কে প্রয়োজনের চেয়ে বেশি privilege না দেওয়া।
DevOps Security Principle
Creating and Managing Groups
একাধিক user-এর permissions সহজে manage করার জন্য Linux-এ groups ব্যবহার করা হয়।
Create a DevOps Group
sudo groupadd devops
Add User to Group
sudo usermod -aG devops rajiv
Check User Groups
groups rajiv
Group ব্যবহার করলে একই ধরনের permission একাধিক user-এর ওপর সহজে প্রয়োগ করা যায়।
Hands-On: File Permission Practice
এখন একটি file তৈরি করে তার permission এবং ownership পরিবর্তন করা যাক।
touch sample.txt
ls -l sample.txt
chmod 640 sample.txt
chown rajiv:devops sample.txt
ls -l sample.txt
640 permission-এর অর্থ:
640
│││
││└── Others: ---
│└─── Group: r--
└──── Owner: rw-
| Permission | Owner | Group | Others |
|---|---|---|---|
| 640 | Read + Write | Read | No Access |
Practical Scenario: Create User & Set Project Permissions
এখন একটি real-world DevOps scenario তৈরি করি। ধরুন devopsuser নামে একজন user একটি project directory ব্যবহার করবে এবং অন্য সাধারণ users যেন directory-তে access না পায়।
Step 1: Create User
sudo adduser devopsuser
Step 2: Create Project Directory
sudo mkdir /opt/project
Step 3: Change Ownership
sudo chown devopsuser /opt/project
Step 4: Restrict Directory Access
sudo chmod 700 /opt/project
700 permission-এর ফলে owner directory-তে read, write এবং execute permission পাবে, কিন্তু group এবং others কোনো permission পাবে না।
Linux permissions শুধু security feature নয়; DevOps server management-এর daily কাজের একটি গুরুত্বপূর্ণ অংশ।
DevOps Fundamentals
File System & Disk Usage Check
Server-এর disk space এবং file system সম্পর্কে ধারণা রাখাও DevOps-এর জন্য গুরুত্বপূর্ণ।
df -h
Human-readable format-এ filesystem-এর disk usage দেখতে:
df -h
df -hT
Disk usage-এর পাশাপাশি filesystem type দেখতে:
df -hT
| Command | Purpose |
|---|---|
| pwd | Current directory দেখায় |
| ls | Files এবং directories list করে |
| ls -l | Detailed file information দেখায় |
| cd | Directory পরিবর্তন করে |
| mkdir | নতুন directory তৈরি করে |
| touch | নতুন empty file তৈরি করে |
| cat | File content দেখায় |
| less | বড় file scroll করে দেখতে সাহায্য করে |
| rm | File remove করে |
| rmdir | Empty directory remove করে |
| chmod | File permission পরিবর্তন করে |
| chown | File owner/group পরিবর্তন করে |
| useradd/adduser | User তৈরি করতে ব্যবহৃত হয় |
| userdel | User delete করে |
| groupadd | নতুন group তৈরি করে |
| usermod | User-এর properties/group membership পরিবর্তন করে |
| df -h | Disk usage দেখায় |
| df -hT | Disk usage এবং filesystem type দেখায় |
Hands-On Challenge
আজকের lesson শেষ করার আগে নিজে নিজে নিচের task-গুলো করার চেষ্টা করুন:
- devopsuser নামে একটি user তৈরি করুন।
- devops নামে একটি group তৈরি করুন।
- devopsuser-কে devops group-এ যুক্ত করুন।
- /opt/devops-project নামে একটি directory তৈরি করুন।
- Directory-এর ownership devopsuser-এর কাছে দিন।
- Directory-এর permission 700 করুন।
- Directory-এর ভিতরে app.txt file তৈরি করুন।
- File-এর permission 640 করুন।
- File-এর owner এবং group পরিবর্তন করুন।
- df -h দিয়ে disk usage check করুন।
sudo adduser devopsuser
sudo groupadd devops
sudo usermod -aG devops devopsuser
sudo mkdir /opt/devops-project
sudo chown devopsuser:devops /opt/devops-project
sudo chmod 700 /opt/devops-project
sudo touch /opt/devops-project/app.txt
sudo chmod 640 /opt/devops-project/app.txt
sudo chown devopsuser:devops /opt/devops-project/app.txt
df -h
Important Linux Permission Cheat Sheet
| Permission | Numeric | Meaning |
|---|---|---|
| --- | 0 | No permission |
| --x | 1 | Execute |
| -w- | 2 | Write |
| -wx | 3 | Write + Execute |
| r-- | 4 | Read |
| r-x | 5 | Read + Execute |
| rw- | 6 | Read + Write |
| rwx | 7 | Read + Write + Execute |
Pro Tips for DevOps Beginners
- Linux command শুধু মুখস্থ না করে terminal-এ নিজে practice করুন।
- ls -l output পড়তে শেখা খুব গুরুত্বপূর্ণ।
- chmod এবং chown ভালোভাবে বুঝুন।
- Production server-এ rm, userdel -r এবং permission commands ব্যবহারে সতর্ক থাকুন।
- অপ্রয়োজনে সব user-কে sudo বা root access দেবেন না।
- Security-এর জন্য least privilege principle অনুসরণ করুন।
- Server-এর disk space নিয়মিত monitor করুন।
- Configuration file পরিবর্তনের আগে backup রাখার অভ্যাস করুন।
Day 02 Summary
আজকের Day 02 lesson-এ আমরা Linux file system hierarchy এবং Linux-এর গুরুত্বপূর্ণ directories সম্পর্কে জেনেছি। এরপর pwd, ls, cd, mkdir, touch, rm, rmdir, cat, less ইত্যাদি basic commands hands-on practice করেছি।
এছাড়াও Linux user এবং group management, chmod, chown, sudo, sudoers, file ownership এবং permissions সম্পর্কে বিস্তারিত জেনেছি। সবশেষে df -h এবং df -hT ব্যবহার করে filesystem ও disk usage check করেছি।
Linux শেখার সবচেয়ে ভালো উপায় হলো প্রতিটি command নিজে terminal-এ চালিয়ে দেখা এবং তার output বোঝা।
DevOps Learning Tip
Frequently Asked Questions (FAQ)
Linux File System কী?
Linux File System হলো একটি hierarchical structure যেখানে পুরো system-এর শুরু root directory / থেকে হয় এবং files, directories ও অন্যান্য resources একটি directory tree-এর মধ্যে সংগঠিত থাকে।
Linux-এর root directory কী?
/ হলো Linux-এর root directory। Linux file system-এর সব directory এবং file এই root hierarchy-এর অধীনে থাকে।
/etc directory কী কাজে ব্যবহৃত হয়?
/etc directory-তে system এবং বিভিন্ন application-এর configuration files থাকে।
/home directory কী?
/home সাধারণ Linux users-এর personal home directories রাখার জন্য ব্যবহৃত হয়। যেমন /home/dhaka।
chmod কী?
chmod হলো Linux command যা file বা directory-এর read, write এবং execute permissions পরিবর্তন করতে ব্যবহৃত হয়।
chown কী?
chown command file বা directory-এর owner এবং group পরিবর্তন করতে ব্যবহৃত হয়।
chmod 755-এর অর্থ কী?
755 অর্থ owner-এর জন্য read, write এবং execute; group ও others-এর জন্য read এবং execute permission। অর্থাৎ rwxr-xr-x।
chmod 640-এর অর্থ কী?
640 অর্থ owner-এর read এবং write, group-এর read এবং others-এর কোনো permission নেই। অর্থাৎ rw-r-----।
sudo কী?
sudo অনুমোদিত user-কে elevated privileges ব্যবহার করে administrative command চালানোর সুযোগ দেয়।
sudoers file কী?
/etc/sudoers file এবং সংশ্লিষ্ট sudo configuration-এর মাধ্যমে কোন user বা group কোন administrative command চালাতে পারবে তা নির্ধারণ করা হয়। Sudoers পরিবর্তনের জন্য visudo ব্যবহার করা safer।
Linux-এ group কেন ব্যবহার করা হয়?
একাধিক user-এর access এবং permissions একসাথে manage করার জন্য Linux groups ব্যবহার করা হয়। DevOps team-এর মতো environment-এ এটি বিশেষভাবে useful।
df -h কী করে?
df -h human-readable format-এ mounted file systems-এর available এবং used disk space দেখায়।
Conclusion
Linux হলো DevOps-এর foundation-এর একটি গুরুত্বপূর্ণ অংশ। Linux file system, terminal commands, users, groups, permissions এবং ownership সম্পর্কে ভালো ধারণা থাকলে পরবর্তী DevOps topics যেমন Git, Docker, Jenkins, CI/CD, Cloud, Terraform এবং Kubernetes শেখা অনেক সহজ হবে।
আজকের lesson-এর সবচেয়ে গুরুত্বপূর্ণ commands হলো:
pwd
ls -l
cd
mkdir
touch
cat
less
rm
chmod
chown
useradd / adduser
userdel
groupadd
usermod
sudo
df -h
df -hT
Day 02-এর মূল লক্ষ্য: Linux terminal-এ comfortable হওয়া এবং file system, users, groups ও permissions-এর basic hands-on skill তৈরি করা।