Linux file permission সহজ ভাষায়: chmod, chown ও umask
Permission ঠিক করে কে ফাইল পড়তে, লিখতে ও চালাতে পারবে। পড়তে, বদলাতে ও নিরাপদ ডিফল্ট বাছতে শিখুন।

Linux-এ প্রতিটি ফাইল ও directory-র একটি owner, একটি group এবং permission-এর সেট আছে, যা ঠিক করে কে এটি দিয়ে কী করতে পারবে। এটি বোঝা server নিরাপত্তার গোড়া।
ls -l পড়া
-rwxr-xr-- 1 deploy www-data 4096 Oct 26 10:00 app.sh
- প্রথম অক্ষর: ধরন (
-ফাইল,ddirectory,llink)। - পরের নয় অক্ষর, তিনটি করে তিন দলে: owner, group, others।
- তারপর owner (
deploy) ও group (www-data)।
প্রতিটি দলে তিনটি সম্ভাব্য অক্ষর:
rread,wwrite,xexecute (ফাইল চালানো, বা directory-তে ঢোকা)।-মানে সেই permission নেই।
তাই rwxr-xr-- মানে: owner পড়তে, লিখতে ও চালাতে পারে; group পড়তে ও চালাতে পারে; others শুধু পড়তে পারে।
Directory-তে permission-এর মানে
r: ভেতরের নামের তালিকা দেখা।w: ভেতরে ফাইল বানানো, নাম বদল বা মোছা।x: directory-তে ঢোকা এবং নাম ধরে item access করা।
x ছাড়া directory পড়তে পারলেও ব্যবহার করা যায় না।
chmod দিয়ে permission বদল
Symbolic রূপ: কে (u user/owner, g group, o others, a সবাই), একটি চিহ্ন (+, -, =) এবং permission।
chmod u+x script.sh # owner-কে execute যোগ
chmod g-w file.txt # group থেকে write সরানো
chmod o= secret.txt # others-এর সব access সরানো
Octal রূপ: প্রতিটি permission-এর একটি সংখ্যা: read = 4, write = 2, execute = 1। প্রতি দলের জন্য যোগ করুন।
| সংখ্যা | মানে |
|---|---|
| 7 | rwx |
| 6 | rw- |
| 5 | r-x |
| 4 | r-- |
| 0 | --- |
chmod 640 config.env # owner rw, group r, others কিছুই না
chmod 755 script.sh # owner rwx, group ও others r-x
chmod 700 ~/.ssh # শুধু owner
একটি folder ও তার সবকিছু বদলাতে -R ব্যবহার করুন, সাবধানে।
chown দিয়ে owner ও group বদল
chown deploy file.txt
chown deploy:www-data file.txt
chown -R deploy:deploy /srv/app
সাধারণত এর জন্য sudo লাগে।
umask: নতুন ফাইলের ডিফল্ট
umask ডিফল্ট (ফাইলে 666, directory-তে 777) থেকে permission সরায়। প্রচলিত মান 022, যা ফাইলকে 644 ও directory-কে 755 দেয়। ব্যক্তিগত data-র জন্য কড়া 027 বা 077 নিরাপদ।
সাধারণ জিনিসের নিরাপদ ডিফল্ট
| Item | সাধারণ permission |
|---|---|
| Web কনটেন্ট (public) | ফাইল 644, directory 755 |
| Secret-সহ অ্যাপ config | 600 বা 640, service user-এর মালিকানায় |
~/.ssh directory |
700 |
| Private SSH key | 600 (অন্যরা পড়তে পারলে SSH key প্রত্যাখ্যান করে) |
| যে script চালান | 755 বা 750 |
chmod 777 এড়ান
777 সিস্টেমের যে কাউকে ফাইল পড়তে, লিখতে ও চালাতে দেয়। Permission error-এর "দ্রুত সমাধান" হিসেবে এটি প্রচলিত, আর এটি নিরাপত্তা ফুটো। বদলে আসল কারণ খুঁজুন: ভুল owner, ভুল group বা directory-তে x না থাকা।
বিশেষ bit (জানা ভালো)
- setuid / setgid (
s): owner বা group-এর অধিকারে প্রোগ্রাম চালানো। শক্তিশালী ও ঝুঁকিপূর্ণ; audit করুন। /tmp-এর মতো শেয়ার করা directory-তে sticky bit (t): user শুধু নিজের ফাইল মুছতে পারে।
মূল কথা: Permission owner, group ও others হিসেবে পড়ুন, যা কাজ করে তার সবচেয়ে কম access দিন (600, 640, 644, 750, 755), 777-এর বদলে সঠিক owner সেট করুন, এবং secret শুধু যে service-এর দরকার তার কাছে পড়ার যোগ্য রাখুন।
Linux ও DevOps সিরিজ, পর্ব ১ (server ও container): 1 নম্বর (মোট 5)।


