Chmod: تفاوت بین نسخهها
(ویراستاری) |
(تکمیل روش کار) |
||
سطر ۷۲: | سطر ۷۲: | ||
== روش کار == | == روش کار == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!-- 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 --> | ||
سطر ۱۰۴: | سطر ۹۶: | ||
:''' s ''': بیت '''[[SUID]]''' یا '''[[SGID]]''' | :''' s ''': بیت '''[[SUID]]''' یا '''[[SGID]]''' | ||
:''' t ''': بیت چسبناک('''[[sticky-bit]]''') | :''' 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]]''' فقط برای مالک یا گروه پرونده قابل اضافه شدن است و برای دیگران قابل اضافه شدن نیست. | ||
+ | ** بیت '''[[SUID]]''' یا '''[[SGID]]''' برای تنظیم این دسترسی نیاز به دسترسی ابر کاربر است. | ||
+ | ** بیت '''[[SUID]]''' یا '''[[SGID]]''' فقط برای برنامهٔ های باینری عمل میکند و برای اسکریپت ها عمل نمیکند. | ||
+ | * <code>+t</code> : نشان میدهد که بیت چسبناک('''[[sticky-bit]]''') را به پرونده یا شاخه مورد نظر اضافه کن | ||
+ | |||
+ | == تغییر دسترسی ها == | ||
+ | |||
+ | میتوان از برنامهٔ '''chmod''' به این شکل استفاده کرد: | ||
+ | <!-- https://man7.org/linux/man-pages/man1/chmod.1.html --> | ||
+ | <pre> | ||
+ | chmod [OPTION]... MODE[,MODE]... FILE... | ||
+ | chmod [OPTION]... OCTAL-MODE FILE... | ||
+ | chmod [OPTION]... --reference=RFILE FILE... | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
نسخهٔ ۱۰ دی ۱۳۹۹، ساعت ۱۳:۰۵
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...