Chmod: تفاوت بین نسخهها
(۱۴ نسخهٔ میانی ویرایش شده توسط ۷ کاربر نشان داده نشده) | |||
سطر ۱: | سطر ۱: | ||
− | '''chmod''' که مخفف change | + | {{ویرایش|این نوشته تلاشی است در ترجمه مقاله [https://www.howtogeek.com/437958/how-to-use-the-chmod-command-on-linux How to Use the chmod Command on Linux] در صورت امکان به تکمیل ترجمه آن کمک کنید.}} |
− | == | + | |
− | + | [[پرونده:chmod_1.png|500px|left]] | |
+ | '''chmod''' که مخفف change mode است، نرمافزاری برای تغییر [[pemission|دسترسیهای]] یک پرونده است. | ||
+ | |||
+ | از این برنامه برای اصلاح اینکه چه کسانی اجازه اجرا، خواندن و نوشتن در کدام شاخهها و روی کدام پروندهها را دارند، استفاده میشود. | ||
+ | |||
+ | == دیدن دسترسیها == | ||
+ | برای دیدن دسترسیهای پروندهها میتوان از برنامهٔ '''[[ls]]''' به این صورت استفاده کرد: | ||
+ | <code dir=ltr>$ ls -l</code> | ||
+ | |||
+ | در هر خط، نخستین نویسه، نشان دهندهٔ نوع پرونده است. برخی مقدارهایی که این نویسه میگیرد: | ||
+ | * ''' - ''': نشاندهندهٔ پروندهٔ عادی | ||
+ | * ''' 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''') : <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>drwxr-x---</code> : نشان میدهد که صاحب شاخه(چون نخستین نویسه "'''d'''" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه، اجازهٔ خواندن و دیدن پروندههای داخلی را دارند و دیگران هیچ اجازهای برای خواندن از، نوشتن در یا دیدن محتوای شاخه را ندارند. | ||
+ | |||
+ | * <code dir=ltr>drwxrwxrwt</code> : نشان میدهد که صاحب شاخه(چون نخستین نویسه "'''d'''" است) تمام دسترسیهای خواندن، نوشتن و دیدن پروندههای درون شاخه را دارد و اعضای گروه شاخه نیز مانند صاحب شاخه، اجازه خواندن، نوشتن و دیدن پروندههای درون شاخه را دارند و دیگران نیز همه دسترسی ها را دارند و همچنین بیت چسبناک('''[[sticky-bit]]''') نیز برای این شاخه تعیین شده است. | ||
+ | |||
+ | |||
+ | == گزینهها == | ||
+ | |||
+ | <code dir=ltr>'''-c, --changes'''</code> | ||
+ | : مانند '''verbose''' اما فقط در صورت ایجاد تغییر گزارش میدهد | ||
+ | |||
+ | <code dir=ltr>'''-f, --silent, --quiet'''</code> | ||
+ | : بیشتر پیغام های خطا را نادیده میگیرد | ||
+ | |||
+ | <code dir=ltr>'''-v, --verbose'''</code> | ||
+ | : برای هر فرایند، اطّلاعات اضافی را چاپ میکند | ||
+ | |||
+ | <code dir=ltr>'''--no-preserve-root'''</code> | ||
+ | : do not treat '/' specially (the default) | ||
+ | |||
+ | <code dir=ltr>'''--preserve-root'''</code> | ||
+ | : fail to operate recursively on '/' | ||
+ | |||
+ | <code dir=ltr>'''--reference=RFILE'''</code> | ||
+ | : استفاده از دسترسیهای پرونده 'RFILE' به عنوان مرجع (از دسترسیهای پرونده 'RFILE' استفاده میکند) | ||
+ | |||
+ | <code dir=ltr>'''-R, --recursive'''</code> | ||
+ | : تغییر همه پروندهها و شاخهها به صورت بازگشتی | ||
+ | |||
+ | <code dir=ltr>'''--help'''</code> | ||
+ | : راهنما را نمایش میدهد | ||
+ | |||
+ | <code dir=ltr>'''--version'''</code> | ||
+ | : نگارش برنامه را نمایش میدهد | ||
+ | |||
+ | == روش کار == | ||
+ | |||
+ | <!-- https://www.howtogeek.com/437958/how-to-use-the-chmod-command-on-linux --> | ||
+ | برای استفاده از '''chmod''' باید سه چیز را به ان بگوییم: | ||
+ | *''' چهکسی ''': برای چه کسی دسترسیها را تعیین می کنیم. | ||
+ | *''' چهکار ''': چه تغییری ایجاد می کنیم؟ آیا ما دسترسی را اضافه یا حذف می کنیم؟ | ||
+ | *''' چهچیز ''': کدام یک از دسترسیها را تعیین می کنیم؟ | ||
+ | <br> | ||
+ | مقدار هایی که میتوانیم برای "'''چه کسی'''" استفاده کنیم، عبارتند از: | ||
+ | :''' u ''': کاربر('''User''')، به معنی صاحب پرونده یا شاخه. | ||
+ | :''' g ''': گروه('''Group''')، به معنی اعضای گروهی است که پرونده به آن تعلق دارد. | ||
+ | :''' o ''': دیگران('''Others''')، به معنی افرادی است که توسط دسترسیهای "'''u'''" و "'''g'''" اداره نمی شوند. | ||
+ | :''' a ''': همه('''All''')، به معنی همه موارد بالا. | ||
+ | <br> | ||
+ | مقدار هایی که میتوانیم برای "'''چهکار'''" استفاده کنیم، عبارتند از: | ||
+ | :''' + ''': علامت بهاضافه، از این علامت برای اضافه کردن دسترسی به دسترسی های موجود استفاده میشود. | ||
+ | :''' - ''': علامت منهی، از این علامت برای حذف کردن دسترسی استفاده میشود. | ||
+ | :''' = ''': علامت مساوی، از این علامت برای اضافه کردن دسترسی های تعیین شده و حذف بقیه دسترسی ها استفاده میشود. | ||
+ | <br> | ||
+ | مقدار هایی که میتوانیم برای "'''چهچیز'''" استفاده کنیم، عبارتند از: | ||
+ | :''' r ''': دسترسی خواندن | ||
+ | :''' w ''': دسترسی نوشتن | ||
+ | :''' x ''': دسترسی اجرا | ||
+ | :''' s ''': بیت '''[[SUID]]''' یا '''[[SGID]]''' | ||
+ | :''' t ''': بیت چسبناک('''[[sticky-bit]]''') | ||
+ | <br> | ||
+ | برای مثال: | ||
+ | * <code>u=rwx</code> : نشان میدهد که دسترسی های مالک پرونده یا شاخه را به خواندن، نوشتن و اجرا کردن تغیر بده و بقیه مجوز ها را حذف کن. | ||
+ | * <code>a+x</code> : نشان میدهد که دسترسی اجرا را به همه کاربران (مالک، گروه پرونده، دیگران) پرونده یا شاخه اضافه کن. | ||
+ | * <code>u=rwx,go+rx</code> : نشان میدهد که دسترسی های مالک پرونده یا شاخه را به خواندن، نوشتن و اجرا کردن تغیر بده و دسترسی های خواندن و اجرا کردن را به گروه پرونده و دیگران اضافه کن. | ||
+ | * <code>u+s,go+x</code> : نشان میدهد که بیت '''[[SUID]]''' را به مالک پرونده یا شاخه اضافه کن و دسترسی اجرا کردن را به گروه و دیگران اضافه کن. | ||
+ | :: بیت '''[[SUID]]''' یا '''[[SGID]]''' فقط به دسترسی های مالک یا گروه پرونده قابل اضافه شدن است و به دسترسی های دیگران قابل اضافه شدن نیست. | ||
+ | :: برای تنظیم این بیت باید مالک فایل یا ابرکاربر باشید. | ||
+ | :: بیت '''[[SUID]]''' یا '''[[SGID]]''' فقط برای برنامهٔ های باینری عمل میکند و برای اسکریپت ها عمل نمیکند. | ||
+ | * <code>o+t</code> : نشان میدهد که بیت چسبناک('''[[sticky-bit]]''') را به پرونده یا شاخه مورد نظر اضافه کن | ||
+ | :: بیت چسبناک('''[[sticky-bit]]''') فقط به دسترسی های دیگران قابل اضافه کردن است. | ||
+ | :: برای تنظیم این بیت باید مالک فایل یا ابرکاربر باشید. | ||
+ | |||
+ | == تغییر دسترسی ها == | ||
+ | |||
+ | میتوان از برنامهٔ '''chmod''' به این شکل استفاده کرد: | ||
+ | <!-- https://man7.org/linux/man-pages/man1/chmod.1.html --> | ||
<pre> | <pre> | ||
− | chmod | + | chmod [OPTION]... MODE[,MODE]... FILE... |
− | + | chmod [OPTION]... OCTAL-MODE FILE... | |
+ | chmod [OPTION]... --reference=RFILE FILE... | ||
</pre> | </pre> | ||
− | |||
− | + | برای مثال،یک پرونده با نام '''new.txt''' میسازیم. | |
+ | برای دیدن دسترسی های پرونده مورد نظر از فرمان '''ls''' به این صورت استفاده میکنیم: | ||
+ | <pre>$ ls -l new.txt</pre> | ||
+ | [[پرونده:chmod_2.png]] | ||
+ | |||
+ | ما میخواهیم مالک پرونده دسترسیهای خواندن، نوشتن و اجرا داشته باشد و گروه و سایر کاربران فقط دسترسیهای خواندن و اجرا داشته باشند. ما می توانیم با استفاده از دستور زیر این کار را انجام دهیم: | ||
+ | <pre>$ chmod u=rwx,og=rx new.txt</pre> | ||
+ | [[پرونده:chmod_3.png]] | ||
+ | |||
+ | در ادامه ما میخواهیم دسترسی اجرا را از تمام کاربران بگیریم، پس اینگونه عمل میکنید: | ||
+ | <pre>$ chmod a-x new.txt</pre> | ||
+ | [[پرونده:chmod_4.png]] | ||
+ | |||
+ | |||
+ | == ترجمه لغات == | ||
+ | * '''شاخه''': دایرکتوری یا پوشه - '''directory''' | ||
+ | * '''دسترسی''': مجوز یا اجازه - '''permission''' | ||
+ | * '''پرونده''': فایل - '''file''' | ||
+ | * '''نویسه''': کاراکتر - '''character''' | ||
+ | * '''پرونده''': لینک - '''link''' | ||
+ | |||
+ | [[رده:خط فرمان]] |
نسخهٔ کنونی تا ۱۳ دی ۱۳۹۹، ساعت ۲۳:۱۹
این صفحه نیازمند ویرایش است.
این نوشته تلاشی است در ترجمه مقاله How to Use the chmod Command on Linux در صورت امکان به تکمیل ترجمه آن کمک کنید.
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 باید سه چیز را به ان بگوییم:
- چهکسی : برای چه کسی دسترسیها را تعیین می کنیم.
- چهکار : چه تغییری ایجاد می کنیم؟ آیا ما دسترسی را اضافه یا حذف می کنیم؟
- چهچیز : کدام یک از دسترسیها را تعیین می کنیم؟
مقدار هایی که میتوانیم برای "چه کسی" استفاده کنیم، عبارتند از:
- u : کاربر(User)، به معنی صاحب پرونده یا شاخه.
- g : گروه(Group)، به معنی اعضای گروهی است که پرونده به آن تعلق دارد.
- o : دیگران(Others)، به معنی افرادی است که توسط دسترسیهای "u" و "g" اداره نمی شوند.
- a : همه(All)، به معنی همه موارد بالا.
مقدار هایی که میتوانیم برای "چهکار" استفاده کنیم، عبارتند از:
- + : علامت بهاضافه، از این علامت برای اضافه کردن دسترسی به دسترسی های موجود استفاده میشود.
- - : علامت منهی، از این علامت برای حذف کردن دسترسی استفاده میشود.
- = : علامت مساوی، از این علامت برای اضافه کردن دسترسی های تعیین شده و حذف بقیه دسترسی ها استفاده میشود.
مقدار هایی که میتوانیم برای "چهچیز" استفاده کنیم، عبارتند از:
- r : دسترسی خواندن
- w : دسترسی نوشتن
- x : دسترسی اجرا
- s : بیت SUID یا SGID
- t : بیت چسبناک(sticky-bit)
برای مثال:
-
u=rwx
: نشان میدهد که دسترسی های مالک پرونده یا شاخه را به خواندن، نوشتن و اجرا کردن تغیر بده و بقیه مجوز ها را حذف کن. -
a+x
: نشان میدهد که دسترسی اجرا را به همه کاربران (مالک، گروه پرونده، دیگران) پرونده یا شاخه اضافه کن. -
u=rwx,go+rx
: نشان میدهد که دسترسی های مالک پرونده یا شاخه را به خواندن، نوشتن و اجرا کردن تغیر بده و دسترسی های خواندن و اجرا کردن را به گروه پرونده و دیگران اضافه کن. -
u+s,go+x
: نشان میدهد که بیت SUID را به مالک پرونده یا شاخه اضافه کن و دسترسی اجرا کردن را به گروه و دیگران اضافه کن.
-
o+t
: نشان میدهد که بیت چسبناک(sticky-bit) را به پرونده یا شاخه مورد نظر اضافه کن
- بیت چسبناک(sticky-bit) فقط به دسترسی های دیگران قابل اضافه کردن است.
- برای تنظیم این بیت باید مالک فایل یا ابرکاربر باشید.
تغییر دسترسی ها
میتوان از برنامهٔ chmod به این شکل استفاده کرد:
chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...
برای مثال،یک پرونده با نام new.txt میسازیم. برای دیدن دسترسی های پرونده مورد نظر از فرمان ls به این صورت استفاده میکنیم:
$ ls -l new.txt
ما میخواهیم مالک پرونده دسترسیهای خواندن، نوشتن و اجرا داشته باشد و گروه و سایر کاربران فقط دسترسیهای خواندن و اجرا داشته باشند. ما می توانیم با استفاده از دستور زیر این کار را انجام دهیم:
$ chmod u=rwx,og=rx new.txt
در ادامه ما میخواهیم دسترسی اجرا را از تمام کاربران بگیریم، پس اینگونه عمل میکنید:
$ chmod a-x new.txt
ترجمه لغات
- شاخه: دایرکتوری یا پوشه - directory
- دسترسی: مجوز یا اجازه - permission
- پرونده: فایل - file
- نویسه: کاراکتر - character
- پرونده: لینک - link