Chmod

از ویکی فارسی اوبونتو
نسخهٔ تاریخ ‏۱۰ دی ۱۳۹۹، ساعت ۱۳:۰۵ توسط Eshagh (بحث | مشارکت‌ها) (تکمیل روش کار)
پرش به: ناوبری، جستجو
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 فقط برای مالک یا گروه پرونده قابل اضافه شدن است و برای دیگران قابل اضافه شدن نیست.
    • بیت SUID یا SGID برای تنظیم این دسترسی نیاز به دسترسی ابر کاربر است.
    • بیت SUID یا SGID فقط برای برنامهٔ های باینری عمل میکند و برای اسکریپت ها عمل نمیکند.
  • +t : نشان می‌دهد که بیت چسبناک(sticky-bit) را به پرونده یا شاخه مورد نظر اضافه کن

تغییر دسترسی ها

می‌توان از برنامهٔ chmod به این شکل استفاده کرد:

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...