کنترل دسترسی مکانیزمی جهت اطمینان از دسترسی انحصاری کاربر مجاز [۱] به اشیائ مختلف است. منظور از شیئ در سیستم عامل هرگونه برنامه، فایل، دایرکتوری و … میباشد. همچنین کاربر در این تعریف عبارت است ازuser یا برنامه ای که (با استفاده از یک user مشخص) از یک شیئ استفاده میکند.
۱٫ Discretionary Access Control [2] :
این روش در اغلب سیستم عاملها از جمله لینوکس به عنوان پیش فرض به کار میرود. ایده آن مبتنی بر سه اصل است:
· هویت[۳] کاربر
· مالکیت[۴] یک شیئ
· اجازه[۵] دسترسی داده شده به کاربر
سیستم دارای سه نوع کاربر است:
· مالک: کاربری که مالک شیئ است.
· گروه: مجموعه کاربران همگروه با مالک شیئ.
· دیگران: مابقی کاربران که در دو دسته قبل قرار نمیگیرند.
سه نوع اجازه در این روش مرسوم است، که توسط مالک شیئ به دیگران داده میشود:
· خواندن: خواندن فایل یا لیست کردن محتویات دایرکتوری
· نوشتن: نوشتن در فایل یا اضافه کردن یک فایل به دایرکتوری
· اجرا: اجرای یک فایل یا جستجو در یک دایرکتوری
بنا به پیش فرض دو سطح دسترسی در سیستم عامل وجود دارد: کاربر عادی و su [6] . اجازه مربوط به هر شیئ توسط مالک آن قابل تنظیم است، و su مالک کل سیستم بوده و میتواند کلیه تنظیمات کاربر عادی را تغییر دهد. به عبارت دیگر، su دارای اجازه خواندن، نوشتن و اجرا روی کلیه فایلها، دایرکتوریها و برنامه هاست.
بنا بر این در این روش معیار تصمیم گیری سیستم عامل درباره حق دسترسی، بر اساس مالکیت ها میباشد، و Role کاربر یا کاربرد برنامه مربوطه در آن دخیل نیست. بزرگترین نقطه ضعف این روش زیر سئوال رفتن امنیت کل سیستم در صورت از دست رفتن su است. این مساله در سیستم عاملهای حساس به خصوص در محصولات امنیتی بسیار حیاتی است، و لذا نباید امنیت کل سیستم را وابسته به su نمود.
از طرف دیگر هر برنامه کاربردی کلیه حقوق دسترسی کاربر اجراکننده خود را به ارث میبرد و این نقطه شروع بسیاری از حملات علیه سیستم است.
۲٫ Mandatory Access Control [7] :
در سیستم عاملهای با حساسیت امنیتی بالا وجود بسیاری از حق دسترسی ها حتی برای su اصولا لزومی ندارد. این حقوق دسترسی تنها هنگام ساختن سیستم مورد نیاز است، و وقتی سیستم به مشتری تحویل شد، حتی کاربر su هم نباید به آنها دسترسی داشته باشد.
در این روش کلیه اجزای سیستم به دو دسته subject و object تقسیم میشود. منظور از Subject کاربر یا برنامه ایست که میخواهد به object ای دسترسی داشته باشد. وقتی مالک سیستم سیاست های مربوط به دسترسی به هر object را اعمال کرد، این سیاست ها غیر قابل تغییر خواهند بود، حتی su یا root هم قادر به تغییر آن نخواهد بود. یکی از نتایج این ایده از بین بردن تلویحی کاربر root است.