Chmod: تفاوت بین نسخهها
(←روش کار) |
(ویراستاری) |
||
سطر ۱: | سطر ۱: | ||
[[پرونده:chmod_1.png|500px|left]] | [[پرونده:chmod_1.png|500px|left]] | ||
− | '''chmod''' که مخفف change mode است، | + | '''chmod''' که مخفف change mode است، نرمافزاری برای تغییر [[pemission|دسترسیهای]] یک پرونده است. |
− | از این | + | از این برنامه برای اصلاح اینکه چه کسانی اجازه اجرا، خواندن و نوشتن در کدام شاخهها و روی کدام پروندهها را دارند، استفاده میشود. |
− | == دیدن | + | == دیدن دسترسیها == |
− | برای دیدن | + | برای دیدن دسترسیهای پروندهها میتوان از برنامهٔ '''[[ls]]''' به این صورت استفاده کرد: |
<code dir=ltr>$ ls -l</code> | <code dir=ltr>$ ls -l</code> | ||
− | در هر | + | در هر خط، نخستین نویسه، نشان دهندهٔ نوع پرونده است. برخی مقدارهایی که این نویسه میگیرد: |
− | * ''' - ''': | + | * ''' - ''': نشاندهندهٔ پروندهٔ عادی |
− | * ''' d ''': نشان | + | * ''' d ''': نشان دهندهٔ شاخه |
− | * ''' l ''': نشان | + | * ''' l ''': نشان دهندهٔ پیوند |
− | * ''' s ''': | + | * ''' s ''': نشاندهندهٔ سوکت |
− | * ''' b ''': نشان | + | * ''' b ''': نشان دهندهٔ بلاک |
− | * ''' c ''': | + | * ''' c ''': نشاندهندهٔ نویسه |
* ''' ... ''' | * ''' ... ''' | ||
− | بعد از | + | بعد از نخستین نویسه ۹ نویسهٔ بعدی برای نمایش دسترسیهای پرونده استفاده میشود. این نویسهها میتوانند مقدارهای زیر را داشته باشند: |
− | * ''' r ''': | + | * ''' r ''': نشاندهندهٔ دسترسی خواندن (read) |
− | * ''' w ''': | + | * ''' w ''': نشاندهندهٔ دسترسی نوشتن (write) |
− | * ''' x ''': | + | * ''' x ''': نشاندهندهٔ دسترسی اجرا (execute) |
− | * ''' - ''': | + | * ''' - ''': نشاندهندهٔ این است که دسترسی تعیین نشده |
* ''' X ''': ... | * ''' X ''': ... | ||
− | * ''' s ''': | + | * ''' s ''': نشاندهندهٔ بیت '''[[SUID]]''' یا '''[[SGID]]''' است |
− | * ''' S ''': | + | * ''' S ''': نشاندهندهٔ بیت '''[[SUID]]''' یا '''[[SGID]]''' است، اما دسترسی اجرایی('''x''') متناظر تعیین نشده است |
− | * ''' t ''': | + | * ''' t ''': نشاندهندهٔ بیت چسبناک('''[[sticky-bit]]''') یا محافظت از حذف است |
− | * ''' T ''': | + | * ''' T ''': نشاندهندهٔ بیت چسبناک('''[[sticky-bit]]''') یا محافظت از حذف است، اما بیت اجرایی('''x''') متناظر تعیین نشده است |
− | بعد از | + | بعد از نخستین نویسه بقیهٔ ۹ نویسه به سه گروه سهتایی تقسیم میشوند. به ترتیب از سمت چپ : |
− | * سه | + | * سه نویسهٔ نخست نشاندهندهٔ دسترسیهای مالک پرونده یا کاربر('''user''') : <code dir=ltr>-<span style="color:red">rwx</span>rwxrwx</code> |
− | * | + | * سه نویسهٔ پس از آن، نشاندهندهٔ دسترسیهای گروه('''group''') : <code dir=ltr>-rwx<span style="color:red">rwx</span>rwx</code> |
− | * و در | + | * و در پایان، سه نویسهٔ باقیمانده، نشاندهندهٔ دسترسیهای دیگران('''other''') : <code dir=ltr>-rwxrwx<span style="color:red">rwx</span></code> |
برای مثال : | برای مثال : | ||
− | * <code dir=ltr>-rwxr-xr-x</code> : نشان | + | * <code dir=ltr>-rwxr-xr-x</code> : نشان میدهد که صاحب پرونده(چون نخستین نویسه "'''-'''" است) تمام دسترسی های خواندن، نوشتن و اجرا کردن را دارد و اعضای گروه پرونده و دیگران اجازهٔ خواندن و اجرا کردن پرونده را دارند، ولی اجازهٔ نوشتن در پرونده را ندارند. |
− | * <code dir=ltr>drwxr-x---</code> : نشان | + | * <code dir=ltr>drwxr-x---</code> : نشان میدهد که صاحب شاخه(چون نخستین نویسه "'''d'''" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه، اجازهٔ خواندن و دیدن پروندههای داخلی را دارند و دیگران هیچ اجازهای برای خواندن از، نوشتن در یا دیدن محتوای شاخه را ندارند. |
− | * <code dir=ltr>drwxrwxrwt</code> : نشان | + | * <code dir=ltr>drwxrwxrwt</code> : نشان میدهد که صاحب شاخه(چون نخستین نویسه "'''d'''" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه نیز مانند صاحب شاخه، اجازه خواندن، نوشتن و دیدن پروندههای درون شاخه را دارند و دیگران نیز همه دسترسی ها را دارند و همچنین بیت چسبناک('''[[sticky-bit]]''') نیز برای این شاخه تعیین شده است. |
سطر ۴۵: | سطر ۴۵: | ||
<code dir=ltr>'''-c, --changes'''</code> | <code dir=ltr>'''-c, --changes'''</code> | ||
− | : مانند '''verbose''' اما فقط در صورت ایجاد تغییر گزارش | + | : مانند '''verbose''' اما فقط در صورت ایجاد تغییر گزارش میدهد |
<code dir=ltr>'''-f, --silent, --quiet'''</code> | <code dir=ltr>'''-f, --silent, --quiet'''</code> | ||
− | : | + | : بیشتر پیغام های خطا را نادیده میگیرد |
<code dir=ltr>'''-v, --verbose'''</code> | <code dir=ltr>'''-v, --verbose'''</code> | ||
− | : برای هر | + | : برای هر فرایند، اطّلاعات اضافی را چاپ میکند |
<code dir=ltr>'''--no-preserve-root'''</code> | <code dir=ltr>'''--no-preserve-root'''</code> | ||
سطر ۶۰: | سطر ۶۰: | ||
<code dir=ltr>'''--reference=RFILE'''</code> | <code dir=ltr>'''--reference=RFILE'''</code> | ||
− | : استفاده از | + | : استفاده از دسترسیهای پرونده 'RFILE' به عنوان مرجع (از دسترسیهای پرونده 'RFILE' استفاده میکند) |
<code dir=ltr>'''-R, --recursive'''</code> | <code dir=ltr>'''-R, --recursive'''</code> | ||
− | : تغییر همه پروندهها و | + | : تغییر همه پروندهها و شاخهها به صورت بازگشتی |
<code dir=ltr>'''--help'''</code> | <code dir=ltr>'''--help'''</code> | ||
سطر ۶۹: | سطر ۶۹: | ||
<code dir=ltr>'''--version'''</code> | <code dir=ltr>'''--version'''</code> | ||
− | : | + | : نگارش برنامه را نمایش میدهد |
== روش کار == | == روش کار == | ||
− | میتوان از | + | میتوان از برنامهٔ '''chmod''' به این شکل استفاده کرد: |
<!-- https://man7.org/linux/man-pages/man1/chmod.1.html --> | <!-- https://man7.org/linux/man-pages/man1/chmod.1.html --> | ||
<pre> | <pre> | ||
سطر ۸۳: | سطر ۸۳: | ||
<!-- https://www.howtogeek.com/437958/how-to-use-the-chmod-command-on-linux --> | <!-- https://www.howtogeek.com/437958/how-to-use-the-chmod-command-on-linux --> | ||
برای استفاده از '''chmod''' باید سه چیز را به ان بگوییم: | برای استفاده از '''chmod''' باید سه چیز را به ان بگوییم: | ||
− | *''' چهکسی ''': برای چه کسی | + | *''' چهکسی ''': برای چه کسی دسترسیها را تعیین می کنیم. |
− | *''' چهکار ''': چه تغییری ایجاد می کنیم؟ آیا ما | + | *''' چهکار ''': چه تغییری ایجاد می کنیم؟ آیا ما دسترسی را اضافه یا حذف می کنیم؟ |
− | *''' چهچیز ''': کدام یک از | + | *''' چهچیز ''': کدام یک از دسترسیها را تعیین می کنیم؟ |
<br> | <br> | ||
− | مقدار هایی که | + | مقدار هایی که میتوانیم برای "'''چه کسی'''" استفاده کنیم، عبارتند از: |
− | :''' u ''': کاربر('''User''')، به معنی صاحب پرونده یا | + | :''' u ''': کاربر('''User''')، به معنی صاحب پرونده یا شاخه. |
:''' g ''': گروه('''Group''')، به معنی اعضای گروهی است که پرونده به آن تعلق دارد. | :''' g ''': گروه('''Group''')، به معنی اعضای گروهی است که پرونده به آن تعلق دارد. | ||
− | :''' o ''': دیگران('''Others''')، به معنی افرادی است که توسط | + | :''' o ''': دیگران('''Others''')، به معنی افرادی است که توسط دسترسیهای "'''u'''" و "'''g'''" اداره نمی شوند. |
:''' a ''': همه('''All''')، به معنی همه موارد بالا. | :''' a ''': همه('''All''')، به معنی همه موارد بالا. | ||
<br> | <br> | ||
− | مقدار هایی که | + | مقدار هایی که میتوانیم برای "'''چهکار'''" استفاده کنیم، عبارتند از: |
− | :''' + ''': علامت بهاضافه، از این علامت برای اضافه کردن | + | :''' + ''': علامت بهاضافه، از این علامت برای اضافه کردن دسترسی به دسترسی های موجود استفاده میشود. |
− | :''' - ''': علامت منهی، از این علامت برای حذف کردن | + | :''' - ''': علامت منهی، از این علامت برای حذف کردن دسترسی استفاده میشود. |
− | :''' = ''': علامت مساوی، از این علامت برای اضافه کردن | + | :''' = ''': علامت مساوی، از این علامت برای اضافه کردن دسترسی های تعیین شده و حذف بقیه دسترسی ها استفاده میشود. |
<br> | <br> | ||
− | مقدار هایی که | + | مقدار هایی که میتوانیم برای "'''چهچیز'''" استفاده کنیم، عبارتند از: |
− | :''' r ''': | + | :''' r ''': دسترسی خواندن |
− | :''' w ''': | + | :''' w ''': دسترسی نوشتن |
− | :''' x ''': | + | :''' x ''': دسترسی اجرا |
:''' s ''': بیت '''[[SUID]]''' یا '''[[SGID]]''' | :''' s ''': بیت '''[[SUID]]''' یا '''[[SGID]]''' | ||
:''' t ''': بیت چسبناک('''[[sticky-bit]]''') | :''' t ''': بیت چسبناک('''[[sticky-bit]]''') |
نسخهٔ ۹ دی ۱۳۹۹، ساعت ۲۳:۰۰
chmod که مخفف change mode است، نرمافزاری برای تغییر دسترسیهای یک پرونده است.
از این برنامه برای اصلاح اینکه چه کسانی اجازه اجرا، خواندن و نوشتن در کدام شاخهها و روی کدام پروندهها را دارند، استفاده میشود.
دیدن دسترسیها
برای دیدن دسترسیهای پروندهها میتوان از برنامهٔ ls به این صورت استفاده کرد:
$ ls -l
در هر خط، نخستین نویسه، نشان دهندهٔ نوع پرونده است. برخی مقدارهایی که این نویسه میگیرد:
- - : نشاندهندهٔ پروندهٔ عادی
- d : نشان دهندهٔ شاخه
- l : نشان دهندهٔ پیوند
- s : نشاندهندهٔ سوکت
- b : نشان دهندهٔ بلاک
- c : نشاندهندهٔ نویسه
- ...
بعد از نخستین نویسه ۹ نویسهٔ بعدی برای نمایش دسترسیهای پرونده استفاده میشود. این نویسهها میتوانند مقدارهای زیر را داشته باشند:
- r : نشاندهندهٔ دسترسی خواندن (read)
- w : نشاندهندهٔ دسترسی نوشتن (write)
- x : نشاندهندهٔ دسترسی اجرا (execute)
- - : نشاندهندهٔ این است که دسترسی تعیین نشده
- X : ...
- s : نشاندهندهٔ بیت SUID یا SGID است
- S : نشاندهندهٔ بیت SUID یا SGID است، اما دسترسی اجرایی(x) متناظر تعیین نشده است
- t : نشاندهندهٔ بیت چسبناک(sticky-bit) یا محافظت از حذف است
- T : نشاندهندهٔ بیت چسبناک(sticky-bit) یا محافظت از حذف است، اما بیت اجرایی(x) متناظر تعیین نشده است
بعد از نخستین نویسه بقیهٔ ۹ نویسه به سه گروه سهتایی تقسیم میشوند. به ترتیب از سمت چپ :
- سه نویسهٔ نخست نشاندهندهٔ دسترسیهای مالک پرونده یا کاربر(user) :
-rwxrwxrwx
- سه نویسهٔ پس از آن، نشاندهندهٔ دسترسیهای گروه(group) :
-rwxrwxrwx
- و در پایان، سه نویسهٔ باقیمانده، نشاندهندهٔ دسترسیهای دیگران(other) :
-rwxrwxrwx
برای مثال :
-
-rwxr-xr-x
: نشان میدهد که صاحب پرونده(چون نخستین نویسه "-" است) تمام دسترسی های خواندن، نوشتن و اجرا کردن را دارد و اعضای گروه پرونده و دیگران اجازهٔ خواندن و اجرا کردن پرونده را دارند، ولی اجازهٔ نوشتن در پرونده را ندارند.
-
drwxr-x---
: نشان میدهد که صاحب شاخه(چون نخستین نویسه "d" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه، اجازهٔ خواندن و دیدن پروندههای داخلی را دارند و دیگران هیچ اجازهای برای خواندن از، نوشتن در یا دیدن محتوای شاخه را ندارند.
-
drwxrwxrwt
: نشان میدهد که صاحب شاخه(چون نخستین نویسه "d" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه نیز مانند صاحب شاخه، اجازه خواندن، نوشتن و دیدن پروندههای درون شاخه را دارند و دیگران نیز همه دسترسی ها را دارند و همچنین بیت چسبناک(sticky-bit) نیز برای این شاخه تعیین شده است.
گزینهها
-c, --changes
- مانند verbose اما فقط در صورت ایجاد تغییر گزارش میدهد
-f, --silent, --quiet
- بیشتر پیغام های خطا را نادیده میگیرد
-v, --verbose
- برای هر فرایند، اطّلاعات اضافی را چاپ میکند
--no-preserve-root
- do not treat '/' specially (the default)
--preserve-root
- fail to operate recursively on '/'
--reference=RFILE
- استفاده از دسترسیهای پرونده 'RFILE' به عنوان مرجع (از دسترسیهای پرونده 'RFILE' استفاده میکند)
-R, --recursive
- تغییر همه پروندهها و شاخهها به صورت بازگشتی
--help
- راهنما را نمایش میدهد
--version
- نگارش برنامه را نمایش میدهد
روش کار
میتوان از برنامهٔ chmod به این شکل استفاده کرد:
chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...
برای استفاده از chmod باید سه چیز را به ان بگوییم:
- چهکسی : برای چه کسی دسترسیها را تعیین می کنیم.
- چهکار : چه تغییری ایجاد می کنیم؟ آیا ما دسترسی را اضافه یا حذف می کنیم؟
- چهچیز : کدام یک از دسترسیها را تعیین می کنیم؟
مقدار هایی که میتوانیم برای "چه کسی" استفاده کنیم، عبارتند از:
- u : کاربر(User)، به معنی صاحب پرونده یا شاخه.
- g : گروه(Group)، به معنی اعضای گروهی است که پرونده به آن تعلق دارد.
- o : دیگران(Others)، به معنی افرادی است که توسط دسترسیهای "u" و "g" اداره نمی شوند.
- a : همه(All)، به معنی همه موارد بالا.
مقدار هایی که میتوانیم برای "چهکار" استفاده کنیم، عبارتند از:
- + : علامت بهاضافه، از این علامت برای اضافه کردن دسترسی به دسترسی های موجود استفاده میشود.
- - : علامت منهی، از این علامت برای حذف کردن دسترسی استفاده میشود.
- = : علامت مساوی، از این علامت برای اضافه کردن دسترسی های تعیین شده و حذف بقیه دسترسی ها استفاده میشود.
مقدار هایی که میتوانیم برای "چهچیز" استفاده کنیم، عبارتند از:
- r : دسترسی خواندن
- w : دسترسی نوشتن
- x : دسترسی اجرا
- s : بیت SUID یا SGID
- t : بیت چسبناک(sticky-bit)