লিনাক্স টার্মিনালে ls -l কমান্ড দিয়ে ফাইল পারমিশন rwx দেখানো এবং chmod 755 কমান্ডের ব্যবহার
লিনাক্স টার্মিনালে ls -l কমান্ড দিয়ে ফাইল পারমিশন rwx দেখানো এবং chmod 755 কমান্ডের ব্যবহার

লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস

Part-1 এ আমরা tolearn ইউজার বানিয়েছি। কিন্তু সে কোন ফাইল পড়তে পারবে, কোনটা এডিট করতে পারবে? সেটা ঠিক করে দেয় ফাইল পারমিশন। ভুল পারমিশন = হ্যাক হওয়ার রাস্তা খুলে দেওয়া।

প্রয়োজনীয় প্যাকেজ: coreutils এবং acl – sudo apt install acl দিয়ে ACL ইনস্টল করুন।

Step 1: বেসিক পারমিশন বোঝা – ls -l

যেকোনো ফাইলের পারমিশন দেখুন:

Bash

ls -l /var/www/project/index.php

আউটপুট: -rwxr-xr-- 1 tolearn www-data 2048 Aug 4 22:00 index.php

ব্যাখ্যা:

অংশমানে
-ফাইল, d হলে ডিরেক্টরি
rwxOwner tolearn এর পারমিশন: Read, Write, Execute
r-xGroup www-data এর পারমিশন: Read, Execute
r--Others এর পারমিশন: শুধু Read

Numeric Value: r=4, w=2, x=1। তাই rwx = 7, r-x = 5, r-- = 4। rwxr-xr-- মানে 754।

Step 2: পারমিশন পরিবর্তন – chmod

সবচেয়ে কমন পারমিশন:

Bash

chmod u+x script.sh  # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt   # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt   # Others কে শুধু Read পারমিশন দিন

Symbolic Way:

chmod u+x script.sh # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt # Others কে শুধু Read পারমিশন দিন

Step 3: মালিকানা পরিবর্তন – chown ও chgrp

ফাইলের মালিক ও গ্রুপ চেঞ্জ:

Bash

sudo chown tolearn:www-data /var/www/project/index.php

ব্যাখ্যা: tolearn হলো নতুন Owner, www-data হলো নতুন Group।

শুধু গ্রুপ চেঞ্জ:

Bash

sudo chgrp developers /var/www/project/

Step 4: স্পেশাল পারমিশন – setuid, setgid, sticky bit

এগুলো অ্যাডভান্সড সিকিউরিটির জন্য।

১. setuid 4xxx: ফাইলটি যে Owner-এর, তার পারমিশন নিয়ে রান হবে। passwd কমান্ড এভাবে কাজ করে।

Bash

sudo chmod 4755 /usr/bin/program

২. setgid 2xxx: ফোল্ডারে নতুন ফাইল তৈরি হলে Parent ফোল্ডারের গ্রুপ পাবে। শেয়ার্ড ফোল্ডারের জন্য দরকারি।

Bash

sudo chmod 2775 /var/www/shared_project/

৩. sticky bit 1xxx: /tmp ফোল্ডারে থাকে। ইউজার শুধু নিজের ফাইল ডিলিট করতে পারবে।

Bash

sudo chmod 1777 /tmp

Step 5: ACL – Access Control List: আসল ক্ষমতা

chmod দিয়ে শুধু 3 ধরনের ইউজার কন্ট্রোল করা যায়। কিন্তু যদি tolearn ইউজারকে রিড আর developer ইউজারকে রাইট দিতে চান? তখন লাগবে ACL।

১. ACL চেক করা:

Bash

getfacl /var/www/project/index.php

২. নির্দিষ্ট ইউজারকে পারমিশন দেওয়া:

Bash

sudo setfacl -m u:developer:rw /var/www/project/index.php

ব্যাখ্যা: developer ইউজারকে Read+Write দিলাম, অথচ ফাইলের Owner tolearn ই আছে।

৩. নির্দিষ্ট গ্রুপকে পারমিশন দেওয়া:

Bash

sudo setfacl -m g:testers:r /var/www/project/

৪. ACL মুছে ফেলা:

Bash

sudo setfacl -b /var/www/project/index.php

Step 6: ডিরেক্টরি স্ট্রাকচার ও বেস্ট প্র্যাকটিস

ওয়েব সার্ভারের জন্য রেকমেন্ডেড পারমিশন:

/var/www/ root:root 755
└── project/ tolearn:www-data 755
├── index.php tolearn:www-data 644
├── uploads/ www-data:www-data 775 + setgid
└── config.php tolearn:www-data 640 # Others পড়তে পারবে না

গোল্ডেন রুল:

  1. ফোল্ডার: 755, ফাইল: 644
  2. কনফিগ ফাইল: 640 বা 600
  3. কখনোই 777 পারমিশন দেবেন না।

3. সিরিজের পরবর্তী পর্ব

Part-3: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং – পাসওয়ার্ড ছাড়া সিকিউর লগইন এবং root লগইন বন্ধ করা শিখব।