Linux একটি মাল্টি-ইউজার অপারেটিং সিস্টেম হওয়ায়, এর একটি মেকানিজম আছে যা ফাইল পারমিশন সেট ও ম্যানেজ করে যেন শুধু অনুমোদিত প্রসেস এবং ইউজাররা বিভিন্ন ডিরেক্টরি এবং ফাইল অ্যাক্সেস করতে পারে। Linux ব্যবহার করার সময়, আপনি 다양한 পরিস্থিতিয়ে "Permission denied" এরর দেখতে পারেন যা ইঙ্গিত করে আপনার প্রয়োজনীয় প্রিভিলেজ নেই। এই টিউটোরিয়াল আপনাকে দেখাবে কীভাবে Linux-এ রিকার্সিভলি ফাইল পারমিশন পরিবর্তন করতে হয় যাতে আপনার পারমিশন সেটিংস সাব-ফোল্ডার এবং ফাইলগুলোর ওপর প্রয়োগ হয়।
Linux-এ ফাইল পারমিশন চেক করা
যখন কোনো ফাইল বা ডিরেক্টরি অপারেশনে "permission denied" এরর হয়, তবে শুরু করুন ইউজার, গ্রুপ এবং অন্যান্য জন্য আলোকেটেড পারমিশন চেক করে।
এটি করতে, আপনি ls -l কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, নিচে /var ডিরেক্টরির বিভিন্ন ফাইল এবং ডিরেক্টরির পারমিশন দেওয়া হলো।
উপরোক্ত আউটপুটে নির্দিষ্ট তথ্য থাকে।
- প্রথম কলামটি ফাইল এবং ডিরেক্টরি পারমিশন রিপ্রেজেন্ট করে। এই কলামের প্রথম লেটার টাইপ ইঙ্গিত করে:
dমানে ডিরেক্টরি,lমানে সিম্বলিক লিংক, এবং-মানে রেগুলার ফাইল। - অন্য নবটি ক্যারেক্টার তিনটি সেটে গ্রুপ করা হয়:
uuser,ggroup, এবংoowner ফাইল বা ডিরেক্টরি পারমিশন ইঙ্গিত করে।rমানে "read" পারমিশন,wমানে "write" পারমিশন, এবংxমানে "execute" পারমিশন।
একবার আপনার ওয়ার্কিং ডিরেক্টরি বা ফাইলের ফাইল পারমিশন জানলে, আপনি সেগুলো সহজে পরিবর্তন করতে পারেন।
chmod ব্যবহার করে ফাইল পারমিশন পরিবর্তন করা
chmod কমান্ড Linux-এ ফাইল পারমিশন পরিবর্তন করার সবচেয়ে সহজ পথ। কমান্ডের সাধারণ সিনট্যাক্স হলো:
chmod {permission}{operator}{mode}
- Permission: এটি ইউজার, গ্রুপ, ওয়নার, বা সকলের জন্য দেওয়া পারমিশন রিপ্রেজেন্ট করে।
- Operator: এটি পারমিশনের অ্যাসাইনি কে দেওয়া পারমিশন ইঙ্গিত করে:
+পারমিশন দেয়,-পারমিশন ডেনাই করে, এবং=স্পেসিফাই করে কোন পারমিশন সেট করতে হবে। - Mode: এটি নির্দেশ করে কোন পারমিশন সেট করতে হবে:
rread,wwrite, বাxexecute।
উদাহরণস্বরূপ, /var ডিরেক্টরিতে backup ডিরেক্টরিতে সবার রাইট অ্যাক্সেস ডেনাই করতে, আপনি কমান্ড ব্যবহার করতে পারেন:
sudo chmod -w /var/backups
যদিও chmod কমান্ড ব্যবহার করে ফাইল পারমিশন পরিবর্তন করা ইফেক্টিভ, এটি শুধু স্পেসিফাইড ডিরেক্টরি বা ফাইলের ফাইল পারমিশন পরিবর্তন করে।
সৌভাগ্যক্রমে, আপনি একটি ডিরেক্টরি বা ফাইল এবং এর সাব-ডিরেক্টরি ও ফাইলগুলোর ফাইল পারমিশন রিকার্সিভলি পরিবর্তন করতে পারেন। সেটি করতে, chmod কমান্ডের রিকার্সিভ -r অপশন ব্যবহার করুন।
উদাহরণস্বরূপ, /var/backup ডিরেক্টরি এবং এর সকল ফাইল ও সাবডিরেক্টরির জন্য read পারমিশন রিকার্সিভলি রিমুভ করা যাক। বর্তমান পারমিশন:
drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups
এখন chmod রিকার্সিভলি চালিয়ে পারমিশন পরিবর্তন করুন:
sudo chmod –r -r /var/backups
এখন আপনি দেখতে পাবেন ফাইল পারমিশন পরিবর্তন হয়েছে।
find দিয়ে রিকার্সিভ চেঞ্জ পারমিশন
সাধারণত, আপনি ফাইল এবং ডিরেক্টরিকে একই পারমিশনে সেট করবেন না। কারণ একটি স্পেসিফিক ডিরেক্টরিতে cd করতে আপনাকে এক্সিকিউট পারমিশন প্রয়োজন। যাইহোক, অধিকাংশ ফাইলে এই এক্সিকিউট পারমিশন প্রয়োজন নেই।
এটি অতিক্রম করতে, আপনি Linux-এ find ইউটিলিটি ব্যবহার করতে পারেন। এটি আপনাকে শুধু স্পেসিফিক ফাইল বা ডিরেক্টরি খুঁজে সেগুলোর ওপর পারমিশন সেট করতে দেয়।
আমরা /var/log ডিরেক্টরি নিই। ডিরেক্টরিতে ফাইল এবং ডিরেক্টরি দুটোই আছে।
শুধু ফাইলের জন্য স্পেসিফিক পারমিশন সেট করতে, আমরা -type f অপশন সহ find কমান্ড ব্যবহার করতে পারি।
উদাহরণ কমান্ড নিচে:
sudo find /var/log/ -type f -exec chmod 777 {} \;
উপরোক্ত উদাহরণে, আমরা find কমান্ড ব্যবহার করেছি /var/log ডিরেক্টরিতে ফাইল সার্চ করতে, তারপর ইউজার, গ্রুপ এবং সকলের জন্য read, write এবং execute পারমিশন সেট করেছি।
আমরা ডিরেক্টরির জন্যও একই কেস করতে পারি। এই কেসে, আমরা -type d স্পেসিফাই করি শুধু ডিরেক্টরি পেতে।
উদাহরণস্বরূপ:
sudo find /var/log/ -type d -exec chmod 755 {} \;
উপরোক্ত উদাহরণে, আমরা শুধু ডিরেক্টরিতে ৭৫৫ পারমিশন সেট করেছি, ফাইল এবং ডিরেক্টরি দুটোই নয়।
আপনি ls -la কমান্ড ব্যবহার করে এটি ভেরিফাই করতে পারেন।
আপনি লক্ষ্য করবেন সকল ফাইলের পারমিশন ৭৭৭, যখন ডিরেক্টরিগুলোর ৭৫৫ পারমিশন।
শেষ কথা
Linux-এ ফাইল পারমিশন পরিবর্তন করা জানা একটি এসেনশিয়াল স্কিল, কারণ এটি অননুমোদিত অ্যাক্সেস এবং বিভিন্ন ফাইল ও ডিরেক্টরির মডিফিকেশন প্রতিরোধ করে। পাশাপাশি, আপনি ফাইল আোনারশিপ পরিবর্তন করে ফাইল অ্যাক্সেস রেস্ট্রিক্ট করতে পারেন বা আরও ফাইন কন্ট্রোলের জন্য অ্যাক্সেস কন্ট্রোল লিস্ট ব্যবহার করতে পারেন।