Chmod
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 را به مالک پرونده یا شاخه اضافه کن و دسترسی اجرا کردن را به گروه و دیگران اضافه کن.
-
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 u=rwx,og=rx new.txt
در ادامه ما میخواهیم دسترسی اجرا را از تمام کاربران بگیریم، پس اینگونه عمل میکنید:
$ chmod a-x new.txt
ترجمه لغات
- شاخه: دایرکتوری یا پوشه - directory
- دسترسی: مجوز یا اجازه - permission
- پرونده: فایل - file
- نویسه: کاراکتر - character
- پرونده: لینک - link