X
تبلیغات
رایتل
آموزش لینوکس و معرفی نرم افزارهای کاربردی مرجع باز (open source)

آرشیو ماهانه مقالات

طبقه بندی موضوعی

برای عضویت در خبرنامه این وبلاگ نام کاربری خود در سیستم بلاگ اسکای را وارد کنید
نام کاربری
تعداد بازدیدکنندگان : 674660


Powered by BlogSky.com

پنج‌شنبه 15 مرداد‌ماه سال 1383
اصول اولیه سطوح دسترسی فایل در یونیکس و لینوکس

درمقایسه با سیستم عامل ویندوز و سایر سیستمهای عامل دیگر ، سیستمهای یونیکس و خانواده گنو/لینوکس در طراحی قوانین دسترسی به فایل از شکلی مستحکم تر و کارا تر بهره جسته اند و در این مقاله سعی میشود تا بطور خلاصه به بیان تفاوتها و نقاط قوت آن پرداخته شود .

اولین و برجسته ترین تفاوت در اینجاست که سیستمهای مبتنی بر یونیکس به معنای کاملا واقعی سیستمهائی چند کاربره هستند و برای هرفایل به تنهائی یا یک دایرکتوری میتوان سطوح دسترسی کاربران و گروه های کاربری تعریف کرد و هر کاربر بصورت پیش فرض دارای یک محدوده امن اطلاعاتی از فایلهای شخصی خانگی است.

 چیزی که در اینجا در باره کاربران و گروه های کاربری لازم به ذکر است این است که هر کاربر در سیستم یونیکس یک دایرکتوری شخصی به نام home‌ خواهد داشت که کلیه اختیارات دسترسی فایل در آن برای او مجاز بوده و میتواند در آن به ایجاد و حذف فایل یا عملیات دیگر بپردازد و هیچیک از کاربران یا گروههای دیگر بجز کاربر ریشه root‌ در حالت عادی و بدون اجازه او نخواهند توانست به اطلاعات او دسترسی یابند .(نکته مهم امنیتی)

در سیستمهای مبتنی بر یونیکس مثل لینوکس هر کاربری که مالک یا ایجادکننده یک فایل یا دایرکتوری باشد خواهد توانست با تعین سطوح دسترسی فایل یا دایرکتوری مربوطه برای دیگر کاربران یا گروههای کاربری آنان را از امکان خواندن و ایجاد تغییر و یا اجرای فایل اجرائی محروم یا بهره مند سازد .

بدیهی ایست که مجوزهای تعریف شده برای یک گروه کاربری بر روی تمام اعضای آن گروه اعمال شده و هر کاربر عضو آن گروه از تمام مزایا یا محدودیتهای موصوف بهره مند خواهد شد .

بطور کلی سه سطح دسترسی برای هر فایل یا دایرکتوری تعریف میشود که عبارتست از :

1 - Read permission (r) یا مجوز خواندن : مجوز خواندن محتوای یک فایل را به یک کاربر میدهد و برای دایرکتوریها امکان لیست کردن محتویات داخل دایرکتوری را برای کاربر فراهم میسازد.

 

2 - Write permission (w) یا مجوز ایجاد تغییرات : امکان ایجاد تغییرات در محتوای فایلها را به کاربر اهدا میکند . برای دایرکتوریها این گرینه امکان ایجاد فایل جدید در دایرکتوری یا حذف فایلهای موجود در آن را برای کاربر مهیا میسازد حتی اگر این کاربر یا گروه کاربری مالک یا ایجاد کننده اصلی فایل یا دایرکتوری نباشد.

 

3 - eXecute permission (x) یا مجوز اجرا : این مجوز در مورد فایلهای اجرائی امکان اجرای فایل را به یک کاربر میدهد و در مورد یک دایرکتوری این گزینه امکان ورود به داخل دایرکتوری را به کاربر یا گروه خاص میدهد . توجه داشته باشید که این گزینه را با گزینه Read‌ اشتباه نگیرید ، چون صرفا با داشتن مجوز  execute‌و بدون داشتن مجوز read  کاربر یا گروه میتواند وارد دایرکتوری خاصی شوند ولی امکان خواندن محتویات داخلی آن دایرکتوری بهیچ عنوان برایشان فراهم نخواهد بود .

 

همیشه ترکیبی از سطوح سه گانه مجوزهای فوق الذکر قابل استفاده است برای مثال شما در صورت مالکیت یک فایل میتوانید دسترسی به آنرا صرفا برای شخص خود تعریف و سایر کاربران و گروهها را ازدیدن یا اجرا و ایجاد تغییر در آن محدود نمائید.

نکته : یک کاربر حتی میتواند یک فایل یا دایرکتوری را که مالک و ایجاد کننده اصلی آن خود اوست برای کاربران دیگر قابل دسترسی و برای خودش غیر قابل دسترسی تعریف کند که به این صورت حتی خودش از کلیه مزایای فایل مربوطه محروم خواهد شد و در آینده هم قادر نخواهد بود تا با ایجاد تغییر مجددا به آن فایل یا دایرکتوری  دسترسی پیدا کند . در اینجاست که مدیر سیستم یا کاربر ریشه root‌ تنها کسی خواهد بود که بصورت پیش گزیده با داشتن کلیه مجوزهای لازم شامل خواندن و نوشتن و اجرا امکان تغییر مالکیت و سطوح دسترسی کاربران و گروهها را داشته و میتواند تغییرات لازم را در سیستم اعمال نماید .

ذکر این نکته بسیار مهم خالی از لطف نیست که حفظ و حراست از اطلاعات حیاتی سیستم مثل کلمه عبور کاربر ریشه یکی از مهمترین جنبه های امنیت سیستمهای مبتنی بر یونیکس میباشد .

 

بیائید تا باذکر یک مثال در مورد یک فایل و یک دایرکتوری به بررسی موضوع بپردازیم :

در این مثال فرض شده  که در مسیر جاری یک فایل به نام a_file‌ و یک دایرکتوری به نام a_directory‌ وجود دارد و با اجرای فرمان  ls –l  در خط فرمان  این اطلاعات بدست آمده است :

$ ls -l

total 1

-rw-r-----     1   mehrdad    users           0      Jul   8 14:11    a_file

drwxr-xr--    2   mohsen     users        1024    Jul   8 14:11    a_directory/

نتایج فرمان ls –l‌ را ازچپ به راست بررسی میکنیم :

ستون اول فرمان ls –l ‌ :

1 - ده کاراکتر اول نشان دهنده نوع فایل و سطوح دسترسی آن است و اولین کاراکتر که در مورد سطر اول  ( - )  و در مورد سطر دوم  ( d )  میباشد نشان میدهد که مورد موجود در سطر اول یک فایل معمولی و مورد موجود در سطر دوم یک دایرکتوری است .

البته انواع دیگری از فایل وجود دارد که با کاراکتری غیر از ( - )  مشخص میگردند و برای مطالعه بیشتر میتوانید به رفرانسهای موجود مراجعه کنید . نه کاراکتر بعدی نشان دهنده سطوح دسترسی تعریف شده میباشند و به ترتیب هر سه کاراکتر از چپ به راست شامل سطوح دسترسی متعلق به مالک owner‌ و سطوح دسترسی گروهها groups‌ و سطوح دسترسی برای سایرین  others‌ خواهد بود .

بعنوان نمونه سه کاراکتر مربوط به owner‌ و groups‌ و others‌ در مورد یک فایل موجود در مثال بالابصورت زیر تعریف شده است :

برای مالک r w -)      = owner)  یعنی اینکه امکان خواندن r  و نوشتن w  و اجراکردن  x   وجود دارد .

برای گروهها groups‌ =  ( r - - )  یعنی اینکه امکان خواندن فایل برای کاربران عضو کلیه گروههای کاربری موجود وجود دارد ولی هیچ کابری در گروههای موجود نمیتواند فایل را تغییر داده (یا حذف کند) و یا در صورت اجرائی بودن فایل آنرا اجرا نماید .

برای دیگران others  =  ( - - - )  سه کاراکتر dash به این معناست که سایر کاربران یعنی آنهائی که در هیچ گروه کاربری موجود تعریف نشده اند هیچیک از امکانات دسترسی موجود را نخواهند داشت . (نکته امنیتی مهم)

ستون دوم در فرمان ls -l‌ :

 شامل یک شماره لینک میباشد و از این شماره برای تشخیص لینک به یک فایل موجود در چند نقطه سیستم استفاده میشود . در مورد دایرکتوری ها این شماره معانی زیاد دیگری  دارد که در اینجا مجال پرداختن به همه آنها نخواهد بود .

ستون سوم در فرمان ls -l  :

این ستون نمایش دهنده نام مالک فایل و نام گروه مالک آن میباشد .

ستون چهارم در فرمان ls -l  :

این ستون نمایش دهنده اندازه و حجم فایل یا دایرکتوری و تاریخ و ساعت آخرین تغییرات اعمال شده بر آن و در نهایت ستون پنجم نتایج فرمان ls -l  شامل نام فایل یا دایرکتوری میباشد .

نکته : بدیهی است که (rwx ‌ ) به معنای تعریف حداکثر سطح دسترسی برای کاربر یا گروههای کاربری است و  ( - - - ) به معنای عدم امکان دسترسی به فایل یا دایرکتوری میباشد .

چند نکته مهم در مورد یونیکس و لینوکس :

  • اسامی فایلها در یونیکس و لینوکس مینوانند شامل هر نوع کاراتری حتی کاراکترهای ascii‌ بجز صفر 0  و /  باشند.
  • همانطوریکه میدانید در سیستمهای مبتنی بر یونیکس  بر خلاف ویندوز هر فایل حتما نیاز به داشتن پسوند سه حرفی مشخص کننده نوع فایل ندارد و قابلیتها و نوع فایلهای بدون پسوند  یا  extension  کاملا وابسته به محتویات فایل است و نه به پسوند آن . بدیهی است که کاراکتر ( . ) جداکننده نام فایل و پسوند آن در ویندوز در محیط یونیکس و گنو/لینوکس یک کاراکتر از کاراکترهای تشکیل دهنده نام فایل محسوب میگردد . و نکته ظریف اینجاست که در سیستمهای مبتنی بر یونیکس کلیه فایلها و دایرکتوریهائی که با کاراکتر  نقطه یا دات ( . ) آغاز گردند فایلها یا دایرکتوریهای پنهان hidden  محسوب میگردند .
  • توجه داشته باشید که چون برخی برنامه های گرافیکی مثلا برنامه openoffice  کماکان از پسوند نام فایل برای ذخیره سازی و تشخیص نوع فایل بهره میبرند گاهی لازم است پسوند فایلهای ایجاد شده توسط این برنامه های کاربردی حفظ گردد تا برنامه موصوف در شناسائی نوع فایل دچار مشکل نشود .

نتیجه گیری کلی

شما حتی بایک نگاه گذرا به مقاله حاضر در مورد سیستم تعین سطوح امنیتی فایل در یونیکس و لینوکس و مقایسه آن با سیستم عامل ویندوز در خواهید یافت که وقتی صحبت از امنیت سیستمهای لینوکس به میان می آید منظور چیست ؟؟. چرا که در یک سیستم مبتنی بر یونیکس حتی برای یک فایل به تنهائی امکان تعیین سطوح دسترسی و امنیتی وجود دارد ولی در سیستم عامل ویندوز حداکثر امکان موجود تعین این سطوح دسترسی در سیستم فایل ntfs‌ فقط برای دایرکتوریها  (و نه برای تک تک فایلها) میباشد .


عناوین آخرین مقالات و اخبار و یادداشت های وبلاگ کاوشگر لینوکس