> 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.3.chmod.md).

# ফাইল পারমিশন পরিবর্তন

বিভিন্ন প্রয়োজনে আপনাকে ফাইল পারমিশনে পরিবর্তন আনতে হতে পারে। আপনি সেটা **chmod** কমান্ড দিয়ে সহজেই করতে পারেন। একটা ফাইলের পারমিশন শুধু তার ওনার ও এবং সুপারইউজার চেঞ্জ করতে পারে।

**chmod** দুটি পদ্ধতিতে পারমিশন পরিবর্তন করার সুযোগ দেয়। অকটাল এবং সাংকেতিক পদ্ধতি।

## অকটাল পদ্ধতি

অকটাল একধরনের গণনাপদ্ধতি। আমরা যেমন সাধারণ জীবনে দশভিত্তিক গণনা পদ্ধতি ব্যবহার করি, আবার যেমন দুই-ভিত্তিক বাইনারির কথা শুনেছি, অকটাল তেমনি ৮ ভিত্তিক। অর্থাৎ এতে ৭ এর পর আট না হয়ে হয় ১০। সেই দশ অবশ্যই অকটাল এর ক্ষেত্রে ১০, দশমিকে তার মান ৮ই। পদ্ধতিটা এরকম:

০, ১, ২, ৩, ৪, ৫, ৬, ৭, ১০, ১১, ১২, ১৩, ১৪, ১৫, ১৬, ১৭, ২০...

আমরা অকটালের 0-7 পর্যন্ত আটটি সংখ্যা ব্যবহার করে আটটি ফাইলমোড নির্ধারন করতে পারি এভাবে:

| অকটাল | ফাইল মোড |
| :---: | -------- |
|   0   | ---      |
|   1   | --x      |
|   2   | -w-      |
|   3   | -wx      |
|   4   | r--      |
|   5   | r-x      |
|   6   | rw-      |
|   7   | rwx      |

এই মানগুলো ব্যবহার করে আমরা তিন সংখ্যার অকটাল নম্বর ব্যবহার করে ফাইলমোড চেঞ্জ করতে পারি। যার প্রথম সংখ্যা ওনার, দ্বিতীয় সংখ্যা গ্রুপ ও তৃতীয় সংখ্যা ওয়ার্ল্ড এর পারমিশন বোঝাবে একটা উদাহরণ দেখা যাক:

```
me@howtocode-pc:~$ > foo.txt
me@howtocode-pc:~$ ls -l foo.txt 
-rw-rw-r-- 1 nishadsingha portal 0 Sep 27 07:48 foo.txt
me@howtocode-pc:~$ chmod 600 foo.txt
me@howtocode-pc:~$ ls -l foo.txt 
-rw------- 1 nishadsingha portal 0 Sep 27 07:48 foo.txt
```

উদাহরণে আমরা প্রথমে **foo.txt** নামে একটি ফাইল তৈরী করেছি। ফাইলটির পারমিশন দেখেছি `ls -l foo.txt` কমান্ড দিয়ে। এরপর **chmod** কমান্ড দিয়ে ফাইল পারমিশন চেঞ্জ করেছি। আমরা **chmod** এর জন্য দুটি আর্গুমেন্ট ব্যবহার করেছি। প্রথমে নতুন পারমিশনজ্ঞাপক সংখ্যা **600** এবং তারপর যে ফাইলটার পারমিশন পরিবর্তন করতে হবে সেটি। এবং আমরা তারপর আবার চেক করে দেখেছি পারমিশন পরিবর্তিত হয়েছে।

## সাংকেতিক পদ্ধতি

সাংকেতিক পদ্ধতি ফাইল পারমিশন পরিবর্তনের আরেকটি উপায়। আমাদের আগে চেনা রিড, রাইট, এবং এক্সিকিউশনের r, w ও x চিহ্নগুলোও এখানে কার্যকর। তাছাড়া আরও আছে u, g, o এবং a। আসুন এগুলোর অর্থ জেনে নেয়া যাক:

| সংকেত | অর্থ                                                        |
| ----- | ----------------------------------------------------------- |
| u     | ইউজারের সংক্ষিপ্ত রূপ। এখানে ইউজার বলতে ফাইলের মালিক ইউজার। |
| g     | গ্রুপ। ফাইলের মালিক গ্রুপ।                                  |
| o     | Other বা ওয়ার্ল্ড।                                          |
| a     | অল বা উপরের সবাই।                                           |

এছাড়াও তিনটি গাণিতিক চিহ্নও ব্যবহার করা হয়। এগুলো হল:

| চিহ্ন | অর্থ                                                    |
| ----- | ------------------------------------------------------- |
| +     | পারমিশন যোগ করা হবে।                                    |
| -     | পারমিশন তুলে নেয়া হবে।                                  |
| =     | যোগ-বিয়োগ প্রয়োজনমত করে একটি নির্দিষ্ট পারমিশন দেয়া হব। |

সাংকেতিক উপায়ে পারমিশন দিতে তিনটি জিনিস যথাক্রমে লিখতে হয়:

* প্রথমে লিখতে হয় কাকে পারমিশন দেয়া হচ্ছে। অর্থাৎ ইউজার হলে u, গ্রুপ ও ওয়ার্ল্ড হলে যথাক্রমে g ও o এবং সবাইকে পারমিশন দিতে a। তবে a এর ক্ষেত্রে কিছু না লিখলেও হয়।
* পারমিশনে কীভাবে পরিবর্তন আনা হবে। অর্থাৎ আমরা কি '+' চিহ্নের মাধ্যমে পারমিশন যোগ করবো? নাকি কোনো পারমিশন বিয়োগ করবো '-' চিহ্ন দিয়ে? অথবা চাইলে নির্দিষ্ট পারমিশন চেঞ্জ করতে পারি '=' চিহ্ন দিয়ে।
* কোন পারমিশনের পরিবর্তন ঘটাবো। এটা আমরা r, w, x দিয়ে বলতে পারি।

এবার সাংকেতিক পদ্ধতির কিছু উদাহরণ দেখা যাক:

| সংকেত     | অর্থ                                                                                                                                                                                |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| u+x       | মালিক ইউজারকে এক্সিকিউটের পারমিশন দেবে।                                                                                                                                             |
| u-x       | মালিক ইউজারের এক্সিকিউশন পারমিশন উঠিয়ে নেওয়া হবে।                                                                                                                                   |
| +x        | +x ও a+x একই কথা। অর্থাৎ সবাইকে এক্সিকিউশন পারমিশন দেয়া হলো।                                                                                                                        |
| o-rw      | ওয়ার্ল্ডের রিড এবং রাইট পারমিশন উঠিয়ে নেওয়া হবে।                                                                                                                                    |
| go=rw     | গ্রুপ ও ওয়ার্ল্ডের শুধু রিড ও রাইট পারমিশন দেয়া হবে। এর কোনোটা আগে না থাকলে যোগ করা হবে এবং এক্সিকিউটেবল পারমিশন আগে থাকলে সেটা তুলে নেওয়া হবে।                                     |
| u+x,go=rx | এখানে কমা দিয়ে আলাদা করা দুটো সংকেত একত্রে ব্যবহৃত হয়েছে। প্রথমটি দিয়ে ইউজারকে এক্সিকিউশন পারমিশন দেওয়া হবে, পরেরটি দিয়ে গ্রুপ ও ওয়ার্ল্ডের শুধু রিড ও এক্সিকিউশন পারমিশন দেয়া হবে। |
