| title | chmod |
|---|---|
| description | |
| published | true |
| date | 2025-07-11 02:33:15 UTC |
| tags | |
| editor | markdown |
| dateCreated | 2025-07-11 02:33:11 UTC |
chmod که مخفف change mode است، نرمافزاری برای تغییر دسترسیهای یک پرونده است.
از این برنامه برای اصلاح اینکه چه کسانی اجازه اجرا، خواندن و نوشتن در کدام شاخهها و روی کدام پروندهها را دارند، استفاده میشود.
برای دیدن دسترسیهای پروندهها میتوان از برنامهٔ ls به این صورت استفاده کرد:
$ ls -l
در هر خط، نخستین نویسه، نشاندهندهٔ نوع پرونده است. برخی مقدارهایی که این نویسه میگیرد:
- - : نشاندهندهٔ پروندهٔ عادی
- d : نشاندهندهٔ شاخه
- l : نشاندهندهٔ پیوند
- s : نشاندهندهٔ سوکت
- b : نشاندهندهٔ بلاک
- c : نشاندهندهٔ نویسه
- ...
بعد از نخستین نویسه، ۹ نویسهٔ بعدی برای نمایش دسترسیهای پرونده استفاده میشود. این نویسهها میتوانند مقدارهای زیر را داشته باشند:
- r : دسترسی خواندن
- w : دسترسی نوشتن
- x : دسترسی اجرا
- - : عدم تعیین دسترسی
- X : ...
- s : بیت SUID یا SGID
- S : بیت SUID یا SGID، اما بدون دسترسی اجرایی
- t : بیت چسبناک (sticky bit)
- T : بیت چسبناک بدون دسترسی اجرایی
این ۹ نویسه به سه گروه سهتایی تقسیم میشوند:
- user (مالک):
-rwxrwxrwx→ بخش اول (مثلاًrwx) - group (گروه): بخش دوم (مثلاً
rwx) - other (دیگران): بخش سوم (مثلاً
rwx)
-rwxr-xr-x: مالک همه دسترسیها را دارد. گروه و دیگران فقط خواندن و اجرا دارند.drwxr-x---: مالک همه دسترسیها را دارد. گروه فقط خواندن و دیدن محتوا را دارد. دیگران هیچ.drwxrwxrwt: همه دسترسیها برای همه وجود دارد. همچنین بیت چسبناک فعال است.
-c, --changes
مانند verbose اما فقط در صورت ایجاد تغییر گزارش میدهد
-f, --silent, --quiet
بیشتر پیغامهای خطا را نادیده میگیرد
-v, --verbose
اطلاعات اضافی را چاپ میکند
--no-preserve-root
به صورت ویژه با / رفتار نمیکند (پیشفرض)
--preserve-root
اجازه اعمال بازگشتی به / را نمیدهد
--reference=RFILE
استفاده از دسترسیهای پرونده RFILE به عنوان مرجع
-R, --recursive
تغییر همه پروندهها و شاخهها به صورت بازگشتی
--help
نمایش راهنما
--version
نمایش نگارش برنامه
برای استفاده از chmod باید سه چیز را به آن بگوییم:
- چهکسی: برای چه کسی دسترسی تعیین میکنیم
- چهکار: اضافه یا حذف
- چهچیز: کدام نوع دسترسی
- u: مالک
- g: گروه
- o: دیگران
- a: همه
- +: اضافه کردن
- -: حذف
- =: جایگزینی کل دسترسی
- r: خواندن
- w: نوشتن
- x: اجرا
- s: بیت SUID یا SGID
- t: بیت چسبناک
-
u=rwx→ فقط به مالک، دسترسی کامل بده و بقیه را حذف کن -
a+x→ دسترسی اجرا را به همه اضافه کن -
u=rwx,go+rx→ مالک کامل؛ گروه و دیگران فقط خواندن و اجرا -
u+s,go+x→ بیت SUID برای مالک، و اجرا برای گروه و دیگران- بیت SUID/SGID فقط برای مالک/گروه و فقط در برنامههای باینری عمل میکند
-
o+t→ بیت چسبناک برای دیگران- فقط برای دیگران قابل تنظیم و نیازمند مالک بودن یا ابرکاربر بودن است
دستور کلی:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
پروندهای به نام new.txt میسازیم.
$ ls -l new.txt
تغییر دسترسی:
$ chmod u=rwx,og=rx new.txt
حذف اجرای همه:
$ chmod a-x new.txt
- شاخه: directory
- دسترسی: permission
- پرونده: file
- نویسه: character
- پرونده: link


