مجوزها و حقوق دسترسی در لینوکس

الناز منشاری ۰۷ خرداد ۱۳۹۶ ۰ دیدگاه

حقوق مالکیت و مجوزها در لینوکس

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

در رابطه با کاربران User

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

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

یک راه ساده برای مشاهده­‌ی کاربرانی که در سیستم شما شریک هستند استفاده از کد /etc/passwd و مشاهده­‌ی محتوای آن می‌­باشد. هر خط از محتویات نشان داده شده مربوط به اطلاعات یکی از کاربران می­‌باشد.

کاربران Superuser

علاوه بر دو گروه ذکر شده در بالا کاربرانی بعنوان کاربر root وجود دارند که حق دوباره نویسی بر روی فایل­‌ها و مجوزها را دارد. به بیان بهتر می‌توان گفت که سوپر یوزرها حق دسترسی به هرچیزی بر روی سرور را دارند. این نکته را باید در نظر گرفت که با توجه به دسترسی آزاد و توانایی ایجاد تغییرات این کاربر بر روی سرور، اطلاعات و امنیت آن می­‌با­یست حفظ شود و در دسترس همگان قرار نگیرد.

گروه­‌ها Groups

تجمعی از کاربران است که می­تواند از تعداد صفر به بالا عضو داشته باشد. یک کاربر همواره عضو یک گروه پیش فرض است اما در عین حال می­تواند عضو گروه­­‌های دیگر بر روی سرور نیز باشد. یکی از راه­‌های ساده برای مشاهده­‌ی گروه­‌ها و کاربران هر گروه استفاده از دستور /etc/group می­باشد.

مشاهده­‌ی حقوق دسترسی و مجوزها

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

یکی از بهترین راه­‌ها برای مشاهده دسترسی­‌ها و مجوزهای فایل استفاده از ls می­باشد. اگر می­خواهید مجوز تمام فایل­‌های سیستم را مشاهده کنید میتوانید از دستور ls –l استفاده نمائید. اگر شما در دایرکتوری هستید که هیچ فایلی در آن نیست میتوانید از دستور ls -l /etc برای مشاهده­‌ی تمام فایل­‌های etc استفاده کنید.

برای درک بهتر نتایج لازم است بدانید که دسته بندی کلاس‌ها به صورت زیر است:

نوع فایل:

در سیستم عامل لینوکس دو نوع فایل داریم : فایل‌های عادی و خاص(normal & Special). می‌توان گفت نوع فایل را کاراکتر اول مود آن فایل مشخص می‌نماید. فایل‌های عادی را می‌توان توسط (-) در فیلد نوع آن‌ها مشخص ویا شناسایی کرد؛ فایل‌های نرمال یا عادی معمولا شامل فایل‌های ساده حاوی داده‌های اطلاعاتی هستند. فایل‌های خاص (Special) را میتوان از نداشتن خط ربط (ـ) شناسایی کرد مثلا در قسمت نوع فایل از یک واژه به تنهایی استفاده میگردد. این فایل‌ها در سیستم عامل به گونه دیگری معنا و اجرا می شود. واژه‌ای که در آن قسمت جای می‌گیرد بیانگر نوع فایل می باشد. برای مثال دایرکتوری یکی از رایج ترین انواع فایل های special است که با کاراکتر  d نشان داده می‌شود.در ادامه مبحث برای درک بهتر،به صورت نمونه نشان داده شده است.

مجوز‌های کلاس:

از دیاگرام بالا متوجه شدیم که ستون مود شامل نوع فایل، نوع کاربر یا گروه و همچنین بیانگر نوع دسترسی آن می‌شود. حال بهتر است بدانیم که هر کاربری متعلق به چه کلاسی از سطح دسترسی می‌باشد:

User: کاربری که مالک حقیقی فایل است متعلق به این کلاس می‌باشد.

Group: زمانی که کاربر عضوی از یک گروه باشد به این کلاس تعلق پیدا می‌کند.

Other: هر کاربری که در دسته‌‌ی User یا Group جای نگیرد متعلق به این کلاس است.

علامت (ـ) به جای هرکدام از این کاراکترها بیاید به این معناست که  کلاس مربوطه حق دسترسی در حوزه مشخص شده را ندارد.

برای مثال اگر r— نمایش داده شود به این معنی است که کاربر عضو این گروه فقط و فقط حق خواندن دارد.

درک مفاهیم خواند Read ، نوشتن Write و اجرا کردن Execute

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

خواندن Read

برای فایل‌های معمولی است که اجازه می‌دهد به کاربر تا از محتویات آن ها با خبر گردند. در دایرکتوری‌ها حق read به کاربر اجازه می‌دهد تا نام فایل‌ها را در دایرکتوری ببینند.

نوشتنWrite

در فایل‌های عادی این اجازه را به کاربر می دهد که آن را تغییر دهد و یا حذف کند. در دایرکتوری‌ها حق write این اجازه را به کاربر می‌دهد تا محتویات دایرکتوری را که حق read برآن دارد، ویرایش (ساخت، حذف و یا تغییر نام) کند و یا کل دایرکتوری را حذف نماید.

اجرا کردنExecute

در فایل‌های عادی این حق دسترسی به کاربر اجازه می‌دهد تا فایل مربوطه را بتواند اجرا کند (لازم به یادآوری است که کاربر باید حق r را داشته باشد).حق execute مربوط به فایل‌هایی است که قابل اجرا باشند و دستورات Shell بتوانند آن‌ها را اجرا کنند. در دایرکتوری‌ها نیز این اجازه به کاربران داده می‌شود تا بتوانند به فایل‌ها‌ی آن دسترسی داشته باشند و بتوانند در آن فایل‌ها تغییرات ایجاد کنند.

نمونه‌هایی از مجوزها:

ما آموختیم چگونه مود فایل و مجوزهای آن را ببینیم و معنای آن ها را بفهمیم. در ادامه به بررسی چند نمونه از این مجوزها و شرح معنای آن ها می پردازیم:

  • – r w – – – – – – -: بیانگر فایلی است که فقط توسط مالک آن قابل دسترسی است.
  • -r w x r – x r – x : بیانگر فایلی است که توسط همه قابل اجرا است.
  •  – r w – r w – r w – : بیانگر فایلی است که همه می توانند بر روی آن عملیات w را انجام دهند.
  • d r w x t – x r – x : بیانگر دایرکتوری است که توسط همه در سیستم قابل خواندن و دسترسی است.
  • d r w x r – w x – – – : یک فایل که توسط گروه و کاربر مالک آن قابل تغییر است.
  • d r w x r – x – – – : دایرکتوری است که توسط گروه مربوطه قابل دسترسی است.

همانطور که ملاحظه کردید مالک فایل نسبت به دو کلاس دیگر همواره دارای بیشترین حق دسترسی به فایل است. نکته حائز اهمیت دیگر این است که حق دسترسی های e و w در صورتی معنا دار است که حق r را نیز داشته باشند در غیر اینصورت هیچ معنایی نخواهند داشت.

فناوران شبکه سینداد (آهنگ نوآوری)

سینداد یعنی هدیه‌ی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.