Skip to content

Latest commit

 

History

History
171 lines (120 loc) · 5.13 KB

File metadata and controls

171 lines (120 loc) · 5.13 KB
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_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