Chmod: تفاوت بین نسخه‌ها

از ویکی فارسی اوبونتو
پرش به: ناوبری، جستجو
 
(۱۳ نسخه‌ٔ میانی ویرایش شده توسط ۷ کاربر نشان داده نشده)
سطر ۱: سطر ۱:
'''chmod''' که مخفف change file mode bits است، برای تغییر [[دسترسی‌ها]]ی یک پرونده یا یک شاخه است.
+
{{ویرایش|این نوشته تلاشی است در ترجمه مقاله  [https://www.howtogeek.com/437958/how-to-use-the-chmod-command-on-linux How to Use the chmod Command on Linux]  در صورت امکان به تکمیل ترجمه آن کمک کنید.}}
== کاربرد مود ۲۲۲ ==
+
 
مود ۲۲۲ که به صاحب پرونده، دیگر کاربران در همان گروه کاربری و به بقیه تنها دسترسی نوشتن میدهد، میتواند بوسیله‌ی ترکیب با [[chattr]] به کاربران تنها دسترسی اضافه کردن به یک پرونده را بدهد.
+
[[پرونده: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 222 logfile
+
chmod [OPTION]... MODE[,MODE]... FILE...
chattr +a logfile
+
chmod [OPTION]... OCTAL-MODE FILE...
 +
chmod [OPTION]... --reference=RFILE FILE...
 
</pre>
 
</pre>
در مثال بالا که باید با [[ابرکاربر]] اجرا شود، ابتدا به پرونده‌ی logfile تنها دسترسی نوشتن میدهیم، تا به اینجا کاربران میتوانند پرونده را از نو بازنویسی کنند یا محتویات جدید به آن اضافه کنند اما نمیتوانند پرونده را بخوانند.
 
  
اما بعد از اجرای دستور دوم و دادن صفت a(که مخفف append است) به پرونده، کاربران تنها میتوانند به آن مختویات را اضافه کنند و نمیتوانند چیزی از آن کم کرده یا آنرا بطور کامل بازنویسی کنند. در نتیجه [[مدیر سیستم]] میتواند(در این مثال) کاری کند که کاربران تنها(به معنای دقیق کلمه) log ها را اضافه کنند.
+
برای مثال،یک پرونده با نام '''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 1.png

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 را به مالک پرونده یا شاخه اضافه کن و دسترسی اجرا کردن را به گروه و دیگران اضافه کن.
بیت SUID یا SGID فقط به دسترسی های مالک یا گروه پرونده قابل اضافه شدن است و به دسترسی های دیگران قابل اضافه شدن نیست.
برای تنظیم این بیت باید مالک فایل یا ابرکاربر باشید.
بیت SUID یا SGID فقط برای برنامهٔ های باینری عمل میکند و برای اسکریپت ها عمل نمیکند.
  • 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 2.png

ما میخواهیم مالک پرونده دسترسی‌های خواندن، نوشتن و اجرا داشته باشد و گروه و سایر کاربران فقط دسترسی‌های خواندن و اجرا داشته باشند. ما می توانیم با استفاده از دستور زیر این کار را انجام دهیم:

$ chmod u=rwx,og=rx new.txt

Chmod 3.png

در ادامه ما میخواهیم دسترسی اجرا را از تمام کاربران بگیریم، پس اینگونه عمل میکنید:

$ chmod a-x new.txt

Chmod 4.png


ترجمه لغات

  • شاخه: دایرکتوری یا پوشه - directory
  • دسترسی: مجوز یا اجازه - permission
  • پرونده: فایل - file
  • نویسه: کاراکتر - character
  • پرونده: لینک - link