معرفی مجوزها و سطوح دسترسی فایل در لینوکس
لینوکس براساس تعریف، سیستمعاملی چندکاربره است که براساس مفاهیم مالکیت و مجوزهای یونیکس، برای محافظت از فایلهای سطح سیستم طراحی شده است. برای مدیریت ایمن سرور ابری، باید نحوه کار این سیستم مالکیت و مجوزها را کاملاً درک کنید. اگرچه پیچیدگیهای زیادی برای درک کامل این موضوعات وجود دارد، مقاله حاضر به شما برای ورود به این مبحث کمک و شما را با تعاریف و مفاهیم اولیه مجوزهای لینوکس آشنا خواهد کرد.
چندکاربرهبودن سیستمعامل یعنی چه؟
برای ورود به بحث مجوزهای لینوکس، باید مفاهیم مهم مرتبط با کاربران لینوکس و گروههای آن را بدانید. اجازه دهید موضوع را با مفهوم کاربران لینوکس شروع کنیم. همانطورکه در مقدمه گفتیم، لینوکس سیستمعاملی چندکاربره است و در آن، دو نوع کاربر وجود دارد: یکی کاربران سیستمی و دیگری کاربران عادی. کاربران سیستمی برای انجام فرایندهای غیرتعاملی یا فرایندهایی که در پسزمینه اجرا میشوند، بهکار میروند. درمقابل، کاربران عادی برای فرایندهای تعاملی و ورود به سیستم استفاده میشوند.
هنگامیکه اولینبار سیستم لینوکس را راهاندازی میکنید و واردش میشوید، متوجه خواهید شد که این سیستم با بسیاری از کاربران سیستمی شروع شده که سیستمعامل قبلاً برای ایجاد سرویسهایی به آنها وابسته بوده است. این کاملاً طبیعی است! شما میتوانید با مشاهده محتویات فایل /etc/passwd با تمامی کاربران سیستمعامل آشنا شوید. در این فایل، هر خط حاوی اطلاعات یک کاربر است که با نام کاربری آن شروع میشود (یعنی همان نامی که قبل از اولین «:» میآید). شما میتوانید محتویات فایل passwd را با استفاده از فرمان cat چاپ کنید:
cat /etc/passwd
خروجی این دستور چیزی شبیه به این خواهد بود:
Output … sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh
سوپریوزر (Superuser) در لینوکس
علاوهبر دو نوع کاربری قبلی، یک نوع کاربر دیگر با نام Superuser یا Root user وجود دارد که هرگونه محدودیت ایجادشده برای مالکیت فایلها و مجوزها را میتواند لغو کند. بهعبارتدیگر، کاربر Superuser این امکان را دارد که هرچیزی را در سرور خود تغییر دهد. از این کاربر برای ایجاد تغییرات در سطح سیستم استفاده میشود.
همچنین، کاربر Superuser میتواند پیکربندی سایر حسابهای کاربری در لینوکس را انجام دهد. اگر قبلاً با لینوکس کار کرده باشید، احتمالاً اصطلاح SUDO را شنیدهاید. این اصطلاح مخفف عبارت Super User DO است و دقیقاً به همین موضوع اشاره میکند. بنابراین، اگر نیاز دارید کارهای مدیریت سرور را با استفاده از کاربری بهجز کاربر Root انجام دهید، یکی از بهترین کارها این است که به او دسترسی SUDO بدهید.
گروهها در لینوکس
گروه به مجموعهای از کاربران گفته میشود. هر کاربر بهصورت پیشفرض به یک گروه تعلق دارد. کاربر میتواند عضو دیگر گروههای قرارگرفته روی سرور نیز باشد. همانطورکه با استفاده از فایل /etc/passwd به تمامی کاربران میتوان دست یافت، تمامی گروهها را نیز با استفاده از فایل /etc/group میتوان دید. حالا که با کاربران و گروهها آشنا شدید، بهتر است درباره مالکیت فایلها و مجوزها نیز اطلاعاتی بهدست آورید.
مشاهده مالکیتها و مجوزها
در لینوکس، هریک از فایلها متعلق به یک کاربر و یک گروه واحد است و البته مجوزهای دسترسی مخصوص به خود را دارد. درادامه، درباره نحوه مشاهده مالکیت و این مجوزها بیشتر توضیح خواهیم داد. رایجترین راه برای مشاهده مجوزهای فایل استفاده از دستور ls با آپشن -l است. این Option به شما امکان میدهد تا جزئیات بیشتری درباره فایل مشاهده کنید. قالب استفاده از این دستور بهصورت ls -l filename است. همچنین، اگر میخواهید مجوزهای مربوط به همه فایلهای موجود در دایرکتوری جاری خود را مشاهده کنید، کافی است این دستور را بدون آرگومان filename اجرا کنید. به کد زیر دقت کنید:
ls -l
نکته: اگر دایرکتوری جاری شما خالی است و هنوز فایلی برای مشاهده ایجاد نکردهاید، با استفاده از دستور ls -l /etc میتوانید محتویات داخل دایرکتوری /etc را فهرست کنید.
در تصویر زیر، نمونه خروجی فرمان ls -l نشان داده شده است. عناوین هر ستون نشاندهنده یکی از مشخصات فایلهایی است که فهرست آن به شما نشان داده شده است.
همانطورکه در این تصویر نیز مشاهده میشود، مقابل هر فایل اطلاعاتی درج شده است؛ ازجمله کاربری که فایل به آن تعلق دارد، تاریخ آخرین ویرایش، اندازه فایل و Mode آن. اجازه دهید کمی بیشتر درباره ستون Mode و مفاهیم مربوط به خطتیرههای قرارگرفته در آن توضیح دهیم.
توضیحاتی درباره Mode فایل
برای درک بهتر معنای همه گروهبندیها و نیز حروف، درادامه تفکیکی از متادیتاهای قرارگرفته در Mode اولین فایل از تصویر بالا ارائه شده است:
۱. نوع فایل (File Type)
دو نوع فایل در لینوکس وجود دارد: یکی فایلهای معمولی (Normal) و دیگری فایلهای ویژه (Special). نوع فایل با استفاده از اولین کاراکتر قسمت Mode نشان داده میشود. فایلهای عادی با یک کاراکتر Dash (-) در ابتدای آنها نشان داده میشوند. این نوع از فایلها میتوانند حاوی داده یا هرچیز دیگری باشند. نام Normal یا Regular روی این نوع از فایلها بدیندلیل گذاشته شده است که بتوان بین آنها و فایلهای ویژه تمایز ایجاد کرد.
اگر کاراکتر دیگری (بهجز خطتیره) در ابتدای File Type قرار داشته باشد، فایل از نوع ویژه است. ویژگی اصلی این نوع فایلها آن است که نحوه مدیریتشان بهواسطه سیستمعامل با فایلهای معمولی متفاوت است. همچنین، فراموش نکنید حرفی که در ابتدای File Type قرار میگیرد، نشاندهنده نوع فایل ویژه است. بهعنوان مثال، اگر حرف d در ابتدای File Type قرار داشته باشد، نشاندهنده دایرکتوریبودن آن است.
۲. مجوزها
همانطورکه در تصویر زیر مشاهده میکنید، بعد از نوع فایل (File Type)، سه گروه قرار گرفته است که هریک از آنها نیز حاوی ۳ حرف هستند. هرکدام از این گروهها یک مفهوم مهم از کلاسبندی مجوز دسترسی به فایل را مشخص میکند: کاربر (User) و گروه (Group) و Other. ترتیب قرارگیری این کلاسها در تمامی سیستمهای لینوکس و انواع توزیعها ثابت است. کاربرد این سه کلاس مجوزی ازاینقرار است:
- کاربر: این کلاس مشخص میکند که فایل به کدام کاربر تعلق دارد.
- گروه: اعضای گروه فایل با استفاده از این کلاس مشخص خواهند شد. ارائه مجوزهای گروهی روشی مناسب برای اختصاص مجوز دسترسی یک فایل به چند کاربر است. با استفاده از این روش، دیگر نیازی ندارید مجوز گروه را بهصورت مجزا به کاربران مختلف بدهید.
- Other: هر کاربری که بخشی از کلاس کاربر یا گروه نیست، در این کلاس جای دارد.
حال تکلیف ۳ حرفی که در هریک از این کلاسها قرار گرفته، چیست؟ این سه حرف مجوزهای مربوط به خواندن و نوشتن و اجرا را بهصورت زیر مشخص میکند:
نماد |
مفهوم | موقعیت |
r |
خواندن | حرف اول |
w | نوشتن |
حرف دوم |
x | اجرا |
حرف سوم |
درصورتیکه بهجای هریک از این کاراکترها یک خطتیره قرار گیرد، یعنی مجوز مرتبط با آن کلاس دردسترس نیست. بهعنوان مثال، اگر حرف دوم بهجای w، خطتیره باشد، یعنی کاربر مجوز نوشتن روی فایل را ندارد؛ بنابراین، فقط امکان خواندن فایل برای او وجود دارد.
نکات بیشتر درباره مجوزهای خواندن و نوشتن و اجرا
حالا شما میدانید چگونه مجوزهای فایل را بخوانید. واضح است که هریک از این مجوزها مشخص میکنند که کاربر میتواند چه نوع کاری را روی فایل انجام دهد. همچنین، فراموش نکنید که این مجوزها اغلب در ترکیب با یکدیگر استفاده میشوند تا امکان دسترسی مفید به فایلها و دایرکتوریها فراهم شود.
۱. مجوز خواندن
در فایلهای معمولی، این مجوز به کاربر امکان میدهد تا محتویات فایل را مشاهده کند. درباره دایرکتوریها نیز این مجوز به کاربر امکان خواهد داد تا نام فایلهای قرارگرفته در دایرکتوری را ببیند.
۲. مجوز نوشتن
در فایلهای معمولی، این مجوز به کاربر امکان خواهد داد تا فایل را تغییر دهد یا آن را حذف کند. درباره دایرکتوریها نیز مجوز نوشتن به کاربر امکان خواهد داد تا دایرکتوری را حذف کند و با ایجاد فایل یا تغییر و حذف فایلهای موجود، تغییراتی در آن اعمال کند.
۳. مجوز اجرا
در فایلهای معمولی، این مجوز به کاربر امکان خواهد داد تا فایل را اجرا کند. برای انجام این کار، کاربر باید مجوز خواندن فایل را نیز داشته باشد؛ بنابراین، برای اینکه کاربر بتواند فایل را اجرا کند، این مجوز باید ازقبل روی برنامهها و اسکریپتهای SHELL تنظیم شده باشد. همچنین، مجوز اجرا در یک دایرکتوری باعث خواهد شد تا کاربر به متادیتاهای مربوط به فایلهایی دسترسی پیدا کند که در دایرکتوری قرار گرفته است (مثلاً اطلاعاتی که در ls -l فهرست شده است).
۴. چند مثال درباره Mode و مجوزها
حالا که با مفاهیم کلی مربوط به Mode و مجوزهای مربوط به فایلها در لینوکس آشنا شدید، درادامه چند مثال را ذکر میکنیم تا با این موضوعات بیشتر آشنا شوید.
Mode |
مفهوم |
-rw——- |
فایلی که فقط ازطریق مالک آن دردسترس قرار دارد. |
-rwxr-xr-x |
فایلی که هر کاربر میتواند در سیستم اجرا کند. |
-rw-rw-rw |
فایلی که هر کاربر میتواند در آن تغییر ایجاد کند. |
drwxr-xr-x |
دایرکتوریای که هر کاربر در سیستم میتواند آن را بخواند و به آن دسترسی داشته باشد. |
drwxrwx— |
دایرکتوریای که فقط گروهش به آن دسترسی دارد. |
طبیعی است که Owner فایل معمولاً درمقایسهبا دو کلاس دیگر، از بیشترین مجوزها برخوردار است. بهعبارتدیگر، گروهها و کلاسهای دیگر فقط زیرمجموعهای از مجوزهای مالک فایل را دارند. این مجوزها نهایتاً میتوانند معادل با مجوزهایی باشند که Owner فایل دارد؛ بنابراین، نمیتوانید حالتی را بیابید که در آن یک گروه، مجوزی بیشتر از مالک فایل داشته باشد.
همچنین، این نکته را فراموش نکنید که اگرچه میتوان مجوزها را با حالات متعددی با یکدیگر ترکیب کرد، فقط برخی از این حالات معنا دارند. بهعنوان مثال، دسترسی نوشتن یا اجرا همیشه با دسترسی خواندن همراه است. دلیل آن هم واضح است: چگونه کاربر میخواهد فایل را تغییر دهد، درصورتیکه نمیتواند آن را بخواند؟
جمعبندی
برای مدیریت ایمن سرور، باید با سیستمعامل لینوکس نیز کاملاً آشنا باشید. یکی از اولین قدمهایِ پیش روی شما این است که با سیستم مالکیت و مجوزهای مربوط به لینوکس آشنا شوید. در مطلب حاضر، این مفاهیم توضیح داده و مثالهایی نیز آورده شده است تا درک مجوزها و Mode فایلها و دایرکتوریها برایتان سادهتر شود.
سؤالات متداول
۱. چندکاربرهبودن لینوکس یعنی چه؟
در لینوکس، کاربران به دو دسته کلی کاربران عادی و سیستمی تقسیمبندی میشوند و براساس همین سیستم، قابلیتها و تواناییهایی به آنها اختصاص مییابد.
۲. سوپریوزر یعنی چه؟
سوپریوزرها کاربرانی با دسترسی نامحدود هستند که امکان هرگونه تغییر در مالکیت و مجوزهای دسترسی به فایلهای مختلف در لینوکس برایشان فراهم است.
۳. مجوز فایل و دایرکتوری چند نوع است؟
بهطورکلی، هر فایل یا دایرکتوری شامل سه نوع مجوز خواندن و ایجاد تغییر و اجراست. این مجوزها نوع عملیات روی فایلها را براساس نوع کاربر تعریف میکنند.
۴. فایل تایپ چیست؟
دو نوع فایل در لینوکس وجود دارد: یکی فایلهای معمولی (Normal یا Regular) و دیگری فایلهای ویژه (Special). فایل تایپ (File Type) را با استفاده از حرف اول Mode فایل میتوان شناسایی کرد.
دیدگاهتان را بنویسید