> For the complete documentation index, see [llms.txt](https://sh.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sh.howtocode.dev/1.0.0.part1intro/1.6.0.permission/1.6.2.accessright.md).

# এক্সেস রাইট

একটা ফাইল বা ডিরেক্টরিতে কে কতটুকু কি করতে পারবে তা এক্সেস রাইট(access right) দ্বারা নির্ধারিত হয়। এক্সেস রাইট তিনরকমের হয়। রিড এক্সেস(read access), রাইট এক্সেস(write access) ও এক্সিকিউশন এক্সেস(execution access)। যার রিড এক্সেস আছে সে ফাইলটি পড়তে পারবে। যার রাইট এক্সেস আছে সে সেই তথ্য পরিবর্তন করতে পারবে এবং যার এক্সিকিউশন এক্সেস আছে সে পারবে সেটিকে রান করাতে। একজন একাধিক বা সবগুলো এক্সেসই পেতে পারে। এবার আমরা উদাহরনে যাই। প্রথমে আমরা **foo.txt** নামে একটি ফাইল তৈরি করে তার পারমিশনগুলো দেখবো ls কমান্ড দিয়ে:

```
me@howtocode-pc:~$ ls -l foo.txt 
-rw-rw-r-- 1 me me 0 Sep 23 18:02 foo.txt
```

'-' চিহ্নসহ প্রথম যে ১০ অক্ষর(এখানে -rw-rw-r--), এটিই ফাইল এক্সেস পারমিশন সম্পর্কিত তথ্য দেয়। এর প্রত্যেক অক্ষরের নির্দিষ্ট অর্থ আছে।

প্রথম অক্ষর এখানে যেটা '-' চিহ্ন এটা ফাইল টাইপ(file type) অর্থাৎ ফাইলটি কী ধরনের ফাইল তা নির্দেশ করে। এখানে '-' চিহ্ন দিয়ে বোঝানো হয়েছে এটি একটি রেগুলার বা সাধারন ফাইল। আরো কয়েকরকম ফাইল টাইপ আছে যা বিভিন্ন অক্ষর দিয়ে প্রকাশ করা হয়। এই অক্ষরগুলোকে বলা হয় এট্রিবিউট। আসুন অন্য ফাইল টাইপ এট্রিবিউট এবং তার অর্থ দেখে নেয়া যাক:

| এট্রিবিউট | ফাইল টাইপ                                                                                                  |
| --------- | ---------------------------------------------------------------------------------------------------------- |
| -         | সাধারণ ফাইল বা রেগুলার ফাইল।                                                                               |
| d         | ডিরেক্টরি, যাকে আমরা ফোল্ডারও বলে থাকি।                                                                    |
| l         | সিমবোলিক লিঙ্ক।                                                                                            |
| c         | ক্যারেক্টার স্পেশাল ফাইল। এমনসব ডিভাইস যারা বাইট পর্যায়ে ডাটা আদানপ্রদান করে থাকে। যেমন টার্মিনাল বা মডেম। |
| b         | ব্লক স্পেশাল ফাইল। এমনসব ডিভাইস যারা ডাটা ব্লক হিসেবে ট্রান্সফার করে। যেমন হার্ডড্রাইভ বা সিডি।            |

বাকি নয়টি অক্ষর ফাইল মোড নির্দেশ করে। প্রতি তিনটি করে অক্ষর নিয়ে আমরা মোট তিন ভাগে ভাগ করতে পারি। প্রথম ভাগ ওনার এর, দ্বিতীয় ভাগ গ্রুপ আর শেষ ভাগ ওয়ার্ল্ড এর। এরকম:

| ওনার | গ্রুপ | ওয়ার্ল্ড |
| ---- | ----- | -------- |
| rwx  | rwx   | rwx      |

এখানে মাত্র তিনটি এট্রিবিউট:

* **r**: রিড এক্সেস।
* **w**: রাইট এক্সেস।
* **x**: এক্সিকিউশন এক্সেস।

এবার দেখে নেয়া যাক কোনধরনের এক্সেস থাকলে আপনি কি কি করতে পারবেন:

| এট্রিবিউট | ফাইল                                                                                                                                                                 | ডিরেক্টরি                                                                                                |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| r         | ফাইল খুলতে ও পড়তে দেয়।                                                                                                                                               | ডিরেক্টরির কন্টেন্টের লিস্ট করতে দেয় যদি সাথে এক্সিকিউশন এক্সেসও থাকে।                                   |
| w         | ফাইলে লিখতে, বা তথ্য মুছে দিতে দেবে। কিন্তু ফাইলটিকে মুছতে বা তার নাম পরিবর্তন করতে দেবে। ফাইল মোছা বা তার নাম পরিবর্তনের ক্ষমতা ডিরেক্টরির পারমিশনের ওপর নির্ভরশীল। | ডিরেক্টরির মধ্যে নতুন ফাইল তৈরী করা, মুছে ফেলা বা নাম পরিবর্তনের সুযোগ দেয় সাথে এক্সিকিউশন এক্সেস থাকলে। |
| x         | ফাইলকে প্রোগ্রাম হিসেবে বিবেচনা করবে ও এক্সিকিউট করবে। তবে প্রোগ্রাম ফাইলটি স্ক্রিপ্টিং ল্যাঙ্গুয়েজ(যেমন: পাইথন, শেলস্ক্রিপ্ট।) এ লেখা হলে রিড এক্সেসও থাকতে হবে।    | ডিরেক্টরিতে ঢুকতে দেবে।                                                                                  |

কারো কোনো পারমিশন থাকলে তার নির্দিষ্ট জায়গায় সেই এট্রিবিউটের অক্ষর থাকবে। না হলে '-' চিহ্ন। আসুন কিছু উদাহরণ দেখে নেয়া যাক:

| এট্রিবিউট  | অর্থ                                                                                                                                                                           |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| -rwx------ | একটা সাধারণ ফাইল যার ওনারের সকল পারমিশন আছে কিন্তু গ্রুপ ও ওয়ার্ল্ডের কোনো পারমিশন নেই।                                                                                        |
| -rw------- | একটা সাধারণ ফাইল যার ওনারের শুধু রিড ও রাইট পারমিশন আছে আর কারো কোনো পারমিশন নেই।                                                                                              |
| -rw-r--r-- | একটা সাধারণ ফাইল যার ওনারের রিড ও রাইট এবং গ্রুপ ও ওয়ার্ল্ডের রিড পারমিশন আছে।                                                                                                 |
| -rwxr-xr-x | একটা সাধারণ ফাইল যার ওনারের সকল পারমিশন আছে এবং গ্রুপ ও ওয়ার্ল্ডের রিড ও এক্সিকিউশন পারমিশন আছে।                                                                               |
| -rw-rw---- | একটা সাধারণ ফাইল যার ওনার ও গ্রুপের রিড ও রাইট পারমিশন আছে, ওয়ার্ল্ডের কোনো পারমিশন নেই।                                                                                       |
| lrwxrwxrwx | একটি সিমবোলিক লিঙ্ক ফাইল যার সবার সকল পারমিশন আছে। সিমবোলিক লিঙ্কের সবসময় একই পারমিশন থাকে এবং এটি ডামি বা নকল। ফাইলটি যে ফাইলের লিঙ্ক, সেই ফাইলটির পারমিশন আসলে কার্যকর থাকে। |
| drwxrwx--- | একটি ডিরেক্টরি যার ওনার ও গ্রুপের সকল পারমিশন আছে কিন্ত ওয়ার্ল্ডের কোনো পারমিশন নেই।                                                                                           |
| drwxr-x--- | একটি ডিরেক্টরি যার ওনারের সকল পারমিশন আছে এবং গ্রুপের রিড ও এক্সিকিউশন পারমিশন আছে কিন্তু ওয়ার্ল্ডের কোনো পারমিশন নেই।                                                         |
