Linux শিখতে গেলে কিছু বিষয় এড়িয়ে যাওয়ার সুযোগ নেই। তার মধ্যে অন্যতম হলো User, Group এবং File Permission Management।
Docker, Kubernetes, Server Administration, Cloud বা DevOps—যে দিকেই যেতে চান না কেন, Linux-এর এই মৌলিক বিষয়গুলো পরিষ্কারভাবে বোঝা খুবই গুরুত্বপূর্ণ।
এই লেখায় আমরা একদম হাতে-কলমে দেখব:
- Linux User কী?
- Root User এবং Normal User-এর পার্থক্য
- নতুন User তৈরি করা
- User-এর তথ্য দেখা
- Password সেট করা
- User switch করা
- User lock/unlock করা
- User delete করা
- Group কী এবং কেন ব্যবহার করা হয়
- Primary ও Supplementary Group
- Group তৈরি ও delete করা
- Group-এ User যোগ/বাদ দেওয়া
- Linux File Permission কী?
-
r,w,xকী? - User, Group এবং Others-এর permission
-
chmodদিয়ে permission পরিবর্তন -
chownদিয়ে ownership পরিবর্তন -
ls -loutput কীভাবে পড়তে হয়
1. Linux User কী?
আপনি যখন Linux machine-এ login করেন, তখন আপনি একটি User হিসেবে কাজ করেন।
Linux-এ সাধারণভাবে দুই ধরনের User নিয়ে কাজ করা হয়:
Linux Users
│
┌───────────┴───────────┐
│ │
Root User Normal User
(Superuser) (Standard User)
│ │
Full Control Limited Access
Root User
Root হলো Linux-এর সবচেয়ে powerful user।
Root user-এর system-এর প্রায় সব resource-এর ওপর administrative control থাকে। সে file দেখতে, modify করতে, delete করতে এবং permission পরিবর্তন করতে পারে।
Root shell-এ সাধারণত prompt-এর শেষে # দেখা যায়:
root@ubuntu:/#
Normal User
Normal user সাধারণ কাজের জন্য ব্যবহৃত হয় এবং তার access সীমিত থাকে। এর উদ্দেশ্য হলো অসাবধানতাবশত গুরুত্বপূর্ণ system file বা configuration পরিবর্তন করে ফেলা থেকে system-কে রক্ষা করা।
Normal user-এর prompt সাধারণত $ দিয়ে শেষ হয়:
habib@ubuntu:~$
Rule of thumb: প্রতিদিনের কাজের জন্য normal user ব্যবহার করা নিরাপদ; administrative কাজের জন্য প্রয়োজন অনুযায়ী elevated privileges ব্যবহার করা উচিত।
2. User Management
এবার terminal-এ হাতে-কলমে User management করা যাক।
নতুন User তৈরি করা
useradd দিয়ে নতুন user তৈরি করা যায়।
useradd -m habib
এখানে:
-
useradd→ নতুন user তৈরি করে -
-m→ user-এর জন্য home directory তৈরি করে -
habib→ নতুন username
-m ব্যবহার করলে সাধারণত:
/home/habib
directory তৈরি হবে। -m না দিলে account তৈরি হলেও home directory স্বয়ংক্রিয়ভাবে তৈরি নাও হতে পারে।
User-এর UID এবং Group Information দেখা
কোনো user-এর identification information দেখতে:
id habib
উদাহরণ:
uid=1001(habib)
gid=1001(habib)
groups=1001(habib)
এখানে:
-
uid→ User ID -
gid→ Group ID -
groups→ User কোন কোন group-এর সদস্য
Linux-এ username-এর পাশাপাশি UID এবং GID গুরুত্বপূর্ণ কারণ system internally এই numeric IDs ব্যবহার করে user এবং group identify করে।
3. System-এর সব User দেখা
Linux system-এর user account-এর information /etc/passwd-এ পাওয়া যায়।
দেখতে:
cat /etc/passwd
cat এখানে file-এর content terminal-এ print করার জন্য ব্যবহার করা হয়েছে।
উদাহরণ হিসেবে:
root:x:0:0:root:/root:/bin/bash
habib:x:1001:1001::/home/habib:/bin/bash
এখান থেকে user-এর account-related information পাওয়া যায়।
4. User-এর Password Set করা
নতুন user-এর password সেট করতে:
passwd habib
তারপর Linux নতুন password এবং confirmation চাইবে।
New password:
Retype new password:
passwd: password updated successfully
Root user অন্য user-এর password সেট বা পরিবর্তন করতে পারে।
5. এক User থেকে অন্য User-এ Switch করা
User switch করার জন্য su ব্যবহার করা যায়।
su - habib
- ব্যবহার করলে target user's login environment সহ shell শুরু করা হয়।
আবার আগের shell-এ ফিরে আসতে:
exit
উদাহরণ:
root@ubuntu:/# su - habib
habib@ubuntu:~$
এখানে লক্ষ্য করুন:
Root → #
Normal → $
Source demonstration-এ root থেকে normal user-এ switch করার ক্ষেত্রে password প্রয়োজন হয়নি, কিন্তু normal user থেকে অন্য user বা root-এ switch করার ক্ষেত্রে authentication প্রয়োজন হয়েছে।
6. User Lock ও Unlock
কোনো user-এর login temporarily বন্ধ করতে চাইলে:
usermod -L habib
এখানে -L অর্থ account lock করা।
আবার unlock করতে:
usermod -U habib
এখানে -U account unlock করে।
এটি useful হতে পারে যখন কোনো account-এর login সাময়িকভাবে বন্ধ রাখতে হয়।
7. User Delete করা
শুধু user account delete করতে:
userdel habib
আর user-এর home directory-সহ delete করতে:
userdel -r habib
-r ব্যবহার করলে user-এর home directory এবং associated files-ও remove করার চেষ্টা করা হয়।
⚠️ Production server-এ এই command চালানোর আগে অবশ্যই নিশ্চিত হোন যে user-এর প্রয়োজনীয় data backup করা আছে।
8. Linux Group কী?
ধরুন একটি project-এ ১০ জন developer আছে।
আপনি চাইছেন তারা সবাই একটি নির্দিষ্ট directory access করতে পারবে।
প্রত্যেক user-এর permission আলাদাভাবে manage করার বদলে একটি Group তৈরি করে সবাইকে সেই group-এর member করা যায়।
অর্থাৎ:
Developer 1 ─┐
Developer 2 ─┤
Developer 3 ─┼──> developers group
Developer 4 ─┘
তারপর directory-র group permission configure করলেই group-এর members-দের access নিয়ন্ত্রণ করা যায়।
9. Primary Group বনাম Supplementary Group
Linux-এ user-এর সঙ্গে একাধিক group সম্পর্ক থাকতে পারে।
দুইটি গুরুত্বপূর্ণ category হলো:
Primary Group
User account তৈরির সময় একটি primary group থাকতে পারে এবং source example-এ user-এর username অনুযায়ী একটি group তৈরি হয়েছে। Primary group user-এর group identity-এর গুরুত্বপূর্ণ অংশ।
Supplementary Group
একজন user অতিরিক্ত একাধিক group-এর member হতে পারে।
উদাহরণ:
habib
├── habib ← Primary Group
├── admin ← Supplementary Group
└── developers ← Supplementary Group
এভাবে একই user একাধিক project বা resource group-এর অংশ হতে পারে।
10. Group তৈরি করা
নতুন group তৈরি করতে:
groupadd admin
এতে admin নামে একটি group তৈরি হবে।
System-এর group list দেখতে:
cat /etc/group
বর্তমান user কোন কোন group-এর member তা দেখতে:
groups
11. User-কে Group-এ Add করা
ধরুন admin নামে group আছে এবং আমরা habib user-কে সেখানে যোগ করতে চাই।
usermod -aG admin habib
এখানে:
-
usermod→ user configuration পরিবর্তন -
-a→ append -
-G→ supplementary group -
admin→ target group -
habib→ target user
তারপর:
groups
দিলে নতুন group-টি দেখা যাবে।
⚠️ -a কেন গুরুত্বপূর্ণ?
-aG ব্যবহার না করে শুধু -G ব্যবহার করলে existing supplementary group membership replace হয়ে যাওয়ার ঝুঁকি থাকে।
তাই existing groups-এর সঙ্গে নতুন group যোগ করার সময় সাধারণত:
usermod -aG group user
pattern ব্যবহার করা হয়।
12. Group থেকে User Remove করা
gpasswd দিয়ে কোনো user-কে group থেকে remove করা যায়:
gpasswd -d habib faltu
এখানে:
habib → User
faltu → Group
অর্থাৎ faltu group থেকে habib-কে remove করা হচ্ছে।
13. Group Delete করা
Group delete করতে:
groupdel admin
এতে admin group remove হবে।
14. এবার আসি File Permissions-এ 🔐
Linux-এর অন্যতম গুরুত্বপূর্ণ concept হলো File Permission।
একটি Linux system-এ সব user যেন সব file modify বা delete করতে না পারে, সেজন্য permission system ব্যবহার করা হয়।
একটি file-এর permission দেখতে:
ls -l
উদাহরণ:
-rw-r--r-- 1 habib habib 12 Nov 23 10:05 a.txt
প্রথম অংশ:
-rw-r--r--
এটাই মূল permission information।
15. r, w, x — তিনটি Basic Permission
Linux permission-এর তিনটি basic mode:
| Permission | Meaning |
|---|---|
r |
Read |
w |
Write |
x |
Execute |
r — Read
File-এর content পড়ার permission।
r = Read
w — Write
File modify করার permission।
Directory-এর ক্ষেত্রে write permission থাকলে directory-এর content পরিবর্তন করার ক্ষমতা পাওয়া যায়।
x — Execute
Executable file বা script চালানোর permission।
Directory-এর ক্ষেত্রে x permission directory-তে enter/traverse করার সঙ্গে সম্পর্কিত।
16. User, Group এবং Others
এই অংশটি Linux permission বোঝার জন্য সবচেয়ে গুরুত্বপূর্ণ।
ধরুন:
-rwxr-xr--
এখানে permission-কে তিন ভাগে ভাগ করা যায়:
-rwx r-x r--
│ │ │
│ │ └── Others
│ └────── Group
└─────────── User / Owner
অর্থাৎ:
User → rwx
Group → r-x
Others → r--
User / Owner
যে user file-এর owner।
Group
যে group file-এর সঙ্গে associated।
Others
Owner এবং group-এর বাইরে থাকা অন্য users।
এই তিন category-র জন্য আলাদা permission রাখা হয়।
17. ls -l Output কীভাবে পড়বেন?
এই output-টি দেখুন:
-rw-r--r-- 1 habib habib 12 Nov 23 10:05 a.txt
ভেঙে দেখলে:
- rw- r-- r--
│ │ │ │
│ │ │ └── Others
│ │ └─────────── Group
│ └──────────────────── User
└──────────────────────────────── File type
আর পুরো output-এর পরের অংশগুলো:
-rw-r--r-- 1 habib habib 12 Nov 23 10:05 a.txt
│ │ │ │ │ │
│ │ │ │ │ └── Name
│ │ │ │ └──────────── Date
│ │ │ └──────────────────── Size
│ │ └────────────────────────── Group
│ └───────────────────────────────── Owner
└────────────────────────────────────── Link count
File type-এর ক্ষেত্রে:
- = regular file
d = directory
Source example-এ directory-এর permission string d দিয়ে শুরু হয়েছে এবং regular file-এর ক্ষেত্রে - দিয়ে শুরু হয়েছে।
18. chmod — Permission পরিবর্তন করা
Permission পরিবর্তনের জন্য সবচেয়ে গুরুত্বপূর্ণ command:
chmod
chmod অর্থ change mode।
ধরুন:
ls -l a.txt
Output:
-rw-r--r--
আমরা owner-এর execute permission যোগ করতে চাই।
chmod u+x a.txt
এখানে:
u = user/owner
+ = add
x = execute
ফলে permission হবে:
-rwxr--r--
Source example-এ symbolic mode ব্যবহার করে permission যোগ এবং remove করার এই পদ্ধতিগুলো দেখানো হয়েছে।
19. Permission Remove করা
Owner-এর write permission remove করতে:
chmod u-w a.txt
Group-এর read permission remove করতে:
chmod g-r a.txt
Others-এর execute permission add করতে:
chmod o+x a.txt
এখানে:
u = user
g = group
o = others
+ = add permission
- = remove permission
r = read
w = write
x = execute
এক নজরে:
chmod u+x a.txt
chmod u-w a.txt
chmod g-r a.txt
chmod o+x a.txt
20. chown — File Ownership পরিবর্তন
Permission এবং ownership এক জিনিস নয়।
ধরুন a.txt-এর owner বর্তমানে:
habib
আপনি owner পরিবর্তন করে habibur করতে চান।
chown habibur a.txt
chown অর্থ change ownership। Source material-এ ownership পরিবর্তনের জন্য এই command এবং root-level access-এর প্রয়োজনীয়তা দেখানো হয়েছে।
Owner এবং group দুটো একসঙ্গে specify করা যায়:
chown habibur:developers a.txt
21. Directory Permission বনাম File Permission
একটি গুরুত্বপূর্ণ বিষয় হলো—directory-এর ক্ষেত্রে permission-এর meaning কিছুটা আলাদা।
ধরুন:
drwxr-xr--
Directory-এর ক্ষেত্রে:
-
r→ directory-এর entries list করার ক্ষমতা -
w→ directory-এর content পরিবর্তন করার ক্ষমতা -
x→ directory-তে enter/traverse করার ক্ষমতা
অর্থাৎ directory-তে x permission না থাকলে শুধু r থাকা যথেষ্ট নাও হতে পারে—directory-এর ভিতরের object access করার ক্ষেত্রে traversal permission গুরুত্বপূর্ণ।
22. ls -l-এর Size ও Link Count
ls -l শুধু permission দেখায় না। আরও metadata দেখায়।
উদাহরণ:
drwxr-xr-x 3 habib habib 4096 Nov 23 10:00 files/
-rw-r--r-- 1 habib habib 12 Nov 23 10:05 a.txt
এখানে 3 এবং 1 হলো link count-এর অংশ। Directory-এর ক্ষেত্রে . এবং .. এবং subdirectory-এর কারণে এই count পরিবর্তিত হতে পারে; সাধারণ file-এর ক্ষেত্রে এটি সাধারণত 1 থাকে।
Directory size কেন 4096?
Linux filesystem-এ directory metadata-এর জন্য অনেক ক্ষেত্রে 4096 bytes-এর মতো একটি size দেখা যায়। এটি directory-এর ভিতরের সব file-এর total size বোঝায় না।
অন্যদিকে:
a.txt → 12 bytes
মানে file-এর content-এর size 12 bytes।
23. একটি ছোট Hands-on Example
এখন পুরো বিষয়টা একটি ছোট workflow দিয়ে দেখি।
Step 1 — User তৈরি
useradd -m habib
Step 2 — Password সেট
passwd habib
Step 3 — User information দেখুন
id habib
Step 4 — Group তৈরি করুন
groupadd admin
Step 5 — User-কে group-এ add করুন
usermod -aG admin habib
Step 6 — Group membership check করুন
groups habib
Step 7 — একটি file তৈরি করুন
touch a.txt
Step 8 — Permission দেখুন
ls -l a.txt
Step 9 — Owner-কে execute permission দিন
chmod u+x a.txt
Step 10 — Ownership পরিবর্তন করুন
chown habibur a.txt
এভাবেই Linux-এর user → group → permission → ownership—এই পুরো relationship-টি practically বোঝা যায়।
24. সবচেয়ে গুরুত্বপূর্ণ Commands — Cheat Sheet 🚀
# User Management
useradd -m <username>
passwd <username>
id <username>
cat /etc/passwd
su - <username>
exit
usermod -L <username>
usermod -U <username>
userdel <username>
userdel -r <username>
# Group Management
groupadd <group>
cat /etc/group
groups
usermod -aG <group> <user>
gpasswd -d <user> <group>
groupdel <group>
# Permission & Ownership
ls -l
chmod u+x <file>
chmod u-w <file>
chmod g-r <file>
chmod o+x <file>
chown <user> <file>
chown <user>:<group> <file>
এই core commands-গুলোর summary source-এর cheat sheet-এও দেওয়া হয়েছে।
25. শেষ কথা
Linux-এর User, Group এবং Permission system প্রথমে একটু complicated মনে হতে পারে। কিন্তু concept-গুলো যদি তিনটি layer হিসেবে চিন্তা করেন, তাহলে বিষয়টি অনেক সহজ:
Linux Security Model
│
┌──────────────┼──────────────┐
│ │ │
User Group Permissions
│ │ │
Who are you? Who are they? What can they do?
User নির্ধারণ করে কে কাজ করছে।
Group নির্ধারণ করে কোন users একই access policy share করবে।
Permission নির্ধারণ করে তারা কী করতে পারবে।
আর এই তিনটির সঙ্গে:
useradd
usermod
groupadd
chmod
chown
এর মতো command ভালোভাবে বুঝে ফেললে Linux administration-এর একটি গুরুত্বপূর্ণ foundation তৈরি হয়ে যায়।
বিশেষ করে Docker, Kubernetes, Cloud এবং DevOps-এর দিকে যেতে চাইলে Linux fundamentals শক্ত হওয়া অত্যন্ত গুরুত্বপূর্ণ। Source lesson-টিও Linux fundamentals শেষ করে পরবর্তী Docker topics-এ যাওয়ার প্রসঙ্গটি তুলে ধরে।
Linux শুধু একটা operating system নয়—একজন developer বা DevOps engineer-এর জন্য এটি একটি fundamental skill।
Happy Learning! 🐧
Top comments (0)