Linux file permission সহজ ভাষায়: chmod, chown ও umask

Permission ঠিক করে কে ফাইল পড়তে, লিখতে ও চালাতে পারবে। পড়তে, বদলাতে ও নিরাপদ ডিফল্ট বাছতে শিখুন।

owner, group ও others-এর permission ব্লকসহ একটি ফাইল

Linux-এ প্রতিটি ফাইল ও directory-র একটি owner, একটি group এবং permission-এর সেট আছে, যা ঠিক করে কে এটি দিয়ে কী করতে পারবে। এটি বোঝা server নিরাপত্তার গোড়া।

ls -l পড়া

-rwxr-xr-- 1 deploy www-data 4096 Oct 26 10:00 app.sh
  • প্রথম অক্ষর: ধরন (- ফাইল, d directory, l link)।
  • পরের নয় অক্ষর, তিনটি করে তিন দলে: owner, group, others।
  • তারপর owner (deploy) ও group (www-data)।

প্রতিটি দলে তিনটি সম্ভাব্য অক্ষর:

  • r read, w write, x execute (ফাইল চালানো, বা 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)।

আরও পড়ুন

Recursion ও backtracking সহজ উদাহরণে

Recursion সমস্যার ছোট কপি সমাধান করে সমাধান করে। অনেক interview সমস্যায় ব্যবহৃত চিন্তার ধাপ ও backtracking টেমপ্লেট শিখুন।

Interview ও DSA•৩ মিনিটে পড়া