درس یکصد و بیست و یکم: وراثت در مجوزهای دسترسی

وراثت در مجوزهای دسترسی

 

 

Permission Inheritance

باید بدانید که سلسله مراتبی از وراثت در مقوله Permission برقرار است که Permission Inheritance نامیده میشود به معنای وراثت مجوز. این وراثت به معنی اینست که هر آبجکت ، ACE ها را از آبجکت بالادست خود ارث میبرد. بصورت پیشفرض تمام درایوها بالاترین آبجکت در سلسله مراتب وراثت هستند. یعنی لیست ACL که در تب Security یک درایو می بینید، روی ACL تمام فولدرها و فایل های آن درایو نیز وجود دارد. لیست ACL یک فولدر روی ACL تمام subfolder ها و فایلهای آن فولدر قرار دارد.

البته هر آبجکت میتواند در کنار ACE هایی که ارث برده است، دارای ACE های اختصاصی خودش نیز باشد. ACE های اختصاصی هر آبجکت نیز به نوبه خود به ACL آبجکتهای زیردستش اعمال میشود. پس بصورت پیشفرض ACL تب Security یک آبجکت عبارتست از مجموع ACE های اختصاصی خود آن آبجکت + ACE هایی که ارث برده است.

بعنوان مثال، ما روی درایو C کامپیوتر خود برای t.grant یک ACE بصورت ذیل تعریف کرده ایم:

121-1 inheritance-01

حال در درایو فوق فولدری به نام ITPerfection ایجاد میکنیم و سپس به تب Security فولدر فوق میرویم. با شکل ذیل روبرو خواهیم شد:

121-2 inheritance-02

همانطور که می بنید در ACL این فولدر هم t.grant با مجوز تعیین شده روی درایو حضور دارد. حال درون این فولدر یک فایل ( بعنوان مثال یک فایل notepad ) ایجاد کرده و به تب Security این فایل میرویم. در اینجا هم t.grant حضور دارد.

وقتی گفته میشود که در هنگام بررسی و تعیین مجوزهای یک آبجکت به تمام مجوزهای Implicit و Explicit آن دقت کنید، مجوزهایی که بصورت ضمنی و ارثی وجود دارند را نیز باید بررسی نمایید. مجوز نهایی یک اکانت روی یک آبجکت عبارتست از مجموع تمام مجوزهای Explicit و Implicit که بصورت مستقیم یا ارثی روی آن آبجکت اعمال شده اند.

روی فولدر ITPerfection که ایجاد کردیم، در تب security برای گروه sales یک ACE تعریف میکنیم. وقتی کار تعریف ACE خاتمه یافت و روی دکمه OK کلیک کردیم، روی دکمه advanced کلیک میکنیم تا پنجره Advanced Security Settings ظاهر شود. با این پنجره زیاد سر و کار خواهیم داشت:

121-3 advanced security settings

در این پنجره عملیات متنوعی میتوان انجام داد که هر کدام را به وقت خودش آموزش خواهیم داد. در حال حاضر در مورد تب permissions بحث میکنیم. در کادر Permission Entries در واقع ACL این آبجکت قابل مشاهده است ولی بصورت مفصل تر. این کادر دارای تعدادی ستون به ازای هر ACE هست:

  • Type : نوع دسترسی که Allow یا Deny می باشد.
  • Principal : نام اکانت
  • Access : مجوز تعیین شده
  • Inherited from : در این ستون مشخص میشود که آیا این ACE به ارث رسیده است یا نه. اگر ارثی بوده باشد زیر این ستون مشخص میشود که این ACE از چه آبجکتی ارث برده شده است و در واقع میراث چه آبجکتی میباشد. برای بیشتر ACE ها در شکل بالا زیر این ستون عبارت C:\ نوشته شده است یعنی ACE های فوق از درایو C ارث رسیده اند. اما اگر ACE ارثی نباشد مانند Sales ، زیر این ستون عبارت None قرار دارد.
  • Applies To : گفتیم که هر آبجکت ACL خودش را به ACL آبجکت زیر دستش ( آبجکت فرزند) کپی میکند. ستون Applies to نشان میدهد که این ACE قرار است به آبجکت های زیر دست نیز اعمال شود یا نه؟ اگر قرار است اعمال شود به کدام آبجکت های زیردست؟

در این تب دکمه هایی وجود دارد به شرح ذیل:

  • Add : افزودن یک ACE جدید و تنظیم Permission ها برای آن
  • view : مشاهده Permission های ACE انتخاب شده
  • Remove : انتخاب یک ACE و سپس کلیک روی این دکمه جهت حذف ACE فوق.

بصورت پیشفرض همانطور که در شکل نیز مشاهده میکنید اگر یک ACE ارثی را انتخاب کنید، دکمه های view و remove بلافاصله بصورت غیرفعال و غیرقابل انتخاب در می آیند. دلیل اینست بصورت پیشفرض نمی توان ACE های به ارث رسیده را edit یا remove کرد. این کار زمانی میسر خواهد بود که رابطه وراثت با آبجکت بالا دست قطع و غیرفعال شود. یعنی کاری کنیم که دیگر این آبجکت وارث آبجکت بالادست ( C:\ ) نباشد. جهت غیر فعال کردن ارث بری، در همین صفحه روی دکمه Disable Inheritance کلیک میکنیم. بلافاصله کادر Block Inheritance ظاهر میشود:

121-4 block inheritance

این کادر میپرسد که میخواهید با ACE های ارثی چه کنید؟ دو راه وجود دارد:

  • Convert inherited permissions into explicit permissions on this object : انتخاب این گزینه، باعث میشود که تمام ACE های ارثی به Explicit تبدیل شوند. انگار که خود ما بصورت دستی آنها را صریحا روی این فولدر تعریف کرده ایم. اکنون میتوانیم هر بلایی سر هر کدام از این ACE ها بیاوریم. این گزینه را زمانی انتخاب میکنیم که قصد تغییر در ACE های موجود را داریم.
  • Remove all inherited permissions from this object : باعث میشود که تمام ACE های ارثی حذف شوند.

بهرحال یکی از این دو گزینه را باید انتخاب کرد. ما گزینه اول را انتخاب میکنیم. تب permissions به شکل ذیل در می آید:

121-5 after disable inheritance

به ذیل ستون inherited from دقت کنید. برای همه ACE ها عبارت none نوشته شده است. یعنی وراثت از بین رفته است. حال برای تک تک این ACE ها دکمه Remove قابل استفاده خواهند بود. نیز دکمه view جای خود را به دکمه edit داده است تا علاوه بر اینکه بتوان Permission یک ACE را مشاده کرد، بتوان حتی Permission را تغییر نیز داد. اگر در پنجره block inheritance گزینه دوم انتخاب شده بود اکنون جز Sales هیچ ACE دیگری درون کادر permission Entries وجود نمیداشت.

دقت کنید که وراثت این آبجکت نسبت به آبجکتهای بالا دستش از بین رفته است ولی کماکان وراثت این آبجکت به آبجکت های زیر دست یا فرزندش برقرار است. یعنی اگر درون فولدر ITPerfection یک فولدر/ فایل جدید ایجاد کنیم، در تب Security آبجکت فرزند تمام ACL آبجکت والد یعنی فولدر ITPerfection را مشاهده خواهیم کرد.

اکنون یک فولدر به نام MCITP ایجاد کرده و سپس درون آن نیز یک فولدر دیگر به نام F1 ایجاد میکنیم. سپس صفحه Advanced Security Settings فولدر F1 را مشاهده میکنیم. شکل ذیل:

121-6 child advanced security settings

حال وراثت را روی فولدر MCITP غیر فعال کرده و t.grant را نیز حذف میکنیم. مجددا صفحه advanced Security settings مربوط به فولدر فرزند یعنی F1 را مشاهده میکنیم:

121-7 child advanced security settings-02

مشاهده میکنیم که t.grant از ACL فولدر فرزند نیز با توجه به وراثث حذف شده است.

یک چکباکس در پایین صفحه وجود دارد به نام Replace all child….. که کاربرد جالبی دارد. ممکن است آبجکت فرزند به مرور زمان برای خودش تعدادی ACE تعریف کرده باشد. حال به هر دلیلی قصد داشته باشیم کاری کنیم که تمام ACE های غیر ارثی فولدر فرزند حذف شود و فقط ACE های ارثی باقی بمانند. کافیست روی فولدر والد ( مثل فولدر MCITP ) این چکباکس را تیک بزنیم. بیایید این کار را بصورت عملی انجام دهیم.

ابتدا روی فولدر فرزند ( F1 ) یک ACE جدید اضافه میکنیم. مثلا برای Domain Admins . پس داریم:

121-8 replace permission-01

همانطور که مشاهده میکنید domain admins نخستین ACE فولدر فرزند است. حال چکباکس Replace all child… را روی فولدر والد ( یعنی فولدر MCITP ) تیک میزنیم. سپس مجددا صفحه advanced security settings فولدر فرزند یعنی فولدر F1 را مشاهده میکنیم:

121-9 replace permission-02

مشاهده میکنید که domain admins چون بصورت Explicit روی فولدر فرزند تعریف شده بود و به ارث نرسیده بود، بلافاصله از بین رفت و حذف شد. چکباکس فوق در واقع قدرتنمایی فولدر والد میباشد. اگر فکر میکنید که فولدر فرزند چنانچه وراثت را غیرفعال کند میتواند از این قدرتنمایی جلوگیری نماید، سخت در اشتباهید. چکباکس Replace Child all… بسیار گردن کلفت بوده و در هر صورت با موفقیت عمل میکند حتی اگر رابطه وراثت فولدر فوق با فرزندش غیرفعال شده باشد.

در هنگام تداخل allow و deny همواره غلبه با deny است ولی یک استثنا دارد و آن در زمانی است که یک ACE که ارث برده شده است دارای مجوز deny باشد. حال به همان اکانت بصورت Explicit یک مجوز Allow داده شود. در این حالت مجوز Allow بر deny غلبه دارد. در واقع میتوان گفت که همواره مجوز Explicit بر مجوز Implicit غلبه دارد.

مشاهده همه افزودن یک یادداشت
شما
دیدگاه خود را وارد کنید
رفتن به نوار ابزار