لینوکس و ترمینالمتوسط۸ دقیقه مطالعهGeneric Linux + Bash

مجوزهای فایل‌سیستم

خواندن مجوزهای فایل‌ها در خروجی ls -l، محاسبهٔ مجوزهای عددی و کاربرد chmod و chown و sudo.

آنچه در این درس می‌آموزید

  • ساختار مجوزهای صاحب/گروه/دیگران را در خروجی ls -l بخوانید
  • مجوزها را در حالت نمادی و عددی با chmod تغییر دهید
  • نقش sudo و فرمان chown در مدیریت مالکیت را بدانید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

لینوکس از روز اول برای چند کاربر طراحی شده است؛ سروری که ده نفر به آن وصل‌اند باید بتواند مجوز خواندن گزارش‌ها را فقط به هم‌تیمی‌ها و مجوز ویرایش را فقط به مالک پروژه بدهد. همین مدل مجوزهاست که مشخص می‌کند کدام اسکریپت اجرا می‌شود، کدام فایل تنظیمات برای دیگران پنهان می‌ماند و چرا گاهی پیام Permission denied می‌گیرید.

ریزِ خروجی ls -l

در درس قبل خروجی ls -l را دیدیم. سطر اول آن کلید فهم مجوزهاست:

bash
ls -l deploy.sh

نمونهٔ خروجی:

text
-rwxr-xr-x 1 sara developers 120 Oct 30 10:00 deploy.sh

ده کاراکتر اول سه بخش دارند:

  1. کاراکتر اول — نوع فایل: - معمولی، d پوشه، l پیوند نمادین.
  2. سه کاراکتر بعدی — مجوز «صاحب» (Owner) فایل: rwx یعنی خواندن، نوشتن، اجرا.
  3. شش کاراکتر بعدی — به‌ترتیب مجوز «گروه» (Group) و مجوز «دیگران» (Others): اینجا r-x و r-x.

هر مجوز یک حرف دارد: r (read) خواندن، w (write) نوشتن و x (execute) اجرا. جایی که مجوزی نیست، خط تیره می‌نشیند. پس rwxr-x--- یعنی صاحب همه‌کارهاست، گروه فقط می‌خواند و اجرا می‌کند و دیگران هیچ.

برای پوشه معنی حرف‌ها کمی فرق می‌کند: r اجازهٔ فهرست‌کردن محتوا، w اجازهٔ ساختن و حذف فایل داخل پوشه و x اجازهٔ ورود به پوشه با cd.

ستون‌های بعدی هم مهم‌اند: پس از عدد پیوندها، نام صاحب (sara) و نام گروه (developers) می‌آید که در درس بعدی می‌بینید چگونه قابل‌تغییرند.

حالت عددی: ۷۵۵ یعنی چه؟

به هر مجوز یک عدد نسبت داده‌اند: r برابر ۴، w برابر ۲ و x برابر ۱. مجوز هر سه‌تایی مجموع این اعداد است:

نماد عدد معنا
rwx ۷ خواندن + نوشتن + اجرا
rw- ۶ خواندن + نوشتن
r-x ۵ خواندن + اجرا
r-- ۴ فقط خواندن

پس rwxr-xr-x همان عدد معروف ۷۵۵ است و rw-r--r-- می‌شود ۶۴۴. دو ترکیبی که بیشتر از همه می‌بینید این‌هاست:

  • ۷۵۵ برای پوشه‌ها و اسکریپت‌های اجرایی: صاحب کامل، بقیه فقط اجرا و مطالعه.
  • ۶۴۴ برای فایل‌های معمولی مثل متن و تنظیمات: صاحب می‌نویسد، بقیه فقط می‌خوانند.

تغییر مجوزها: chmod

فرمان chmod (change mode) دو زبان حرف می‌زند. در حالت «نمادی» با u (صاحب)، g (گروه)، o (دیگران) و a (همه) کار می‌کنید:

bash
chmod u+x deploy.sh    # execute permission for the owner only
chmod go-r notes.txt   # remove read permission from group and others
chmod a-w draft.md     # remove write permission from everyone

در حالت «عددی» مستقیم سه‌رقم مقصد را می‌دهید:

bash
chmod 755 deploy.sh
chmod 644 notes.txt
chmod 600 secrets.env

ترکیب 600 یعنی rw-------؛ الگوی رایج برای فایل‌های محرمانه مثل کلیدهای API که فقط صاحب باید بخواندشان.

مالکیت و دسترسی مدیریتی: chown و sudo

تغییر صاحب و گروه فایل با chown (change owner) انجام می‌شود؛ اما چون مالکیت یک منبع قدرت است، فقط مدیر سیستم اجازهٔ آن را دارد. کاربر عادی با پیش‌وند sudo (superuser do) یک فرمان را با دسترسی مدیر اجرا می‌کند و سیستم رمز خود او را می‌پرسد:

bash
sudo chown sara:developers report.txt
ls -l report.txt

نمونهٔ خروجی:

text
-rw-r--r-- 1 sara developers 340 Oct 30 11:02 report.txt

الگوی sara:developers یعنی صاحب sara و گروه developers. فرمان chown را با احتیاط به کار ببرید؛ جابه‌جایی مالکیت فایل‌های سیستمی می‌تواند سیستم را از کار بیندازد.

تمرین‌ها

تمرین

تمرین ۱ — اسکریپت اجرایی بسازید

فایلی به نام greet.sh بسازید که با echo سلام کند. با ls -l ببینید که به‌طور پیش‌فرض اجرایی نیست، سپس با chmod آن را اجرایی کنید و با مسیر نسبی ./greet.sh اجرایش کنید.

bash
# Write your commands here
نمایش راه‌حل
bash
echo "echo hello from the script" > greet.sh
ls -l greet.sh
chmod u+x greet.sh
ls -l greet.sh
./greet.sh

پیش از chmod مجوزها معمولاً rw-r--r-- است؛ بعد از آن rwxr--r-- می‌شود و فرمان ./greet.sh عبارت «hello from the script» را چاپ می‌کند. پیشوند ./ یعنی همین پوشهٔ فعلی؛ لینوکس بدون آن دنبال اسکریپت در مسیرهای سیستمی می‌گردد.

:::

تمرین

تمرین ۲ — از عدد به نماد

مجوز rw-r--r-- را به عدد بنویسید، سپس فایلی با این مجوز بسازید و بدون استفاده از فرمان عددی، با chmod نمادی آن را به rwxr-x--- برسانید. مقدار نهایی را با ls -l تأیید کنید.

bash
# Write your commands here
نمایش راه‌حل
bash
echo data > report.txt      # default permissions are usually 644
chmod u+x,g+x,o-r report.txt
ls -l report.txt

rw-r--r-- عددش ۶۴۴ است. برای رسیدن به rwxr-x--- به صاحب و گروه x اضافه کردیم و از دیگران r را گرفتیم؛ معادل عددی همان کار 750 است.

:::

خلاصه

  • هر فایل سه دستهٔ مجوز دارد: صاحب، گروه و دیگران؛ هر دسته می‌تواند r، w و x داشته باشد.
  • در حالت عددی، r=4 و w=2 و x=1 است؛ دو ترکیب رایج ۷۵۵ برای اجرایی‌ها و ۶۴۴ برای فایل‌های معمولی است.
  • chmod مجوزها را تغییر می‌دهد و chown (با sudo) صاحب و گروه را عوض می‌کند.
  • sudo فرمان بعدی را با دسترسی مدیر اجرا می‌کند؛ قدرتش را برای کارهای ضروری نگه دارید.

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

منابع و ارجاع‌ها

درس‌های مرتبط