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

رضا جمالی ۰۷ خرداد ۱۳۹۶ ۰ دیدگاه

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

لینوکس یک سیستم‌عامل چند کاربره است که مجوزها و حق مالکیت­ فایل­‌ها در آن بر اساس مفاهیم یونیکس (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) را نیز داشته باشن؛ در غیر این‌صورت هیچ معنایی نخواهند داشت.

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

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