DEV Community

Ragib Hasan
Ragib Hasan Subscriber

Posted on

Linux User, Group & File Permission Management — A Hands-on Guide 🐧

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 -l output কীভাবে পড়তে হয়

1. Linux User কী?

আপনি যখন Linux machine-এ login করেন, তখন আপনি একটি User হিসেবে কাজ করেন।

Linux-এ সাধারণভাবে দুই ধরনের User নিয়ে কাজ করা হয়:

                    Linux Users
                         │
             ┌───────────┴───────────┐
             │                       │
        Root User              Normal User
        (Superuser)            (Standard User)
             │                       │
       Full Control             Limited Access
Enter fullscreen mode Exit fullscreen mode

Root User

Root হলো Linux-এর সবচেয়ে powerful user।

Root user-এর system-এর প্রায় সব resource-এর ওপর administrative control থাকে। সে file দেখতে, modify করতে, delete করতে এবং permission পরিবর্তন করতে পারে।

Root shell-এ সাধারণত prompt-এর শেষে # দেখা যায়:

root@ubuntu:/#
Enter fullscreen mode Exit fullscreen mode

Normal User

Normal user সাধারণ কাজের জন্য ব্যবহৃত হয় এবং তার access সীমিত থাকে। এর উদ্দেশ্য হলো অসাবধানতাবশত গুরুত্বপূর্ণ system file বা configuration পরিবর্তন করে ফেলা থেকে system-কে রক্ষা করা।

Normal user-এর prompt সাধারণত $ দিয়ে শেষ হয়:

habib@ubuntu:~$
Enter fullscreen mode Exit fullscreen mode

Rule of thumb: প্রতিদিনের কাজের জন্য normal user ব্যবহার করা নিরাপদ; administrative কাজের জন্য প্রয়োজন অনুযায়ী elevated privileges ব্যবহার করা উচিত।


2. User Management

এবার terminal-এ হাতে-কলমে User management করা যাক।

নতুন User তৈরি করা

useradd দিয়ে নতুন user তৈরি করা যায়।

useradd -m habib
Enter fullscreen mode Exit fullscreen mode

এখানে:

  • useradd → নতুন user তৈরি করে
  • -m → user-এর জন্য home directory তৈরি করে
  • habib → নতুন username

-m ব্যবহার করলে সাধারণত:

/home/habib
Enter fullscreen mode Exit fullscreen mode

directory তৈরি হবে। -m না দিলে account তৈরি হলেও home directory স্বয়ংক্রিয়ভাবে তৈরি নাও হতে পারে।


User-এর UID এবং Group Information দেখা

কোনো user-এর identification information দেখতে:

id habib
Enter fullscreen mode Exit fullscreen mode

উদাহরণ:

uid=1001(habib)
gid=1001(habib)
groups=1001(habib)
Enter fullscreen mode Exit fullscreen mode

এখানে:

  • 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
Enter fullscreen mode Exit fullscreen mode

cat এখানে file-এর content terminal-এ print করার জন্য ব্যবহার করা হয়েছে।

উদাহরণ হিসেবে:

root:x:0:0:root:/root:/bin/bash
habib:x:1001:1001::/home/habib:/bin/bash
Enter fullscreen mode Exit fullscreen mode

এখান থেকে user-এর account-related information পাওয়া যায়।


4. User-এর Password Set করা

নতুন user-এর password সেট করতে:

passwd habib
Enter fullscreen mode Exit fullscreen mode

তারপর Linux নতুন password এবং confirmation চাইবে।

New password:
Retype new password:
passwd: password updated successfully
Enter fullscreen mode Exit fullscreen mode

Root user অন্য user-এর password সেট বা পরিবর্তন করতে পারে।


5. এক User থেকে অন্য User-এ Switch করা

User switch করার জন্য su ব্যবহার করা যায়।

su - habib
Enter fullscreen mode Exit fullscreen mode

- ব্যবহার করলে target user's login environment সহ shell শুরু করা হয়।

আবার আগের shell-এ ফিরে আসতে:

exit
Enter fullscreen mode Exit fullscreen mode

উদাহরণ:

root@ubuntu:/# su - habib
habib@ubuntu:~$
Enter fullscreen mode Exit fullscreen mode

এখানে লক্ষ্য করুন:

Root    → #
Normal  → $
Enter fullscreen mode Exit fullscreen mode

Source demonstration-এ root থেকে normal user-এ switch করার ক্ষেত্রে password প্রয়োজন হয়নি, কিন্তু normal user থেকে অন্য user বা root-এ switch করার ক্ষেত্রে authentication প্রয়োজন হয়েছে।


6. User Lock ও Unlock

কোনো user-এর login temporarily বন্ধ করতে চাইলে:

usermod -L habib
Enter fullscreen mode Exit fullscreen mode

এখানে -L অর্থ account lock করা।

আবার unlock করতে:

usermod -U habib
Enter fullscreen mode Exit fullscreen mode

এখানে -U account unlock করে।

এটি useful হতে পারে যখন কোনো account-এর login সাময়িকভাবে বন্ধ রাখতে হয়।


7. User Delete করা

শুধু user account delete করতে:

userdel habib
Enter fullscreen mode Exit fullscreen mode

আর user-এর home directory-সহ delete করতে:

userdel -r habib
Enter fullscreen mode Exit fullscreen mode

-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 ─┘
Enter fullscreen mode Exit fullscreen mode

তারপর 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
Enter fullscreen mode Exit fullscreen mode

এভাবে একই user একাধিক project বা resource group-এর অংশ হতে পারে।


10. Group তৈরি করা

নতুন group তৈরি করতে:

groupadd admin
Enter fullscreen mode Exit fullscreen mode

এতে admin নামে একটি group তৈরি হবে।

System-এর group list দেখতে:

cat /etc/group
Enter fullscreen mode Exit fullscreen mode

বর্তমান user কোন কোন group-এর member তা দেখতে:

groups
Enter fullscreen mode Exit fullscreen mode

11. User-কে Group-এ Add করা

ধরুন admin নামে group আছে এবং আমরা habib user-কে সেখানে যোগ করতে চাই।

usermod -aG admin habib
Enter fullscreen mode Exit fullscreen mode

এখানে:

  • usermod → user configuration পরিবর্তন
  • -a → append
  • -G → supplementary group
  • admin → target group
  • habib → target user

তারপর:

groups
Enter fullscreen mode Exit fullscreen mode

দিলে নতুন group-টি দেখা যাবে।

⚠️ -a কেন গুরুত্বপূর্ণ?

-aG ব্যবহার না করে শুধু -G ব্যবহার করলে existing supplementary group membership replace হয়ে যাওয়ার ঝুঁকি থাকে।

তাই existing groups-এর সঙ্গে নতুন group যোগ করার সময় সাধারণত:

usermod -aG group user
Enter fullscreen mode Exit fullscreen mode

pattern ব্যবহার করা হয়।


12. Group থেকে User Remove করা

gpasswd দিয়ে কোনো user-কে group থেকে remove করা যায়:

gpasswd -d habib faltu
Enter fullscreen mode Exit fullscreen mode

এখানে:

habib → User
faltu → Group
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ faltu group থেকে habib-কে remove করা হচ্ছে।


13. Group Delete করা

Group delete করতে:

groupdel admin
Enter fullscreen mode Exit fullscreen mode

এতে admin group remove হবে।


14. এবার আসি File Permissions-এ 🔐

Linux-এর অন্যতম গুরুত্বপূর্ণ concept হলো File Permission

একটি Linux system-এ সব user যেন সব file modify বা delete করতে না পারে, সেজন্য permission system ব্যবহার করা হয়।

একটি file-এর permission দেখতে:

ls -l
Enter fullscreen mode Exit fullscreen mode

উদাহরণ:

-rw-r--r-- 1 habib habib 12 Nov 23 10:05 a.txt
Enter fullscreen mode Exit fullscreen mode

প্রথম অংশ:

-rw-r--r--
Enter fullscreen mode Exit fullscreen mode

এটাই মূল 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
Enter fullscreen mode Exit fullscreen mode

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--
Enter fullscreen mode Exit fullscreen mode

এখানে permission-কে তিন ভাগে ভাগ করা যায়:

-rwx r-x r--
 │    │   │
 │    │   └── Others
 │    └────── Group
 └─────────── User / Owner
Enter fullscreen mode Exit fullscreen mode

অর্থাৎ:

User     → rwx
Group    → r-x
Others   → r--
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

ভেঙে দেখলে:

-          rw-      r--      r--
│           │        │        │
│           │        │        └── Others
│           │        └─────────── Group
│           └──────────────────── User
└──────────────────────────────── File type
Enter fullscreen mode Exit fullscreen mode

আর পুরো output-এর পরের অংশগুলো:

-rw-r--r--  1  habib  habib  12  Nov 23 10:05  a.txt
             │    │      │     │       │          │
             │    │      │     │       │          └── Name
             │    │      │     │       └──────────── Date
             │    │      │     └──────────────────── Size
             │    │      └────────────────────────── Group
             │    └───────────────────────────────── Owner
             └────────────────────────────────────── Link count
Enter fullscreen mode Exit fullscreen mode

File type-এর ক্ষেত্রে:

- = regular file
d = directory
Enter fullscreen mode Exit fullscreen mode

Source example-এ directory-এর permission string d দিয়ে শুরু হয়েছে এবং regular file-এর ক্ষেত্রে - দিয়ে শুরু হয়েছে।


18. chmod — Permission পরিবর্তন করা

Permission পরিবর্তনের জন্য সবচেয়ে গুরুত্বপূর্ণ command:

chmod
Enter fullscreen mode Exit fullscreen mode

chmod অর্থ change mode

ধরুন:

ls -l a.txt
Enter fullscreen mode Exit fullscreen mode

Output:

-rw-r--r--
Enter fullscreen mode Exit fullscreen mode

আমরা owner-এর execute permission যোগ করতে চাই।

chmod u+x a.txt
Enter fullscreen mode Exit fullscreen mode

এখানে:

u = user/owner
+ = add
x = execute
Enter fullscreen mode Exit fullscreen mode

ফলে permission হবে:

-rwxr--r--
Enter fullscreen mode Exit fullscreen mode

Source example-এ symbolic mode ব্যবহার করে permission যোগ এবং remove করার এই পদ্ধতিগুলো দেখানো হয়েছে।


19. Permission Remove করা

Owner-এর write permission remove করতে:

chmod u-w a.txt
Enter fullscreen mode Exit fullscreen mode

Group-এর read permission remove করতে:

chmod g-r a.txt
Enter fullscreen mode Exit fullscreen mode

Others-এর execute permission add করতে:

chmod o+x a.txt
Enter fullscreen mode Exit fullscreen mode

এখানে:

u = user
g = group
o = others

+ = add permission
- = remove permission

r = read
w = write
x = execute
Enter fullscreen mode Exit fullscreen mode

এক নজরে:

chmod u+x a.txt
chmod u-w a.txt
chmod g-r a.txt
chmod o+x a.txt
Enter fullscreen mode Exit fullscreen mode

20. chown — File Ownership পরিবর্তন

Permission এবং ownership এক জিনিস নয়।

ধরুন a.txt-এর owner বর্তমানে:

habib
Enter fullscreen mode Exit fullscreen mode

আপনি owner পরিবর্তন করে habibur করতে চান।

chown habibur a.txt
Enter fullscreen mode Exit fullscreen mode

chown অর্থ change ownership। Source material-এ ownership পরিবর্তনের জন্য এই command এবং root-level access-এর প্রয়োজনীয়তা দেখানো হয়েছে।

Owner এবং group দুটো একসঙ্গে specify করা যায়:

chown habibur:developers a.txt
Enter fullscreen mode Exit fullscreen mode

21. Directory Permission বনাম File Permission

একটি গুরুত্বপূর্ণ বিষয় হলো—directory-এর ক্ষেত্রে permission-এর meaning কিছুটা আলাদা।

ধরুন:

drwxr-xr--
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

এখানে 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
Enter fullscreen mode Exit fullscreen mode

মানে file-এর content-এর size 12 bytes।


23. একটি ছোট Hands-on Example

এখন পুরো বিষয়টা একটি ছোট workflow দিয়ে দেখি।

Step 1 — User তৈরি

useradd -m habib
Enter fullscreen mode Exit fullscreen mode

Step 2 — Password সেট

passwd habib
Enter fullscreen mode Exit fullscreen mode

Step 3 — User information দেখুন

id habib
Enter fullscreen mode Exit fullscreen mode

Step 4 — Group তৈরি করুন

groupadd admin
Enter fullscreen mode Exit fullscreen mode

Step 5 — User-কে group-এ add করুন

usermod -aG admin habib
Enter fullscreen mode Exit fullscreen mode

Step 6 — Group membership check করুন

groups habib
Enter fullscreen mode Exit fullscreen mode

Step 7 — একটি file তৈরি করুন

touch a.txt
Enter fullscreen mode Exit fullscreen mode

Step 8 — Permission দেখুন

ls -l a.txt
Enter fullscreen mode Exit fullscreen mode

Step 9 — Owner-কে execute permission দিন

chmod u+x a.txt
Enter fullscreen mode Exit fullscreen mode

Step 10 — Ownership পরিবর্তন করুন

chown habibur a.txt
Enter fullscreen mode Exit fullscreen mode

এভাবেই 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>
Enter fullscreen mode Exit fullscreen mode

এই 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?
Enter fullscreen mode Exit fullscreen mode

User নির্ধারণ করে কে কাজ করছে।

Group নির্ধারণ করে কোন users একই access policy share করবে।

Permission নির্ধারণ করে তারা কী করতে পারবে।

আর এই তিনটির সঙ্গে:

useradd
usermod
groupadd
chmod
chown
Enter fullscreen mode Exit fullscreen mode

এর মতো 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)