- 1 ১. ভূমিকা
- 2 ২. chmod কী? [Basic Understanding]
- 3 ৩. -rw-r--r-- এর অর্থ বিশ্লেষণ করে বোঝা
- 4 4. chmod [Practical Edition] ব্যবহার করে -rw-r–r– কীভাবে সেট করবেন
- 5 5. ls -l কমান্ড দিয়ে অনুমতি কীভাবে পরীক্ষা করবেন
- 6 6. GUI টুল ব্যবহার করে অনুমতি চেক ও পরিবর্তন (শুরুয়াতিদের জন্য)
- 7 ৭. chmod সেটিংসের জন্য নোটস এবং সমস্যা সমাধান
- 7.1 সঠিকভাবে সেট করেছি বলে মনে হলেও কাজ করছে না? কারণ কী হতে পারে?
- 7.2 “Permission denied” ত্রুটির কারণ এবং সমাধান
- 7.3 এক্সিকিউট অনুমতি ছাড়া ডিরেক্টরিতে অ্যাক্সেস করা যায় না
- 7.4 রিকার্সিভ পরিবর্তনের (-R) ফাঁদ
- 7.5 মালিক এবং গ্রুপের সাথে কম্বিনেশন ত্রুটি
- 7.6 ৭৭৭ বিপজ্জনক! অতিরিক্ত অনুমতিসম্পন্ন অনুমতির ঝুঁকি
- 8 ৮. ব্যবহারের উদাহরণ এবং সাধারণ পরিস্থিতি
- 9 ৯. FAQ
- 9.1 Q1. chmod 644 এবং -rw-r–r– এর মধ্যে পার্থক্য কী?
- 9.2 Q2. যদি একটি ফাইলে চালানোর অনুমতি না থাকে তাহলে কী হয়?
- 9.3 Q3. একটি ডিরেক্টরিকে 644 সেট করা ঠিক আছে কি?
- 9.4 Q4. সবচেয়ে সাধারণ অনুমতি সেটিংগুলি কী?
- 9.5 Q5. আমি কীভাবে একটি ফাইলের মালিক বা গ্রুপ পরিবর্তন করতে পারি?
- 9.6 Q6. সকল অপারেটিং সিস্টেমে ফাইল অনুমতি একই কি?
- 10 10. উপসংহার
১. ভূমিকা
লিনাক্সে “অ্যাক্সেস পারমিশন” কী?
লিনাক্স ও ইউনিক্স‑সদৃশ সিস্টেমে ফাইল ও ডিরেক্টরির “অ্যাক্সেস পারমিশন” (অনুমতি) সঠিকভাবে পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। এটি নিরাপত্তা দৃষ্টিকোণ থেকে এবং সিস্টেমের স্থিতিশীল কার্যক্রমের জন্য অপরিহার্য একটি উপাদান।
অনেকেই টার্মিনালে ফাইলের তালিকা দেখার সময় -rw-r--r-- এর মতো অপরিচিত চিহ্ন দেখেছেন এবং ভাবতে পারেন, “এটা কী বহন করে?”
chmod এবং -rw-r--r-- এর সম্পর্ক
এই চিহ্নগুলো ফাইলের অ্যাক্সেস পারমিশনের একটি প্রতীকী উপস্থাপনা। chmod কমান্ড ব্যবহার করে এই পারমিশনগুলো সেট ও পরিবর্তন করা হয়। অন্য কথায়, যখন আপনি chmod ব্যবহার করে কোনো ফাইলে নির্দিষ্ট পারমিশন প্রদান করেন, তখন ফলস্বরূপ -rw-r--r-- এর মতো চিহ্নগুলো প্রদর্শিত হয়।
এই প্রবন্ধের উদ্দেশ্য ও লক্ষ্য পাঠকগণ
এই প্রবন্ধে আমরা সহজবোধ্যভাবে, এমনকি নবীনদের জন্যও, -rw-r--r-- এর সুনির্দিষ্ট অর্থ এবং chmod ব্যবহার করে কীভাবে সেট ও পরিবর্তন করা যায় তা ব্যাখ্যা করব। এছাড়াও নিরাপত্তা সংক্রান্ত বিবেচনা এবং বাস্তব উদাহরণসহ ব্যবহারিক বিষয়গুলোকে স্পর্শ করব।
এই প্রবন্ধের লক্ষ্য হল বাস্তব জগতে প্রয়োগযোগ্য ব্যবহারিক জ্ঞানকে দৃঢ়ভাবে বোঝানো, যা লিনাক্সে নতুন থেকে শুরু করে টার্মিনাল অপারেশন সম্পর্কে কিছুটা ধারণা থাকা মধ্যম স্তরের ব্যবহারকারীদের জন্য উপযোগী।
২. chmod কী? [Basic Understanding]
chmod কমান্ডের ভূমিকা
chmod (উচ্চারণ “চম‑মড” অথবা “চেঞ্জ মোড”) হল “change mode” এর সংক্ষিপ্ত রূপ এবং লিনাক্স ও ইউনিক্স‑সদৃশ অপারেটিং সিস্টেমে ফাইল ও ডিরেক্টরির অ্যাক্সেস পারমিশন (অনুমতি) পরিবর্তনের জন্য ব্যবহৃত একটি কমান্ড।
এই কমান্ডের মাধ্যমে আপনি “কে কী অপারেশন (পড়া, লেখা, এক্সিকিউট) করতে পারবে” তা নমনীয়ভাবে নিয়ন্ত্রণ করতে পারেন।
ফাইল ও ডিরেক্টরির পারমিশন সঠিকভাবে সেট করা শুধুমাত্র নিরাপত্তা নিশ্চিত করার জন্যই নয়, ফাইল শেয়ারিং ও এক্সিকিউশন সংক্রান্ত সমস্যাগুলি প্রতিরোধ করার জন্যও গুরুত্বপূর্ণ।
chmod এর মৌলিক সিনট্যাক্স
chmod [options] [permissions] filename
উদাহরণস্বরূপ, এটি নিম্নরূপ ব্যবহার করা হয়:
chmod 644 sample.txt
এই কমান্ডটি sample.txt এর পারমিশন নিম্নরূপ পরিবর্তন করে:
-rw-r--r-- 1 user group 1234 Apr 13 20:00 sample.txt
- মালিক (user): পড়া ও লেখা অনুমোদিত (rw-)
- গ্রুপ: কেবল পড়া (r–)
- অন্যরা: কেবল পড়া (r–)
নির্দিষ্টকরণের দুই ধরণ: সংখ্যামূলক ও প্রতীকী
chmod দিয়ে অ্যাক্সেস পারমিশন নির্ধারণের দুটি পদ্ধতি রয়েছে:
- সংখ্যামূলক নির্দিষ্টকরণ (Numeric Mode)
- উদাহরণ:
chmod 755 script.sh - এই পদ্ধতিতে প্রতিটি ব্যবহারকারী প্রকারের জন্য পারমিশন সংখ্যামূলকভাবে নির্ধারিত হয়।
- প্রতীকী নির্দিষ্টকরণ (Symbolic Mode)
- উদাহরণ:
chmod u=rw,g=r,o=r file.txt - এই পদ্ধতিতে u (user), g (group), o (others) এর জন্য r (read), w (write), x (execute) চিহ্ন ব্যবহার করে পারমিশন নির্ধারিত হয়।
উভয় পদ্ধতিই শেষ পর্যন্ত একই পারমিশন সেট করতে পারে, তবে সংখ্যামূলক নির্দিষ্টকরণ বড় পরিমাণে পরিবর্তনের জন্য দ্রুত, আর প্রতীকী নির্দিষ্টকরণ আরও নমনীয় পরিবর্তনের সুযোগ দেয়। পরিস্থিতি অনুযায়ী সঠিক পদ্ধতি বেছে নেওয়াই সর্বোত্তম।
chmod এবং chown এর পার্থক্য লক্ষ্য করুন
chown কমান্ড প্রায়ই chmod এর সঙ্গে গুলিয়ে নেওয়া হয়।
chmod: অ্যাক্সেস পারমিশন (অনুমতি) পরিবর্তন করেchown: ফাইল ও ডিরেক্টরির “মালিক” ও “গ্রুপ” পরিবর্তন করে
তাদের উদ্দেশ্য ভিন্ন হওয়ায়, প্রতিটি কমান্ডের ভূমিকা স্পষ্টভাবে বোঝা গুরুত্বপূর্ণ।
৩. -rw-r--r-- এর অর্থ বিশ্লেষণ করে বোঝা
পারমিশন চিহ্নের গঠন
লিনাক্সে ls -l কমান্ড চালালে ফাইলের তথ্য নিম্নলিখিত ফরম্যাটে প্রদর্শিত হয়:
-rw-r--r-- 1 user group 1234 Apr 13 2025 sample.txt
এগুলোর মধ্যে সবচেয়ে বামদিকের -rw-r--r-- ফাইলের পারমিশন (অ্যাক্সেস রাইটস) নির্দেশ করে। এটি বুঝে আপনি সঠিকভাবে জানবেন কে কী অপারেশন করতে পারবে।
প্রতিটি অংশের বিশদ ব্যাখ্যা
① প্রথম অক্ষর: ফাইলের ধরন
| Symbol | Meaning |
|---|---|
- | Regular file |
d | Directory |
l | Symbolic link |
b | Block device |
c | Character device |
-rw-r--r-- এর ক্ষেত্রে, প্রথম - নির্দেশ করে যে এটি একটি “সাধারণ ফাইল”।
② অক্ষর ২ থেকে ১০: অ্যাক্সেস পারমিশন (৩টি অক্ষর × ৩টি সেট)
- মালিক (ব্যবহারকারী) →
rw-→ পড়া (r) এবং লেখা (w) অনুমোদিত, চালানো (x) অনুমোদিত নয়। - গ্রুপ →
r--→ কেবল পড়া অনুমোদিত। লেখা ও চালানো অনুমোদিত নয়। - অন্যান্য →
r--→ কেবল পড়া অনুমোদিত।
অতএব, অবস্থা হল শুধুমাত্র মালিকই সম্পাদনা করতে পারে, এবং অন্যান্য ব্যবহারকারীরা কেবল দেখার অনুমতি পায়।
সাংখ্যিক নোটেশনের সঙ্গে সামঞ্জস্য: 644 এর অর্থ
লিনাক্সে, একই অনুমতিগুলি সাংখ্যিক (অক্টাল) নোটেশন ব্যবহার করেও প্রকাশ করা যায়।
-rw-r--r-- এর সামঞ্জস্যপূর্ণ সাংখ্যিক নোটেশন হল 644।
| User Type | Symbolic Notation | Numeric | Meaning |
|---|---|---|---|
| Owner | rw- | 6 | Read + Write |
| Group | r-- | 4 | Read-only |
| Others | r-- | 4 | Read-only |
এই সংখ্যা নিম্নলিখিত গণনা থেকে প্রাপ্ত:
- পড়া (r) = 4
- লেখা (w) = 2
- চালানো (x) = 1
অতএব, rw- = 4 + 2 = 6, r-- = 4, r-- = 4 → মোট 644।
কেন এই অনুমতি ব্যবহার করা হয়?
-rw-r--r-- (644) হল ওয়েব সার্ভারে পাবলিক ফাইল এবং স্ট্যাটিক ফাইল (HTML, CSS ইত্যাদি) এর জন্য প্রায়ই ব্যবহৃত একটি অনুমতি।
এর কারণগুলো হল:
- শুধুমাত্র মাল সম্পাদনা করতে পারে → অনিচ্ছাকৃত পরিবর্তন রোধ করে
- অন্যান্য ব্যবহারকারীরা পড়তে পারে → ফাইল শেয়ারিং এবং প্রকাশনা সমর্থন করে
যথাযথভাবে ব্যবহার করলে, এটি নিরাপত্তা এবং সুবিধার সমন্বয় বজায় রেখে ফাইল ব্যবস্থাপনা সম্ভব করে।
4. chmod [Practical Edition] ব্যবহার করে -rw-r–r– কীভাবে সেট করবেন
chmod কমান্ড ব্যবহার করে অনুমতি পরিবর্তন করা
ফাইল ও ডিরেক্টরির অ্যাক্সেস অনুমতিগুলি chmod কমান্ডের মাধ্যমে স্বাধীনভাবে পরিবর্তন করা যায়। উদাহরণস্বরূপ, যদি আপনি অবস্থা -rw-r--r-- সেট করতে চান, তবে কেবল “644” অনুমতি নির্ধারণ করলেই হবে।
সাংখ্যিক নির্দিষ্টকরণ ব্যবহার করে সেটিং পদ্ধতি
chmod 644 filename ফরম্যাটটি ব্যবহার করুন।
chmod 644 document.txt
এই কমান্ডটি document.txt এর অনুমতিগুলি নিম্নরূপ পরিবর্তন করে:
-rw-r--r-- 1 user group 1234 Apr 13 20:00 document.txt
- মালিক (ব্যবহারকারী): পড়া ও লেখা অনুমোদিত (rw-)
- গ্রুপ: কেবল পড়া (r–)
- অন্যান্য: কেবল পড়া (r–)
প্রতীকী নির্দিষ্টকরণ ব্যবহার করে সেটিং পদ্ধতি
যদি আপনি অনুমতিগুলি আরও নমনভাবে পরিচালনা করতে চান, তবে প্রতীকী নির্দিষ্টকরণ কার্যকর।
chmod u=rw,g=r,o=r document.txt
এই কমান্ডের ব্যাখ্যা নিম্নরূপ u=rw → মালিকের জন্য পড়া ও লেখা অনুমতি সেট করে
g=r → গ্রুপের জন্য কেবল পড়া অনুমতি দেয়
* o=r → অন্যান্য ব্যবহারকার জন্য কেবল পড়া অনুমতি দেয়
ফলাফলটি সাংখ্যিক নির্দিষ্টকরণ 644 এর সঙ্গে সম্পূর্ণ একই।
ডিরেক্টরিতে প্রয়োগের সময় লক্ষ্যণীয় বিষয়
ফাইলের বিপরীতে, িরেক্টরিগুলির বিষয়বস্তুতে প্রবেশের জন্য “চালানো অনুমতি (x)” প্রয়োজন। উদাহরণস্বরূপ, নিম্নলিখিতভাবে সেট করলে প্রবেশাধিকার সীমাবদ্ধ হতে পারে:
chmod 644 my_folder
এই সেটিংয়ে কেবল পড়া অনুমতি দেওয়া হয়েছে, তবে ডিরেক্টরির বিষয়বস্তু “খোলার” (যা চালানো অনুমতি প্রয়োজন) কাজটি অসম্ভব হয়ে যায়।
সঠিক সেটিং উদাহরণ:
chmod 755 my_folder
- মালিক: পড়া, লেখা, চালানো
- গ্রুপ ও অন্যান্য: পড়া, চালানো
এভাবে সেট করলে অন্যান্য ব্যবহারকারীরাও ডিরেক্টরির ফাইলগুলি তালিকাভুক্ত করতে পারবে।
রিকার্সিভভাবে অনুমতি পরিবর্তন: -R অপশন
একই সাথে একাধিক ফাইল ও সাবডিরেক্টরি পরিবর্তন করতে চাইলে -R (recursive) অপশন ব্যবহার করুন।
chmod -R 644 my_folder
এই অপারেশনটি my_folder এর অধীনে থাকা সব ফাইলে 644 অনুমতি প্রয়োগ করে। তবে এই পদ্ধতির সঙ্গে কিছু বিষয় লক্ষ্যণীয়।
5. ls -l কমান্ড দিয়ে অনুমতি কীভাবে পরীক্ষা করবেন
ফাইলের অনুমতি কীভাবে পরীক্ষা করবেন?
ফাইল ও ডিরেক্টরির অ্যাক্সেস অনুমতি (permissions) পরীক্ষা করতে স্ট্যান্ডার্ড লিনাক্স কমান্ড ls -l ব্যবহার করুন। এটি “long listing format” এর সংক্ষিপ্ত রূপ এবং অনুমতি, মালিক, আকার, সর্বশেষ পরিবর্তনের তারিখ ইত্যাদি বিশদ তথ্য প্রদর্শন করে।
মৌলিক ব্যবহার
ls -l
এই কমান্ডটি চালালে নিম্নরূপ আউটপুট দেখা যাবে:
-rw-r--r-- 1 naoya devs 2048 Apr 13 20:00 index.html
প্রতিটি আইটেমের নিম্নলিখিত অর্থ রয়েছে:
| Item | Meaning |
|---|---|
-rw-r--r-- | Permissions (access rights) |
1 | Number of hard links (usually 1) |
naoya | Owner (user) |
devs | Group |
2048 | File size (bytes) |
Apr 13 20:00 | Last modification date and time |
index.html | Filename |
অনুমতি কলাম কীভাবে পড়বেন?
এখন -rw-r--r-- অংশটির দিকে মনোযোগ দিই, যা এই অধ্যায়ের মূল বিষয়। এটি নিম্নরূপ বিশ্লেষণ করা যায়:
- প্রথম অক্ষর: ফাইলের ধরন
-: সাধারণ ফাইলd: ডিরেক্টরিl: সিম্বলিক লিংক- বাকি ৯টি অক্ষর: অ্যাক্সেস অনুমতি (৩টি অক্ষর × ৩ সেট)
- মালিক (ব্যবহারকারী):
rw-→ রিড + রাইট - গ্রুপ:
r--→ শুধুমাত্র রিড - অন্যরা:
r--→ শুধুমাত্র রিড
অন্য কথায়, এই প্রদর্শন থেকে আপনি বুঝতে পারেন যে “শুধুমাত্র মালিকই এই ফাইলটি সম্পাদনা করতে পারে, এবং অন্যান্য ব্যবহারকারীরা কেবল পড়তে পারে।”
শুধুমাত্র নির্দিষ্ট ফাইল চেক করা
যদি আপনি শুধুমাত্র একটি নির্দিষ্ট ফাইলের অনুমতি চেক করতে চান, ফাইলের নাম নির্দিষ্ট করুন।
ls -l index.html
এটি আপনাকে শুধুমাত্র লক্ষ্য ফাইলটি চেক করতে দেয়। অনেক ফাইলযুক্ত ডিরেক্টরিতে এটি ব্যবহার করা সুবিধাজনক।
ডিরেক্টরি চেক করাও সম্ভব
আপনি ls -l দিয়ে ডিরেক্টরিও চেক করতে পারেন। তবে, যদি ডিরেক্টরির বিষয়বস্তু তালিকাভুক্ত করতে চান, তাহলে -d অপশনটি একসাথে ব্যবহার করুন।
ls -ld my_folder
এটি শুধুমাত্র my_folder নিজস্বের অনুমতি তথ্য দেখাবে (এর ভিতরের ফাইলগুলোর তালিকা দেখাবে না)।
অনুমতি চেক করার সময় নিরাপদে পরিচালনা
chmod দিয়ে অনুমতি সেট করার পরে, সর্বদা ls -l দিয়ে ফলাফল চেক করা সুপারিশ করা হয়।
যদি ভুল সেটিংস রেখে দেওয়া হয়, তা নিরাপত্তা ঘটনা বা অপ্রত্যাশিত আচরণ ঘটাতে পারে।
এছাড়াও, যদি একসাথে একাধিক ফাইল চেক করতে চান, তাহলে নিচের মতো পাইপ ব্যবহার করে সংযুক্ত করতে পারেন:
ls -l | grep '.sh'
এটি .sh (শেল স্ক্রিপ্ট) এক্সটেনশনযুক্ত ফাইলগুলোকে ফিল্টার করে এবং শুধুমাত্র সেগুলো দেখাবে।
6. GUI টুল ব্যবহার করে অনুমতি চেক ও পরিবর্তন (শুরুয়াতিদের জন্য)
কমান্ডে অস্বস্তি বোধ করা লোকদের জন্য বিকল্প
লিনাক্স অপারেশন মূলত টার্মিনাল ব্যবহার করে কমান্ড-লাইন অপারেশন, তবে অনেক শুরুয়াতি “শুধু টেক্সট স্ক্রিন কঠিন” বা “অবহেলিত ভুল করার ভয়” পায়।
এমন লোকদের জন্য আপনি GUI (গ্রাফিক্যাল ইউজার ইন্টারফেস) পদ্ধতি ব্যবহার করে ফাইলের অনুমতি চেক ও পরিবর্তন করতে পারেন।
উবুন্টুর ফাইল ম্যানেজার (Nautilus) এ অপারেশন
উবুন্টু সহ লিনাক্স ডিস্ট্রিবিউশনগুলোতে ডিফল্টভাবে “Nautilus” নামের একটি ফাইল ম্যানেজার থাকে। এটি উইন্ডোজের “File Explorer” এর সমতুল্য টুল।
কিভাবে চেক করবেন:
- লক্ষ্য বা ডিরেক্টরিতে র-ক্লিক করুন
- “Properties” নির্বাচন করুন
- “Permissions” ট্যাবটি খুলুন (ভার্সনের উপর নির্ভর করে “Access Rights” হিসেবে দেখাতে পারে)
এখানে আপনি যা করতে পারেন:
- মালিক ও গ্রুপ চেক ও পরিবর্তন (অ্যাডমিনিস্ট্রেটর অধিকার প্রয়োজন)
- রিড, রাইট, এক্সিকিউট অনুমতি পরিবর্তন
- অ্যাক্সেস অনুমতির পরিবর্তন সঙ্গে সঙ্গে প্রয়োগ হয়
GUI তে rw- ও r-- এর মতো চিহ্নের পরিবর্তে “Read only”, “Read and Write” ইত্যাদি সহজবোধ্য প্রকাশ দেখানো হয়, তাই শুরুয়াতিরাও নিশ্চিন্তে কাজ করতে পারে।
WinSCP (উইন্ডোজ ব্যবহারকারীদের জন্য SFTP ক্লায়েন্ট)
উইন্ডোজ থেকে রিমোট লিনাক্স সার্ভারে সংযোগ করার সময় আপনি WinSCP নামের একটি SFTP ক্লায়েন্ট ব্যবহার করে GUI তে অনুমতি সেট করতে পারেন।
অপারেশন পদ্ধতি:
- WinSCP দিয়ে সার্ভারে লগইন করুন
- পছন্দের ফাইলে রাইট-ক্লিক → “Properties”
- সংখ্যামূলক মান (যেমন 644) অথবা “Access Rights (Permissions)” এ চেকবক্স পরিবর্তন করুন
- “OK” ক্লিক করে প্রয় করুন
সুবিধা:
- সংখ্যামূলক ও সিম্বলিক উভয় উপস্থাপনা দিয়ে চেক করা যায়
- GUI তে রিকার্সিভ পারমিশন পরিবর্তনও সম্ভব (ডিরেক্টরির জন্য)
দ্রষ্টব্য:
- রুট অধিকার প্রয়োজনীয় ফাইলগুলো sudo অধিকার ছাড়া পরিবর্তন করা নাও যেতে পারে
<[https://winscp.net/eng/indexhttps://winscp.net/eng/index.php)> )
FileZilla (ক্রস-প্ল্যাটফর্ম SFTP ক্লায়েন্ট)
আপনি একইভাবে FileZilla নামের SFTP ক্লায়েন্ট ব্যবহার করে (ম্যাক ও লিনাক্সেও ব্যবহারযোগ্য) অনুমতি পরিবর্তন করতে পারেন।
প্রক্রিয়া:
- সার্ভারে সংযোগের পরে, সংশ্লিষ্ট ফাইলে রাইট-ক্লিক করুন
- “File permissions…” নির্বাচন করুন
- চেকবক্স বা সংখ্যামূলক মান দিয়ে সেট করুন এবং “OK” ক্লিক করে প্রয়োগ করুন
GUI অপারেশনের সুবিধা ও অসুবিধা
সুবিধা:
- শুরুয়াতিরা কম ভুল করার সম্ভাবনা থাকে
- পরিবর্তনগুলো তৎক্ষণাৎ ভিজ্যুয়ালি নিশ্চিত করা যায়
- কমান্ডে অপরিচিতদের জন্যও সহজে পরিচালনা করা যায়
অসুবিধা:
- সার্ভার সেটিংস এবং পরিবেশের উপর নির্ভর করে, GUI টুলস দিয়ে পরিবর্তন সম্ভব নাও হতে পারে
- প্রদর্শিত স্থিতি এবং প্রকৃত প্রতিফলন ভিন্ন হতে পারে, তাই নিশ্চিতকরণের জন্য
ls -lব্যবহার করা সুপারিশ করা হয়
<https://filezilla-project.org/>
৭. chmod সেটিংসের জন্য নোটস এবং সমস্যা সমাধান
সঠিকভাবে সেট করেছি বলে মনে হলেও কাজ করছে না? কারণ কী হতে পারে?
chmod কমান্ড দিয়ে অ্যাক্সেস অনুমতি পরিবর্তন করার পর, এটি প্রত্যাশিতভাবে কাজ নাও করতে পারে। অধিকাংশ ক্ষেত্রে, এটি অনুমতি সেটিং ত্রুটি বা অনুমতির ভুল বোঝাপড়ার কারণে ঘটে। এখানে, আমরা প্র্যাকটিসে সাধারণ সমস্যা সমাধানের উদাহরণ এবং তাদের সমাধান পরিচয় করব।
“Permission denied” ত্রুটির কারণ এবং সমাধান
লক্ষণ:
bash: ./script.sh: Permission denied
কারণ:
- আপনি যে ফাইলটি চালানোর চেষ্টা করছেন তাতে “এক্সিকিউট অনুমতি (x)” প্রদান করা হয়নি
সমাধান:
chmod +x script.sh
অথবা, সংখ্যাগত স্পেসিফিকেশন ব্যবহার করলে:
chmod 755 script.sh
এটি মনে রাখা গুরুত্বপূর্ণ যে “আপনি পড়তে এবং লিখতে পারেন, কিন্তু এক্সিকিউট করতে পারবেন না।”
এক্সিকিউট অনুমতি ছাড়া ডিরেক্টরিতে অ্যাক্সেস করা যায় না
যদি আপনি একটি ডিরেক্টরির জন্য chmod 644 সেট করেন, তাহলে আপনি তার কনটেন্ট পড়তে পারবেন না। কারণ:
- একটি ডিরেক্টরির জন্য “এক্সিকিউট অনুমতি (x)” অপরিহার্য যাতে “প্রবেশ” করতে এবং “কনটেন্ট দেখতে” পারা যায়।
উদাহরণ:
chmod 644 my_folder
ls my_folder
→ উপরের ক্ষেত্রে, আপনি কনটেন্ট প্রদর্শন করতে পারবেন না এবং একটি ত্রুটি ঘটতে পারে। সমাধান:
chmod 755 my_folder
রিকার্সিভ পরিবর্তনের (-R) ফাঁদ
chmod -R সুবিধাজনক হলেও, এটি ফাইল এবং ডিরেক্টরি উভয়ের জন্য একই অনুমতি প্রয়োগ করে, যা অপ্রত্যাশিত সমস্যা সৃষ্টি করতে পারে। সাধারণ ব্যর্থতার উদাহরণ:
chmod -R 644 /var/www/html
→ ডিরেক্টরিটি এক্সিকিউট অনুমতি হারায়, এবং আপনি তার কনটেন্ট অ্যাক্সেস করতে পারবেন না। সঠিক ব্যবহার:
# Directories with execute permission
find /var/www/html -type d -exec chmod 755 {} ;
# Files with 644
find /var/www/html -type f -exec chmod 644 {} ;
মালিক এবং গ্রুপের সাথে কম্বিনেশন ত্রুটি
chmod-এর পাশাপাশি, আপনাকে ফাইলের “মালিক (ব্যবহারকারী)” এবং “গ্রুপ”-এর দিকেও খেয়াল রাখতে হবে। উদাহরণস্বরূপ, যদি apache ব্যবহারকারীকে একটি ফাইল পড়তে হয়, কিন্তু মালিক একজন সাধারণ ব্যবহারকারী এবং অন্যান্য ব্যবহারকারীদের পড়ার অনুমতি নেই, তাহলে ওয়েব প্রদর্শন ব্যর্থ হবে। সমাধান:
- মালিক পরিবর্তন:
sudo chown www-data:www-data index.html - গ্রুপ অনুমতি প্রদান:
chmod 640 index.html(যদি গ্রুপটি উপযুক্ত হয়)
৭৭৭ বিপজ্জনক! অতিরিক্ত অনুমতিসম্পন্ন অনুমতির ঝুঁকি
কিছু লোক মনে করতে পারে, “যদি কাজ না করে, তাহলে ৭৭৭ সেট করুন,” কিন্তু এটি একটি খুব বিপজ্জনক অনুশীলন। কারণ:
- যে কেউ পড়তে, লিখতে এবং এক্সিকিউট করতে পারে
- তৃতীয় পক্ষের দ্বারা ছেড়াছাড়ি এবং স্ক্রিপ্টের দুর্ব্যবহারের ঝুঁকি বাড়ায়
সুপারিশকৃত মৌলিক নিয়ম:
- ফাইল : ৬৪৪ বা ৬০০
- ডিরেক্টরি : ৭৫৫ বা ৭০০
- স্ক্রিপ্ট এবং বাইনারি : ৭৫৫ (প্রয়োজন অনুসারে)
৮. ব্যবহারের উদাহরণ এবং সাধারণ পরিস্থিতি
chmod অনুমতি সেটিং বাস্তব জীবনের পরিস্থিতিতে কীভাবে ব্যবহৃত হয়?
chmod কমান্ড এবং এখন পর্যন্ত পরিচিত -rw-r--r-- অ্যাক্সেস অনুমতি প্রকৃত সার্ভার অপারেশন এবং ডেভেলপমেন্ট পরিবেশে ঘন ঘন ব্যবহৃত হয়। এখানে, তিনটি সাধারণ পরিস্থিতির মাধ্যমে, দেখি কীভাবে অনুমতি সেটিং ব্যবহার করা হয়।
১. ওয়েব সার্ভারে HTML ফাইল পরিচালনা
পরিস্থিতি: যখন আপনি Apache বা Nginx-এর মতো ওয়েব সার্ভারে HTML ফাইল প্রকাশ করেন, তখন সেই ফাইলগুলির জন্য সাধারণত -rw-r--r-- (৬৪৪) অনুমতি সেট করা হয়।
chmod 644 index.html
কেন ৬৪৪?
- মালিক (ওয়েব অ্যাডমিনিস্ট্রেটর) পরিবর্তন করতে হবে → লিখন অনুমতি (w)
- ওয়েব সার্ভার (www-data ইত্যাদি) শুধুমাত্র পড়তে হবে → পড়ন অনুমতি (r)
- অন্যান্য ব্যবহারকারীদের লিখতে দেওয়ার প্রয়োজন নেই
এই সেটিং দিয়ে, আপনি ন্যূনতম প্রয়োজনীয় অনুমতি দিয়ে ওয়েব কনটেন্ট নিরাপদে প্রকাশ করতে পারেন।
২. স্ক্রিপ্ট ফাইলে এক্সিকিউট অনুমতি প্রদান
সিনারিও: আপনি আপনার নিজস্ব শেল স্ক্রিপ্ট backup.sh তৈরি করেছেন, কিন্তু যখন আপনি এটি চালানোর চেষ্টা করেন, তখন আপনি “Permission denied” পান।
chmod 755 backup.sh
এই সেটিংয়ের অর্থ:
- মালিক পড়তে, লিখতে এবং চালাতে পারেন (rwx)
- গ্রুপ এবং অন্যরা পড়তে এবং চালাতে পারেন (rx)
এটি অন্যান্য ব্যবহারকারীদের স্ক্রিপ্টটি চালানোর অনুমতি দেয় যখন শুধুমাত্র মালিক এটি সম্পাদনা করতে পারেন।
৩. গোপনীয় ফাইলগুলির পড়ার অ্যাক্সেস সীমাবদ্ধ করা
সিনারিও: আপনি secrets.txt পরিচালনা করছেন, যাতে API কী এবং পাসওয়ার্ড রয়েছে। আপনি চান না যে অন্য কেউ আপনার ছাড়া এটি দেখুক।
chmod 600 secrets.txt
এই সেটিংয়ের অর্থ:
- শুধুমাত্র মালিক পড়তে এবং লিখতে পারেন (rw-)
- গ্রুপ এবং অন্যরা কোনো অ্যাক্সেস নেই (—)
এটি নিরাপত্তার দৃষ্টিকোণ থেকে একটি অত্যন্ত গুরুত্বপূর্ণ সেটিং, এবং এটি সর্বদা ব্যক্তিগত তথ্য 600 বা 400 (শুধুমাত্র পড়ার জন্য) দিয়ে পরিচালনা করার সেরা অনুশীলন।
৪. ডিরেক্টরি নিরাপদে শেয়ার করা
সিনারিও: আপনি একটি শেয়ার্ড ডিরেক্টরি shared_folder তৈরি করছেন যাতে একাধিক ডেভেলপার অ্যাক্সেস করবে।
chmod 770 shared_folder
এই সেটিংয়ের অর্থ:
- মালিক এবং গ্রুপ: সকল অনুমতি (rwx)
- অন্যরা: কোনো অ্যাক্সেস নেই (—)
গ্রুপটিকে ডেভেলপমেন্ট টিম হিসেবে সেট করে, আপনি নিরাপদ এবং দক্ষ সহযোগিতা সক্ষম করতে পারেন। আপনি chgrp কমান্ড দিয়ে গ্রুপ পরিবর্তন করে লক্ষ্য ব্যবহারকারীদের নমনীয়ভাবে নিয়ন্ত্রণ করতে পারেন।
৫. ভুল সেটিংয়ের কারণে সমস্যা এবং এড়ানোর উদাহরণ
সিনারিও: আপনি ভুল করে chmod -R 777 . চালিয়েছেন এবং সকল ফাইল লেখনযোগ্য হয়ে গেছে। প্রস্তাবিত এড়ানোর ব্যবস্থা:
- সর্বদা
findদিয়ে ফাইলের ধরন নির্দিষ্ট করে অনুমতি পরিবর্তন করুন - পরিবর্তনের আগে
ls -lদিয়ে অনুমতি যাচাই করুন testএর জন্য একটি অস্থায়ী পরিবেশে আগে চেষ্টা করুন
৯. FAQ
Q1. chmod 644 এবং -rw-r–r– এর মধ্যে পার্থক্য কী?
A. এগুলি একই জিনিসের দুটি ভিন্ন উপায়ে উপস্থাপন।
chmod 644: অনুমতি সংখ্যাগতভাবে সেট করার একটি কমান্ড।-rw-r--r--: অনুমতি সেট করার পরls -lদিয়ে দেখা প্রতীকী উল্লেখ।
উভয়ই নির্দেশ করে যে মালিকের পড়া এবং লেখার অনুমতি রয়েছে, এবং অন্য সকলে শুধুমাত্র পড়ার অনুমতি রয়েছে।
Q2. যদি একটি ফাইলে চালানোর অনুমতি না থাকে তাহলে কী হয়?
A. আপনি স্ক্রিপ্ট বা বাইনারি সরাসরি চালানোর চেষ্টা করলে একটি ত্রুটি পাবেন। উদাহরণস্বরূপ, .sh বা .py ফাইল চালানোর জন্য চালানোর অনুমতি (x) প্রয়োজন। এটি ছাড়া, আপনি এমন একটি ত্রুটি দেখবেন:
bash: ./script.sh: Permission denied
সমাধান:
chmod +x script.sh
Q3. একটি ডিরেক্টরিকে 644 সেট করা ঠিক আছে কি?
A. সাধারণত, এটি উপযুক্ত নয়। ডিরেক্টরিগুলির জন্য “চালানোর অনুমতি (x)” প্রয়োজন। চালানোর অনুমতি ছাড়া, আপনি ডিরেক্টরির ভিতরের ফাইলগুলিতে অ্যাক্সেস করতে পারবেন না। সঠিক সেটিং:
chmod 755 directory_name
Q4. সবচেয়ে সাধারণ অনুমতি সেটিংগুলি কী?
A. এখানে কিছু সাধারণ অনুমতি সেটিং এবং তাদের ব্যবহার রয়েছে:
- 644 (-rw-r–r–) : HTML, CSS, ছবির মতো অধিকাংশ স্থির ফাইলের জন্য। মালিককে পড়া এবং লেখার অনুমতি দেয়, এবং অন্য সকলকে পড়ার অনুমতি।
- 755 (-rwxr-xr-x) : ডিরেক্টরি এবং চালনযোগ্য স্ক্রিপ্টের জন্য। মালিককে পড়া, লেখা এবং চালানোর অনুমতি দেয়; এবং অন্য সকলকে পড়া এবং চালানোর অনুমতি (কিন্তু লেখা নয়)।
- 600 (-rw——-) : শুধুমাত্র মালিকের পড়া এবং লেখার জন্য সংবেদনশীল ফাইলের জন্য।
- 700 (-rwx——) : শুধুমাত্র মালিকের অ্যাক্সেসের জন্য ব্যক্তিগত ডিরেক্টরির জন্য।
Q5. আমি কীভাবে একটি ফাইলের মালিক বা গ্রুপ পরিবর্তন করতে পারি?
A. আপনি chown কমান্ড দিয়ে মালিক পরিবর্তন করতে পারেন এবং chgrp কমান্ড দিয়ে গ্রুপ পরিবর্তন করতে পারেন। মালিক পরিবর্তনের উদাহরণ:
sudo chown new_owner filename
গ্রুপ পরিবর্তনের উদাহরণ:
sudo chgrp new_group filename
এই কমান্ডগুলির জন্য প্রায়শই প্রশাসনিক অধিকার প্রয়োজন হওয়ায় আপনার sudo প্রয়োজন হতে পারে।
Q6. সকল অপারেটিং সিস্টেমে ফাইল অনুমতি একই কি?
এ. না, ফাইল অনুমতিগুলি অপারেটিং সিস্টেমের মধ্যে উল্লেখযোগ্যভাবে ভিন্ন হতে পারে।
Linux এবং Unix‑সদৃশ সিস্টেমগুলিতে ব্যবহারকারী, গ্রুপ এবং অন্যদের উপর ভিত্তি করে একটি বিশদ অনুমতি ব্যবস্থা রয়েছে, যেখানে পড়া, লেখা এবং কার্যকর করার অনুমতি থাকে। অন্যদিকে, Windows একটি ভিন্ন ব্যবস্থা ব্যবহার করে যা Access Control Lists (ACLs) এর উপর ভিত্তি করে; এটি আরও সূক্ষ্ম এবং নির্দিষ্ট ব্যবহারকারী ও গ্রুপের জন্য আরও বিশদভাবে অনুমতি নির্ধারণ করতে পারে।
10. উপসংহার
Linux‑এ ফাইল অনুমতিগুলি বুঝে সঠিকভাবে সেট করা যে কোনও সার্ভার পরিচালনা করা বা সিস্টেমের সঙ্গে কাজ করা ব্যক্তির জন্য একটি মৌলিক দক্ষতা। -rw-r--r-- নোটেশন এবং chmod কমান্ড প্রথমে ভীতিকর মনে হতে পারে, তবে মৌলিক ধারণাগুলি আয়ত্ত করলে আপনি একটি নিরাপদ এবং সুসংগঠিত সিস্টেম বজায় রাখতেযোগ্যভাবে সক্ষম হবেন।
অনুমতির বিভিন্ন ধরণ, প্রতীকী ও সাংখ্যিক নোটেশন কীভাবে ব্যাখ্যা করতে হয়, এবং chmod কমান্ডটি কার্যকরভাবে কীভাবে ব্যবহার করতে হয় তা বুঝে আপনি আপনার ফাইল ও ডিরেক্টরিগুলি কেবলমাত্র নির্ধারিত ব্যবহারকারীদের জন্য সুরক্ষিত ও প্রবেশযোগ্য রাখতে পারবেন।
ls -l কমান্ড দিয়ে সর্বদা আপনার অনুমতি সেটিংস দ্বিগুণ যাচাই করুন এবং রিকার্সিভ অপশন ব্যবহার করার সময় সতর্ক থাকুন। অনুশীলনের মাধ্যমে, ফাইল অনুমতি পরিচালনা আপনার কাজের স্বাভাবিক ও অপরিহার্য অংশ হয়ে উঠবে।


