رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دستور chmod و مروری بر انواع Permission ها در GNU/Linux
#1
در سیستم های بر پایه ی لینوکس , سه نوع (یا گروه) از کاربران وجود دارند, که میتوانند به یک فایل دسترسی پیدا کنند (البته بسته به نوع مجوزشون یا همون permission):
1. مالک فایل یا همان شخصی که فایل رو ایجاد میکند (user).
2. گروهی که کاربر عضو آن است - یعنی هم گروهی های کاربر (group).
3. و دیگر کاربران (other).
این سه گروه رو بطور مخفف با: u و g و o نمایش میدهند.
* (حرف a که مخفف کلمه all میباشد , همه ی کاربران سیستم را شامل میشود)


این سه گروه , میتوانند یک فایل رو به سه صورت باز کنند:
1. برای خواندن (readable).
2. برای نوشتن (writable).
3. برای اجرا (executable).
این سه نوع را بطور مخفف با: r و w و x نمایش میدهند.


خصوصیت های دیگری نیز برای یک فایل در سیستم های بر پایه ی لینوکس هست:
1. suid or sgid property ، که یا حرف s نمایش میدهند.
2. a sticky bit ، که با حرف t نمایش میدهند (این خصوصیت به ندرت استفاده میشود).


توجه:
میتوان بوسیله دستور chmod
، مجوزهای (permissions) یک فایل (File) یا یک Directory را تنظیم کرد؛ اما چگونه میتوان بوسیله chmod ، مجوزها رو تغییر داد؟

دستور chmod ، میتواند به دو صورت مجوز ها را دریافت کند، اولی بصورت حروف الفبا (همون حروفی که در بالا ذکر شد) و دومی یک عدد در مبنای هشت (Octal) ؛ بوسیله این حروف الفبا و اعداد در مبنای هشت ، هر کاری که دوست داشتید میتونید انجام بدید. برای کاربران تازه کار ، فقط آشنایی با حروف الفبایی کافیست.
نماد الفبایی:
برای دسترسی خواندن
و نوشتن یک فایل برای گروه ، از نماد الفبایی زیر استفاده میکنمیم:
g+rw[align=RIGHT]یا مثلا اگر بخواهیم مجوز یک فایل را برای کل کاربران بصورت خواندن ، نوشتن و اجرا ، محدود کنیم ، از نماد زیر استفاده میکنیم:[align=LEFT]o-rwx
[align=RIGHT]بطور کلی میتونیم اینطوری بیان کنیم : مجوز های یک فایل را میتوان به این صورت تغییر داد که ، اول نماد الفبایی نوع کاربر را مینویسیم و بعد اگر بخواهیم مجوز های مد نظر برای آن فعال باشد از کاراکتر (+) و اگر بخواهیم مجوزها رو محدود کنیم از کاراکتر (-) استفاده میکنیم و بعد از آن ، نماد الفبایی مجوز[ها] را مینویسیم.
مجوز های عددی:
مجوز های عددی با یه گروه از اعداد مبنای هشت کار میکنند. همونطور که میدونید یه عدد در مبنای 16 از یک بلاک 4 رقمی و یک عدد در مبنای هشت از یک بلاک 3 رقمی استفاده میکند. شاید دیده باشید وقتی از دستوری مثل ls -l استفاده میکنیم ، یه لیست از مجوزهای یک فایل رو بصورت زیر نمایش میدهد :
-rwxr-xr-x 1 yourusername yourgroup 18 Oct 22 09:25 yourfile
این لیست مجوزها (منظور rwxr-xr-x-) ، بصورت یک بلاک از بیت ها ذخیره میشه که به bitfield معروف هستش. اگه اونو به مبنای هشت ترجمه کنیم میشود 0775 و مبنای دوی آن میشود 0111101101 .
پس ما میتوانیم هر مجوزی که خواستیم فقط با یه عدد از مبنای هشت صادر کنیم (به علاوه یه بیت برای ابتدای عدد).
400 -r-------- read by owner 040 ----r----- read by group 004 -------r-- read by anybody (other) 200 --w------- write by owner 020 -----w---- write by group 002 --------w- write by anybody 100 ---x------ execute by owner 010 ------x--- execute by group 001 ---------x execute by anybody 4000 s--------- suid 2000 s--------- sgid 1000 t--------- sticky
ممکن است این مجوز ها به تنهایی برای ما مفید نباشند ، ولی میتوان آنها را باهم ترکیب و یک مجوز جدید بوجود آورد. برای مثال : 4 برابر با --r میباشد و 2 برابر با -w- میباشد ، ما میتوانیم این دو را باهم جمع کنیم و 6 را (110 باینری) بدست آوریم که معادل -rw یا همان مجوز خواندن و نوشتن میباشد (البته فقط برای خود کار بر) . توجه داشته باشید که توی یک عدد در مبنای 8 ، جابجایی ارقام میتواند یک مجوز را تغییر و یک مجوز جدید ایجاد کند ، مثلا : 600 در مبنای 8 میشود 0110000000 در مبنای دو ، که این مجوز خواندن و نوشتن برای خود ماست نه برای گروه یا دیگر کاربران ؛ 060 در مبنای 8 میشود 0000110000 در مبنای دو ، که مجوز را برای گروه تنظیم میکند؛
برای مثال اگر ما بخواهیم مجوز خواندن و نوشتن برای برای خود و گروه قرار دهیم و به دیگران کاربران هیچ مجوزی ندیم ، باید از عدد 660 در مبنای هشت استفاده کنیم.

استفاده از chmod:[/i]
همانطور که قبلا هم گفته شد ، از chmod برای تعیین مجوز دسترسی (permissions) فایل استفاده میشود، مثلا :
chmod g+rwx filename
این دستور به گروه مجوزه خواندن/نوشتن/اجرا رو میدهد و یا:
chmod 755 filename
اگر این عدد مبنای 8 را به عدد مبنای 2 تبدیل کنیم ، میشود 0111101101 که معادل است با rwxr-xr-x- که معنی میدهد که همه کاربران اجازه خواندن/اجرا کردن فایل رو دارند ولی دیگر اعضای گروه و دیگران کاربران اجازه نوشتن را ندارند.

دستور chmod میتواند همه ی اون سه نوع دسترسی که برای فایل معرفی کردیم را بر روی دایرکتوری ها (directory) و زیر دایرکتوری ها (subdirectories) نیز اعمال کند بوسیله ی R[b]- ، برای مثال:
* chmod -R 755
این دستور ، مجوز مورد نظر را برای همه فایل های موجود در این دایرکتوری اعمال میکند.

[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  Linux Ebooks Collection (95 books) worm 0 3,866 10-13-2013, 10:07 AM
آخرین ارسال: worm
Tongue دستور dmesg چیست و چگونه از آن استفاده کنیم؟ علی عرفانی 0 3,506 09-20-2013, 02:31 PM
آخرین ارسال: علی عرفانی
  Unix / Linux command prompt Keyboard Shortcut Keys مهرداد عباسی 0 3,323 04-19-2012, 07:53 PM
آخرین ارسال: مهرداد عباسی
  راهنمای نصب انواع DVB-T (کارت تلویزیون دیجیتال) ehsan.eba 0 4,246 04-09-2012, 12:27 AM
آخرین ارسال: ehsan.eba
  Linux Series (Beginners) worm 0 3,160 02-23-2012, 06:46 PM
آخرین ارسال: worm
  اموزش تصویری رایگان LPIC-1/CompTIA Linux worm 2 8,401 02-20-2012, 11:59 AM
آخرین ارسال: worm
  دستور yes در لینوکوس مهرداد عباسی 0 2,884 01-04-2012, 06:54 PM
آخرین ارسال: مهرداد عباسی
  terminal multiplexer اجرای دستور در جند سرور مهرداد عباسی 0 2,915 11-28-2011, 05:05 PM
آخرین ارسال: مهرداد عباسی
  انتشار نسخه ۷.۰ از Linux From Scratch زیبا رئیسی 0 3,234 11-23-2011, 11:25 AM
آخرین ارسال: زیبا رئیسی
  شگفتی های دستور wget مهرداد عباسی 0 3,765 10-22-2011, 01:37 PM
آخرین ارسال: مهرداد عباسی

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان