Linux File System & Commands | Linux Commands Hands-on | DevOps Day 02

DevOps Day 02-এ Linux File System, Basic Linux Commands, Users, Groups, chmod, chown, sudo, File Permissions ও Disk Management hands-on শিখুন।
Linux File System & Commands

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 শিখব।

Info! এই lesson-টি hands-on ভিত্তিক। সম্ভব হলে Ubuntu Linux বা একটি Ubuntu Virtual Machine ব্যবহার করে প্রতিটি command নিজে execute করুন।

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
Warning! rm command ব্যবহার করার সময় সতর্ক থাকুন। ভুল file বা directory delete করলে গুরুত্বপূর্ণ data হারাতে পারেন। বিশেষ করে rm -rf command বুঝে ছাড়া ব্যবহার করা উচিত নয়।

Basic Navigation Practice

  1. বর্তমান directory দেখুন।
  2. Files এবং folders list করুন।
  3. /etc directory-তে যান।
  4. Home directory-তে ফিরে আসুন।
  5. test নামে একটি directory তৈরি করুন।
  6. file1 নামে একটি file তৈরি করুন।
  7. 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
Info!
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
Info! sudo command ব্যবহার করার জন্য user-এর যথাযথ sudo permission থাকতে হবে।

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
Info!
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 প্রয়োজনীয় কি না যাচাই করুন।

Warning! userdel -r ব্যবহার করার আগে অবশ্যই নিশ্চিত হন যে user-এর প্রয়োজনীয় কোনো data নেই। ভুল user delete করলে গুরুত্বপূর্ণ 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
Warning!
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 ছাড়া চালাতে পারবে।

Security Warning! এই ধরনের NOPASSWD: ALL rule user-কে অত্যন্ত শক্তিশালী administrative access দেয়। Production server-এ প্রয়োজন না থাকলে এটি ব্যবহার করা উচিত নয়। DevOps environment-এ সাধারণত specific command-এর জন্য restricted sudo permission দেওয়া বেশি নিরাপদ।

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-গুলো করার চেষ্টা করুন:

  1. devopsuser নামে একটি user তৈরি করুন।
  2. devops নামে একটি group তৈরি করুন।
  3. devopsuser-কে devops group-এ যুক্ত করুন।
  4. /opt/devops-project নামে একটি directory তৈরি করুন।
  5. Directory-এর ownership devopsuser-এর কাছে দিন।
  6. Directory-এর permission 700 করুন।
  7. Directory-এর ভিতরে app.txt file তৈরি করুন।
  8. File-এর permission 640 করুন।
  9. File-এর owner এবং group পরিবর্তন করুন।
  10. 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
Success! আপনি যদি উপরের hands-on task নিজে execute করতে পারেন, তাহলে Linux-এর basic file system, user management, groups, permissions এবং disk usage-এর foundation তৈরি হয়ে যাবে।

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 তৈরি করা।

Related Posts

About the author

Daud
Hey! I'm Daud, Currently Working in IT Company BD. I always like to learn something new and teach others.

Post a Comment

To avoid SPAM, all comments will be moderated before being displayed.
Don't share any personal or sensitive information.