مجوزهای لینوکس (پرمیژنها)
مجوزهای فایل لینوکس، پایه و اساس مدل امنیتی سیستم را تشکیل میدهند. آنها مشخص میکنند چه کسی میتواند فایلها و دایرکتوریها را بخواند، بنویسد یا اجرا کند و تضمین میکنند که فقط کاربران یا فرآیندهای مجاز میتوانند به دادههای حساس دسترسی داشته باشند. میتوانید این مجوزها را با استفاده از دستور chmod تغییر دهید.
- chmod +rwx filename – مجوزهای خواندن، نوشتن و اجرا را اضافه میکند.
- chmod -rwx directoryname – همه مجوزها را حذف میکند.
- chmod +x filename – مجوزهای اجرایی را اعطا میکند.
- chmod -wx filename – مجوزهای نوشتن و اجرا را حذف میکند.
۱. سه مجوز اساسی
هر فایل یا دایرکتوری سه نوع مجوز دارد:
- خواندن (r): مشاهده محتوای فایل یا فهرست کردن فایلهای یک دایرکتوری.
- نوشتن (w): تغییر یک فایل یا اضافه/حذف فایلها در یک دایرکتوری.
- اجرا (x): اجرای یک فایل به عنوان یک برنامه/اسکریپت یا ورود به یک دایرکتوری.
| حروف | شرح |
|---|---|
| r | محتویات فایل را «میخواند». |
| w | «نوشتن» یا تغییر محتوای فایل. |
| x | فایل را «اجرا» میکند. این مجوز فقط در صورتی داده میشود که فایل یک برنامه باشد. |
۲. گروههای مالکیت و مجوز
مجوزها به سه دسته از کاربران اختصاص داده میشود:
- User (Owner): شخصی که فایل را ایجاد کرده است.
- Group: کاربرانی که به یک گروه مشترک تعلق دارند (مثلاً «توسعهدهندگان» یا «مدیران»).
- Others: هر کس دیگری که روی سیستم است.
| عملگر | تعریف |
|---|---|
| + | اضافه کردن مجوزها |
| - | حذف مجوزها |
| = | تنظیم مجوزها روی مقادیر مشخص شده |
توجه: همه این مجوزها بر اساس گروهشان در سه سطح مختلف اعطا میشوند.
گروههای مجوز در لینوکس چیستند؟
ابتدا، باید آن نه کاراکتر را به عنوان سه مجموعه سه کاراکتری در نظر بگیرید (به کادر پایین مراجعه کنید). هر یک از سه کاراکتر “rwx” به عملیات متفاوتی اشاره دارد که میتوانید روی فایل انجام دهید.
- مالکان (Owners): این مجوزها منحصراً برای افرادی که مالک فایلها یا دایرکتوریها هستند اعمال میشود.
- گروهها (Groups): مجوزها را میتوان به گروه خاصی از کاربران اختصاص داد که فقط افراد درون آن گروه خاص را تحت تأثیر قرار میدهد.
- همه کاربران (All Users): این مجوزها به طور جهانی برای همه کاربران سیستم اعمال میشود و بالاترین ریسک امنیتی را ایجاد میکند. اختصاص مجوزها به همه کاربران باید با احتیاط انجام شود تا از آسیبپذیریهای امنیتی احتمالی جلوگیری شود.
--- --- --- rwx rwx rwx user group other
| مرجع | کلاس | شرح |
|---|---|---|
| u | user | مجوزهای کاربر فقط برای مالک فایل یا دایرکتوری اعمال میشود و بر اقدامات سایر کاربران تأثیری نخواهد داشت. |
| g | group | مجوزهای گروه فقط برای گروهی که به فایل یا دایرکتوری اختصاص داده شده است اعمال میشود و بر عملکرد سایر کاربران تأثیری نخواهد داشت. |
| o | others | مجوزهای دیگر برای همه کاربران دیگر سیستم اعمال میشود، این گروه مجوزی است که میخواهید بیشتر از همه آنها را زیر نظر داشته باشید. |
| a | All three | هر سه (مالک، گروهها، دیگران) |
نحوه بررسی مجوز فایلها در لینوکس
بیایید به بررسی روشهای ممکن برای بررسی تمام جزئیات مورد نظر یک فایل، از جمله «مجوزهای فایل» بپردازیم.
۱. دستور ایمن
دستور اجرای آن در ترمینال به این صورت است. بیایید با یک مثال به شما نشان دهیم:
ورودی
ما NarX را به عنوان نام فایل پیشفرض در نظر میگیریم:
ls -l NarX.txt
خروجی
-rw-r--r-- 1 user group 46 Apr 14 16:37 NarX.txt
دستور بالا اطلاعات زیر را نشان میدهد:
- اولین کاراکتر = ‘-‘، به این معنی که یک فایل است ‘d’، به این معنی که یک دایرکتوری است.
- نه کاراکتر بعدی = (rw-r–r–) امنیت را نشان میدهند.
- ستون بعدی مالک فایل را نشان میدهد.
- ستون بعدی گروه مالک فایل را نشان میدهد. (که به این فایلها دسترسی ویژه دارد)
- ستون بعدی اندازه فایل را به بایت نشان میدهد.
- ستون بعدی تاریخ و زمان آخرین تغییر فایل را نشان میدهد.
۲. دستور namei
دستور namei برای بررسی مسیر فایل از طریق لایه مسیر پوشه استفاده میشود. دستور اجرای آن در ترمینال به این صورت است:
در اینجا، ما path را به صورت “root@anonymous-VirtualBox:~#” و نام فایل را hoops در نظر گرفتهایم.
namei -l /path/to/your/file
۳. دستور stat
برخلاف دستور ls -l، دستور stat برای مشخص کردن محل فایل استفاده میشود. در اینجا نحوه انجام این کار آمده است:
ما نام فایل را hoops در نظر میگیریم.
stat hoops
خروجی
File: example.txt Size: 2210 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 1288496 Links: 1 Access: 2024-11-18 10:50:56.000000000 +0000 Modify: 2024-11-18 10:50:56.000000000 +0000 Change: 2024-11-18 10:50:56.000000000 +0000 Birth: -
نحوه تغییر مجوزها در لینوکس
دستوری که برای تغییر مجوزهای امنیتی فایلها استفاده میکنید chmod نام دارد که مخفف change mode است، زیرا نه کاراکتر امنیتی در مجموع mode امنیتی فایل نامیده میشوند. میتوانید مجوزها را با استفاده از نمادگذاری نمادین یا نمادگذاری هشتتایی تغییر دهید.
۱. نمادگذاری نمادین (Symbolic Notation)
نمادگذاری نمادین به شما امکان میدهد مجوزهایی را برای کاربران خاص اضافه، حذف یا تنظیم کنید. بیایید این موضوع را با استفاده از مثالهای مختلف زیر درک کنیم:
مثال ۱: تغییر مجوز فایل در لینوکس
اگر میخواهید مجوز “اجرا” را به جهان (“دیگر”) برای فایل xyz.txt بدهید، با تایپ کردن شروع میکنید.
chmod o
حالا برای اینکه بگویید در حال «افزودن» مجوز هستید، باید علامت «+» را تایپ کنید.
chmod o+
سپس یک «x» تایپ میکنید تا بگویید که مجوز «اجرا» را اضافه میکنید.
chmod o+x
در نهایت، مشخص کنید که کدام فایل را تغییر میدهید.
chmod o+x xyz.txt
در تصویر زیر میتوانید تغییر را مشاهده کنید.
همچنین میتوانید چندین مجوز را به طور همزمان تغییر دهید. برای مثال، اگر میخواهید همه مجوزها را از همه افراد بگیرید، باید تایپ کنید.
chmod ugo-rwx xyz.txt
کد بالا تمام مجوزهای خواندن(r)، نوشتن(w) و اجرا(x) را از همه کاربران(u)، گروه(g) و دیگران(o) برای فایل xyz.txt لغو میکند که منجر به این میشود.
مثال ۲
این کد مجوزهای خواندن (r) و نوشتن (w) را به هر دو کاربر (u) و گروه (g) اضافه میکند و مجوز اجرا (x) را از دیگران (o) برای فایل abc.mp4 لغو میکند.
chmod ug+rw,o-x abc.mp4
چیزی شبیه به این:
chmod ug=rx,o+r abc.c
مجوزهای خواندن (r) و اجرا (x) را به هر دو کاربر (u) و گروه (g) اختصاص میدهد و مجوز خواندن را برای فایل abc.c به دیگران اضافه میکند.
ترکیبات بیشماری از مجوزهای فایل وجود دارد که میتوانید فراخوانی، لغو و اختصاص دهید. میتوانید برخی را در سیستم لینوکس خود امتحان کنید.
۲. مجوزهای هشتتایی (اکتال) در لینوکس
نمادگذاری هشتهشتی برای نمایش مجوزهای فایل در لینوکس با استفاده از سه گروه کاربری با نشان دادن ۳ رقم استفاده میشود، یعنی.
- user
- group
- other users
نحوهی نگاشت مجوزها به صورت زیر است:
- Read (r) = 4
- Write (w) = 2
- Execute (x) = 1
مجوزهای مربوط به مالک، گروه و سایرین با یک مقدار هشت رقمی سه رقمی نمایش داده میشوند. مجموع مجوزهای هر گروه، عدد مربوطه را میدهد.
مرجع
chmod o
حالا برای اینکه بگویید در حال «افزودن» مجوز هستید، باید علامت «+» را تایپ کنید.
chmod o+
سپس یک «x» تایپ میکنید تا بگویید که مجوز «اجرا» را اضافه میکنید.
chmod o+x
در نهایت، مشخص کنید که کدام فایل را تغییر میدهید.
chmod o+x xyz.txt
در تصویر زیر میتوانید تغییر را مشاهده کنید.
همچنین میتوانید چندین مجوز را به طور همزمان تغییر دهید. برای مثال، اگر میخواهید همه مجوزها را از همه افراد بگیرید، باید تایپ کنید.
chmod ugo-rwx xyz.txt
کد بالا تمام مجوزهای خواندن(r)، نوشتن(w) و اجرا(x) را از همه کاربران(u)، گروه(g) و دیگران(o) برای فایل xyz.txt لغو میکند که منجر به این میشود.
مثال
این کد مجوزهای خواندن (r) و نوشتن (w) را به هر دو کاربر (u) و گروه (g) اضافه میکند و مجوز اجرا (x) را از دیگران (o) برای فایل abc.mp4 لغو میکند.
chmod ug+rw,o-x abc.mp4
چیزی شبیه به این:
chmod ug=rx,o+r abc.c
مجوزهای خواندن (r) و اجرا (x) را به هر دو کاربر (u) و گروه (g) اختصاص میدهد و مجوز خواندن را برای فایل abc.c به دیگران اضافه میکند.
ترکیبهای بیشماری از مجوزهای فایل وجود دارد که میتوانید فراخوانی کنید، لغو کنید و اختصاص دهید. میتوانید برخی را در سیستم لینوکس خود امتحان کنید.
همچنین میتوانید از نمادهای هشتتایی مانند این استفاده کنید.
استفاده از جدول نمادگذاری اکتال به جای ‘r’، ‘w’ و ‘x’. هر نمادگذاری اکتال رقمی میتواند برای هر یک از گروههای ‘u’، ‘g’ یا ‘o’ استفاده شود.
مجوزهای امنیتی در لینوکس
ترکیب مجوزها r، w، x و – است. بیایید این را به طور خلاصه و به طور مفصل درک کنیم:
به عنوان مثال: “rw- r-x r–“
- “rw-“: سه کاراکتر اول `rw-`. این بدان معناست که صاحب فایل میتواند آن را “بخواند” (به محتوای آن نگاه کند) و “بنویسد” (محتوای آن را تغییر دهد). ما نمیتوانیم آن را اجرا کنیم زیرا این یک برنامه نیست بلکه یک فایل متنی است.
- “r-x”: مجموعه دوم از سه کاراکتر “r-x”. این بدان معناست که اعضای گروه فقط میتوانند فایلها را بخوانند و اجرا کنند.
- “r–“: سه کاراکتر آخر “r–” مجوزهای مجاز برای سایر کاربرانی که دارای شناسه کاربری در این سیستم لینوکس هستند را نشان میدهد. این بدان معناست که هر کسی در دنیای لینوکس ما میتواند محتوای فایلها را بخواند اما نمیتواند آنها را تغییر دهد یا اجرا کند.
مجوزهای ویژه در لینوکس
علاوه بر روشهای معمول، لینوکس انواع مجوزهای ویژهای را نیز برای کنترل پیچیدهتر فایلها ارائه میدهد.
۱. دستور setuid
مجوز SET User ID به کاربر اجازه میدهد برنامهها را با مجوزهای مالک آن اجرا کند. در زیر مثالی برای همین موضوع آمده است:
chmod u+s program
۲. دستور setgid
مجوز Set Group ID به فایلها اجازه میدهد تا تحت مجوزهای گروهی fule اجرا شوند (یا تضمین میکند که فایلهای ایجاد شده در یک دایرکتوری، گروه دایرکتوری را به ارث میبرند). دستور زیر برای همین کار است:
chmod g+s directoryname
۳. دستور sticky bit
این دستور به کاربر (فقط مالک) اجازه میدهد فایلهای درون دایرکتوری را حذف یا تغییر نام دهد (صرف نظر از مجوزهای سایر کاربران). در اینجا دستوری برای همین کار آمده است:
chmod +t directoryname
نحوه تنظیم مجوزهای فایل برای یک کاربر خاص
برای تنظیم مجوزها برای یک کاربر یا گروه خاص:
۱. با استفاده از chown
از chown برای تغییر مالکیت فایل استفاده کنید:
chown user:group file.txt
۲. با استفاده از chmod
از chmod برای تغییر مجوزها استفاده کنید:
chmod 755 file.txt
درباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش جفنگ استفاده میکند. درباره چگونگی پردازش دادههای دیدگاه خود بیشتر بدانید.







دیدگاهتان را بنویسید