لینوکس, مدیریت سرور لینوکس

آموزش دستور chmod در لینوکس – نحوه استفاده از دستور chmod و مدیریت دسترسی ها

آموزش دستور chmod در لینوکس - نحوه استفاده از دستور chmod و مدیریت دسترسی ها

دستور chmod یک فرمان کاربردی لینوکس است که برای مدیریت دسترسی فایل و دایرکتوری ها کاربرد دارد، در این مقاله نحوه استفاده از دستور chmod در لینوکس را به صورت کامل به شما عزیزان آموزش خواهیم داد، همراه داتیس نتورک باشید.

آموزش دستور chmod در لینوکس - نحوه استفاده از دستور chmod و مدیریت دسترسی ها

دستور chmod در لینوکس چیست؟

در سیستم عامل های Unix و مشابه یونیکس ، chmod فرمانی است که برای تغییر مجوزهای دسترسی سیستم فایل استفاده می شود.

همچنین برای تغییر flags های حالت خاص استفاده می شود.

عبارت chmod مخفف change mode می باشد.

دستور chmod اجازه دسترسی فایل ها و پوشه ها را تغییر می دهد. دستور chmod مانند سایر دستورات از طریق خط فرمان یا از طریق یک فایل اسکریپت قابل اجرا است.

نکنه: اگر می خواهید مجوزهای یک فایل را لیست کنید ، از دستور ls استفاده کنید.

همانطور که میدانیم لینوکس یک سیستم عامل چند کاربره است.

در لینوکس، هر فایل یا دایرکتوری دارای یک سطح دسترسی مشخص برای هر کاربر است.

یکی از علل امنیت بالای لینوکس مشخص بودن سطح دسترسی برای هر کاربر است.

مفاهیم مهم :

در زیر مفاهیم کاربر (user)، اجازه ها (permissions)، صاحب (owner) و گروه (group) را مشخص میکنیم و بعد دستور chmod را توضیح میدهیم.

کاربر:

هر کسی که از کامپیوتر استفاده میکند یک کاربر نامیده میشود و دارای یک نام کاربری است که معمولا در ابتدای نصب سیستم عامل، این نام مشخص میشود و فرد، موقع ورود به سیستم با این نام وارد میشود.

با استفاده از دستور whoami میتوان نام کاربری را به دست آورد.

اجازه ها Permissions(سطح دسترسی) :

هر کاربر برای هر فایل یا فولدر دارای سه نوع سطح دسترسی خواندن (read)، نوشتن (write) و اجرا کردن (execute) و – (Dash ) به معنای نداشتن دسترسی ( no Permission ) است.

این سطوح دسترسی برای فایل و دایرکتوری کمی متفاوت است.

برای فایلها، خواندن به معنای باز کردن فایل و دیدن محتویات آن است، نوشتن به معنای تغییر در محتویات فایل است و اجرا کردن هم که فقط برای فایلهای اجرایی و یا اسکریپت است، به معنای اجرا شدن آن برنامه است.

برای دایرکتوری ها، خواندن به معنای لیست کردن فایلهای درون آن دایرکتوری است، نوشتن به معنای ساختن یا پاک کردن فایلها درون دایرکتوری است و اجرا کردن به معنای اجازه ورود به دایرکتوری و زیر دایرکتوری است.

گروه Group :

هر کاربر ممکن است به یک یا چند گروه تعلق داشته باشد.

مثلا ممکن است نام کاربری majid هم به گروه majid و هم به گروه root و هم به گروه datisnetwork تعلق داشته باشد.

در این صورت، اگر اجازههایی را برای گروه datisnetwork در نظر بگیریم، برای آن کاربر هم منظور میشود.

همانطور که متوجه شدید، میتوان نام کاربری و نام گروه یکسانی داشت و گروه بندی برای ساده کردن اعمال دسترسی ها است که اگر بر روی یک گروه تغییری ایجاد کنیم این تغییر بر روی تمامی کاربرانی که عضو آن گروه هستند هم اعمال می شود .

نکته: هر کاربری که در هیچکدام از دو دسته ی گروه و کاربر قرار نداشته باشد، به آن دیگران (others) گفته میشود.

صاحب Owner :

در حالت کلی به کاربری که فایل یا دایرکتوری را ایجاد میکند صاحب آن فایلها و دایرکتوری گفته میشود.

اکنون که با این مفاهیم آشنا شدید وقت آن رسیده است که به آموزش نحوه استفاده از دستور chmod بپردازیم.

سینتکس دستور chmod در لینوکس :

این نحو مناسب هنگام استفاده از دستور chmod است:

chmod [options] mode[,mode] file1 [file2 ...]

در زیر گزینه های معمول استفاده شده با chmod وجود دارد:

  • -f, –silent, –quiet: بیشتر پیام های خطا را سرکوب می کند.
  • -v, –verbose: برای هر فایلی که پردازش می شود یک عیب یابی صادر می کند.
  • c, –changes: مانند verbose است اما فقط در صورت ایجاد تغییر گزارش می دهد.
  • -R, –recursive: پرونده ها و دایرکتوری ها را به صورت بازگشتی تغییر می دهد.
  • –help: نمایش help و exits
  • –version: اطلاعات نسخه را نمایش می دهد.

در زیر لیستی از مجوزهای عددی وجود دارد که می تواند برای کاربر ، گروه و سایر افراد در سیستم تنظیم شود.

در کنار شماره معادل نامه خواندن ، نوشتن و اجرا قرار دارد:

  • 7, rwx: خواندن ، نوشتن و اجرا شدن.
  • 6, rw-: خواندن و نوشتن.
  • 5, r-x: خواندن و اجرا شدن.
  • 4, r–: فقط خواندن.
  • 3, -wx: نوشتن و اجرا شدن.
  • 2, -w-: فقط خواندن.
  • 1, –x: اجرا شدن.
  • 0, —: هیچی.

مثال :

دستورات زیر را وارد کنید:

mkdir test

chmod 777 test

در مثال بالا با دستور mkdir یک دایرکتوری جدید به نام test ایجاد کردیم و با دستور chmod نوع دسترسی فایل رو به دسترسی کامل تغییر دادیم ( در ادامه بیشتر با اعداد به کار رفته آشنا می شوید )

  • option : پارامترهایی که برای تغییر سطح دسترسی به دستور میدهیم.
  • mode : نوع سطح دسترسی
  • octal-mode : عددی در مبنای ۸ که نوع سطح دسترسی را مشخص میکند (حالت جایگزین برای mode).
  • file : فایلی که میخواهیم تغییرات را روی آن انجام دهیم.

فرض کنید در پوشه home/majid/ دایرکتوری داریم به نام myFolder که حاوی محتویات زیر است:

File1.txt
File2.txt
File3.txt
File4.txt

حال با دستور cd وارد آن دایرکتوری میشویم و با دستور ls و پارامتر l- لیستی از فایلهای درون آن بدست میآوریم.

دستور:

cd ~/myFolder

دستور:

ls -l

-rw-rw-r– 1 majid majid 6 Jan 27 07:52 File1.txt
-rw-rw-r– 1 majid majid 20 Jan 27 07:53 File2.txt
-rw-rw-r– 1 majid majid 260 Jan 27 07:53 File3.txt
-rw-rw-r– 1 majid majid 18 Jan 27 07:54 File4.txt

در ستون اول رشتهای ده کاراکتری دیده میشود که در زیر آن را توضیح میدهیم.

کاراکتر اول مشخص کننده نوع فایل است. در جدول زیر انواع فایلها مشخص شده (دقت کنید که هر چیزی در لینوکس فایل است، حتی دایرکتوی ها ).

آموزش دستور chmod در لینوکس - نحوه استفاده از دستور chmod و مدیریت دسترسی ها

حال فرض کنید دایرکتوری به نام myFolder1 در myFolder داشته باشیم. خط زیر به خروجی ls -l اضافه میشود:

drwxrwxr-x 2 majid majid 4096 Jan 27 08:07 myFolder1

همانطور که میبینید، اولین کاراکتر آن به d یعنی دایرکتوری تغییر کرد.

نماد و معانی حروفی که در اول یک خط بعد از وارد کردن دستور ls -la می بینیم به قرار زیر است :

  • d = دایرکتوری , Directory
  • – = فایل معمولی , regular file
  • l = نماد لینک , symbolic link
  • s = جا و مکان دامین یونیکس, Unix domain socket
  • p = نامگذاری شده توسط پایپ , named pipe
  • c = کاراکتر های فایل سیستم , character device file
  • b = مسدود شده توسط سیستم , block device file

۹ کارکتر بعدی به ترتیب اجازه خواندن (read)، نوشتن (write) و اجرا کردن (execute) برای به ترتیب صاحب (owner)، گروه (group) و دیگران (others) است.

مثلا در خروجی بالا، برای فولدر myFolder1، صاحب دارای دسترسی rwx، گروه دارای دسترسی rwx و دیگران دارای دسترسی x– هستند( در مورد دستور های Chown برای تغییر صاحب و Chgrp برای تغییر دادن گروه کاربری بعدا بحث خواهد شد ).

تغییر دادن سطح دسترسی به یک فایل:

نمای کلی برای دستور chmod به صورت زیر است :

$ chmod [ugoa][+-=][rwx] FILE_NAME

کاراکترهای موجود در کروشه های اول، به ترتیب نشاندهنده کاربر (User)، گروه (Group)، دیگران (Others) و همه (All) میباشند.

میتوان یک یا چند کاراکتر از کروشه اول را در کنار هم و بدون در نظر گرفتن ترتیب استفاده کرد (توضیح در مثال پایین). از کاراکترهای + , – و = موجود در کروشه دوم تنها میتوان یکی را استفاده کرد که نشان دهنده افزودن یا کاستن سطح دسترسی مورد نظر است.

از کاراکترهای r و w و x موجود در کروشه سوم هم میتوان یک یا چند عدد را بکار برد که نشان دهنده نوع دسترسی است.

  • + به معنای اضافه کردن دسترسی , add this permission
  • – به معنای پاک کردن دسترسی , remove this permission
  • = به معنای اختصاص دادن دسترسی ذکر شده , set exactly this permission

مثال:

ls -l

drwxrwxr-x 2 majid majid 4096 Jan 27 08:07 myFolder1
chmod ug-w myFolder1

ls -l

dr-xr-xr-x 2 majid majid 4096 Jan 27 08:07 myFolder1

در این مثال، دسترسی نوشتن در فولدر myFolder1 را از کاربر و گروه گرفتیم. (دقت کنید که بین ug و w و – فاصله ای وجود ندارد)

ls -l

-rw-rw-r– 1 majid majid 20 Jan 27 07:53 File2.txt
chmod o+wx File2.txt
ls -l

-rw-rw-rwx 1 majid majid 20 Jan 27 07:53 File2.txt

در این مثال به دیگر کاربران دسترسی اجرا کردن و تغییر محتویات فایل را دادیم.

تغییر دادن سطح دسترسی به یک فایل در حالت Octal (مبنای ۸):

میتوان به ۹ کاراکتری که نشان دهنده سطح دسترسی به فایل هستند آرایه ای از اعداد ۰ و ۱ نسبت داد که صفر بودن به معنای عدم فعال بودن دسترسی آن عضو و یک بودن به معنای فعال بودن دسترسی میباشد.

rw-rw-r–
110110100

حال اگر اعداد را سه رقم سه رقم جدا کنیم و به مبنای ۸ ببریم.

rw- rw- r–
110 110 100
6 6 4

حال این سه عدد را در کنار هم قرار میدهیم و از آن به جای کل عبارت قبل از اسم فایل استفاده میکنیم.

دستور :

ls -l
-rw-rw-r– 1 majid majid 20 Jan 27 07:53 File2.txt
( 6 6 4 )
chmod 667 File2.txt
ls -l
-rw-rw-rwx 1 majid majid 20 Jan 27 07:53 File2.txt
( 6 6 7 )

راه راحتتر، استفاده از جدول زیر است :

آموزش دستور chmod در لینوکس - نحوه استفاده از دستور chmod و مدیریت دسترسی ها

حال کافیست مثلا برای تعیین سطح دسترسی rwx بنویسیم : 1+2+4 = 7

پارامترهای پر استفاده ی دستور Chmod :

c- یا changes– :

مثل پارامتر v- ولی تنها وقتی اعلام میکند که تغییرات حتما انجام شده باشد.

ls -l
-rw-rw-r– 1 majid majid 260 Jan 27 07:54 File3.txt
chmod -c 777 File3.txt

ls -l
mode of ‘File3.txt’ changed from 0664 (rw-rw-r–) to 0777 (rwxrwxrwx)

v- یا verbose– :

کارهایی که انجام میدهد را اعلام میکند.

reference=RFILE– :

از سطوح دسترسی فایل RFILE به عنوان سطوح اعمالی برای دستور استفاده میکند.

ls -l
-rw-rw-r– 1 majid majid 20 Jan 27 07:54 File2.txt
-rwxrwxrwx 1 majid majid 260 Jan 27 07:54 File3.txt
chmod –reference=File2.txt File3.txt
-rw-rw-r– 1 majid majid 20 Jan 27 07:54 File3.txt

R- یا recursive– :

همه ی فایلها و دایرکتوری های داخل آن را با سطوح دسترسی داده شده تغییر میدهد.

ls -la
total 96
drwxrwxr-x 3 majid majid 4096 Jan 27 19:35 .
drwx—— 64 majid majid 36864 Jan 27 18:44 ..
-rw-rw-r– 1 majid majid 4 Jan 27 19:35 File1.txt
-rw-rw-r– 1 majid majid 20 Jan 27 07:54 File2.txt
-rw-rw-r– 1 majid majid 260 Jan 27 07:54 File3.txt
-rw-rw-r– 1 majid majid 18 Jan 27 07:54 File4.txt
drwxrwx–x 2 majid majid 4096 Jan 27 08:07 myFolder1
chmod -R 777 .
ls -l myFolder/
ls -l
-rwxrwxrwx 1 majid majid 4 Jan 27 19:35 File1.txt
-rwxrwxrwx 1 majid majid 20 Jan 27 07:54 File2.txt
-rwxrwxrwx 1 majid majid 260 Jan 27 07:54 File3.txt
-rwxrwxrwx 1 majid majid 18 Jan 27 07:54 File4.txt
drwxrwxrwx 2 majid majid 4096 Jan 27 08:07 myFolder1

امیدواریم مقاله آموزش کامل دستور chmod در لینوکس برای شما عزیزان مفید بوده باشد.

داتیس نتورک را در شبکه های اجتماعی دنبال کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *