لینوکس یک سیستمعامل چند کاربره است که مجوزها و حق مالکیت فایلها در آن بر اساس مفاهیم یونیکس (Unix) شکل گرفته است. برای فراگیری مهارتهای لینوکسی، یادگیری و فهم حق مالکیتها و مجوزها و چگونگی کارکرد آنها بسیار ضروری و پراهمیت است. اگر بخواهیم خیلی دقیق و جزئی به این مساله بپردازیم، با پیچیدگیهای فراوانی روبهرو میشویم که در این بحث نمیگنجد و فقط به بررسی جزئیاتی که به فهم و درک پایهای و نحوه کارکرد حق مالکیت ومجوزها کمک میکند، میپردازیم.
همانطور که در ابتدا گفته شد، لینوکس یک سیستمعامل چند کاربره است. قبل از صحبت راجع به حقوق مالکیت و مجوزها لازم است تا با مفاهیمی همانند کاربران و گروهها آشنا شویم؛ چرا که نهادهای مفهومدهنده به این حقوق هستند.
برای فهم بهتر و پایهای کاربران، میتوان گفت در لینوکس دو سطح برای کاربر تعریف شده است. کاربران سیستم و کاربران عادی. طبق روال کاربران سیستمی میتوانند فرآیندهای غیر تعاملی و غیر قابل دیدن را در سیستم انجام دهند؛ در حالیکه کاربران عادی نیاز به لاگین کردن طبق نام کاربری و رمز عبور دارند. وقتی کاربری برای اولین بار به سیستم وارد میشود، باید توجه داشته باشد که این شروع به تعامل و تغییراتی که در سیستم انجام میدهد برای تمامی کاربران آن سیستم نیز اتفاق میافتد.
یک راه ساده برای مشاهدهی کاربرانی که در سیستم شما شریک هستند، استفاده از کد (/etc/passwd) و مشاهدهی محتوای آن است. هر خط از محتویات نشان داده شده مربوط به اطلاعات یکی از کاربران است.
علاوهبر دو گروه ذکر شده در بالا، کاربرانی بهعنوان کاربر (root) وجود دارند که حق دوبارهنویسی بر روی فایلها و مجوزها را دارد. بهبیان بهتر میتوان گفت که سوپر یوزرها حق دسترسی به هرچیزی بر روی سرور را دارند. این نکته را باید در نظر گرفت که با توجه به دسترسی آزاد و توانایی ایجاد تغییرات این کاربر بر روی سرور، اطلاعات و امنیت آن میبایست حفظ شود و در دسترس همگان قرار نگیرد.
تجمعی از کاربران است که میتواند از تعداد صفر به بالا عضو داشته باشد. یک کاربر همواره عضو یک گروه پیشفرض است اما در عین حال میتواند عضو گروههای دیگر بر روی سرور نیز باشد. یکی از راههای ساده برای مشاهدهی گروهها و کاربران هر گروه، استفاده از دستور (/etc/group) است.
در سیستم عامللینوکس، هر فایلی متعلق به یک کاربر یا گروه است که طبق مجوزهای آن اجازه دسترسی به سیستم خواهد داشت.
یکی از بهترین راهها برای مشاهدهی دسترسیها و مجوزهای فایل، استفاده از (ls) است. اگر میخواهید مجوز تمام فایلهای سیستم را مشاهده کنید، میتوانید از دستور (ls –l) استفاده کنید. اگر شما در دایرکتوری هستید که هیچ فایلی در آن نیست، میتوانید از دستور (ls -l /etc) برای مشاهدهی تمام فایلهای (etc) استفاده کنید.
برای درک بهتر نتایج، لازم است بدانید که دستهبندی کلاسها به صورت زیر است:
در سیستمعامل لینوکس دو نوع فایل داریم: فایلهای عادی و خاص (normal & Special). میتوان گفت نوع فایل را کاراکتر اول مود آن فایل مشخص میکند. فایلهای عادی را میتوان توسط (-) در فیلد نوع آنها مشخص یا شناسایی کرد؛ فایلهای نرمال یا عادی معمولاً شامل فایلهای ساده حاوی دادههای اطلاعاتی هستند. فایلهای خاص (Special) را میتوان از نداشتن خط ربط (ـ) شناسایی کرد. مثلاً در قسمت نوع فایل از یک واژه بهتنهایی استفاده میگردد. این فایلها در سیستمعامل به گونهی دیگری معنا و اجرا میشوند. واژهای که در آن قسمت جای میگیرد، بیانگر نوع فایل است. برای مثال، دایرکتوری یکی از رایجترین انواع فایلهای special است که با کاراکتر (d) نشان داده میشود. در ادامهی مبحث برای درک بهتر، نمونهای نشان داده شده است.
از دیاگرام بالا متوجه شدیم که ستون مود شامل نوع فایل، نوع کاربر یا گروه و همچنین بیانگر نوع دسترسی آن میشود. حال بهتر است بدانیم که هر کاربری متعلق به چه کلاسی از سطح دسترسی است:
User: کاربری که مالک حقیقی فایل است، متعلق به این کلاس است.
Group: زمانی که کاربر عضوی از یک گروه باشد، به این کلاس تعلق پیدا میکند.
Other: هر کاربری که در دستهی (User) یا (Group) جای نگیرد، متعلق به این کلاس است.
علامت (ـ) به جای هرکدام از این کاراکترها بیاید، بهاین معناست که کلاس مربوطه حق دسترسی در حوزهی مشخص شده را ندارد.
برای مثال اگر (r—) نمایش داده شود، بهاین معنی است که کاربر عضو این گروه فقط و فقط حق خواندن دارد.
حال که فهمیدیم هر فایلی چه دسترسیهایی میتواند داشته باشد، بهتر است با معنای هر کدام از آنها نیز آشنا شویم. ما هرکدام را به طور جداگانه توضیح میدهیم اما به یاد داشته باشید که هر کدام از این حقوق در مجموع با همدیگر معنا پذیر هستند.
برای فایلهای معمولی است که اجازه میدهد به کاربر تا از محتویات آن ها با خبر گردند. در دایرکتوریها حق (read) به کاربر اجازه میدهد تا نام فایلها را در دایرکتوری ببینند.
در فایلهای عادی این اجازه را به کاربر میدهد که آن را تغییر دهد و یا حذف کند. در دایرکتوریها حق (write) این اجازه را به کاربر میدهد تا محتویات دایرکتوری را که حق (read) برآن دارد، ویرایش (ساخت، حذف و یا تغییر نام) کند و یا کل دایرکتوری را حذف کند.
در فایلهای عادی این حق دسترسی به کاربر اجازه میدهد تا فایل مربوطه را بتواند اجرا کند (لازم به یادآوری است که کاربر باید حق r را داشته باشد). حق (execute) مربوط به فایلهایی است که قابل اجرا باشند و دستورات (Shell) بتوانند آنها را اجرا کنند. در دایرکتوریها نیز این اجازه به کاربران داده میشود تا بتوانند به فایلهای آن دسترسی داشته باشند و بتوانند در آن فایلها تغییرات ایجاد کنند.
ما آموختیم چگونه مود فایل و مجوزهای آن را ببینیم و معنای آنها را بفهمیم. در ادامه به بررسی چند نمونه از این مجوزها و شرح معنای آنها میپردازیم:
همانطور که ملاحظه کردید، مالک فایل نسبت به دو کلاس دیگر همواره دارای بیشترین حق دسترسی به فایل است. نکته حائز اهمیت دیگر این است که حق دسترسیهای (e) و (w) در صورتی معنادار است که حق (r) را نیز داشته باشن؛ در غیر اینصورت هیچ معنایی نخواهند داشت.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.