مجوزهای فایلسیستم
خواندن مجوزهای فایلها در خروجی ls -l، محاسبهٔ مجوزهای عددی و کاربرد chmod و chown و sudo.
آنچه در این درس میآموزید
- ساختار مجوزهای صاحب/گروه/دیگران را در خروجی ls -l بخوانید
- مجوزها را در حالت نمادی و عددی با chmod تغییر دهید
- نقش sudo و فرمان chown در مدیریت مالکیت را بدانید
فهرست مطالب
لینوکس از روز اول برای چند کاربر طراحی شده است؛ سروری که ده نفر به آن وصلاند باید بتواند مجوز خواندن گزارشها را فقط به همتیمیها و مجوز ویرایش را فقط به مالک پروژه بدهد. همین مدل مجوزهاست که مشخص میکند کدام اسکریپت اجرا میشود، کدام فایل تنظیمات برای دیگران پنهان میماند و چرا گاهی پیام Permission denied میگیرید.
ریزِ خروجی ls -l
در درس قبل خروجی ls -l را دیدیم. سطر اول آن کلید فهم مجوزهاست:
ls -l deploy.shنمونهٔ خروجی:
-rwxr-xr-x 1 sara developers 120 Oct 30 10:00 deploy.shده کاراکتر اول سه بخش دارند:
- کاراکتر اول — نوع فایل:
-معمولی،dپوشه،lپیوند نمادین. - سه کاراکتر بعدی — مجوز «صاحب» (Owner) فایل:
rwxیعنی خواندن، نوشتن، اجرا. - شش کاراکتر بعدی — بهترتیب مجوز «گروه» (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 (همه) کار میکنید:
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در حالت «عددی» مستقیم سهرقم مقصد را میدهید:
chmod 755 deploy.sh
chmod 644 notes.txt
chmod 600 secrets.envترکیب 600 یعنی rw-------؛ الگوی رایج برای فایلهای محرمانه مثل کلیدهای API که فقط صاحب باید بخواندشان.
مالکیت و دسترسی مدیریتی: chown و sudo
تغییر صاحب و گروه فایل با chown (change owner) انجام میشود؛ اما چون مالکیت یک منبع قدرت است، فقط مدیر سیستم اجازهٔ آن را دارد. کاربر عادی با پیشوند sudo (superuser do) یک فرمان را با دسترسی مدیر اجرا میکند و سیستم رمز خود او را میپرسد:
sudo chown sara:developers report.txt
ls -l report.txtنمونهٔ خروجی:
-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 اجرایش کنید.
# Write your commands hereنمایش راهحل
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 تأیید کنید.
# Write your commands hereنمایش راهحل
echo data > report.txt # default permissions are usually 644
chmod u+x,g+x,o-r report.txt
ls -l report.txtrw-r--r-- عددش ۶۴۴ است. برای رسیدن به rwxr-x--- به صاحب و گروه x اضافه کردیم و از دیگران r را گرفتیم؛ معادل عددی همان کار 750 است.
:::
خلاصه
- هر فایل سه دستهٔ مجوز دارد: صاحب، گروه و دیگران؛ هر دسته میتواند
r،wوxداشته باشد. - در حالت عددی،
r=4وw=2وx=1است؛ دو ترکیب رایج ۷۵۵ برای اجراییها و ۶۴۴ برای فایلهای معمولی است. chmodمجوزها را تغییر میدهد وchown(باsudo) صاحب و گروه را عوض میکند.sudoفرمان بعدی را با دسترسی مدیر اجرا میکند؛ قدرتش را برای کارهای ضروری نگه دارید.
مجوزها به شما میگویند چه کسی حق اجرای چه چیزی را دارد. در درس بعدی به دو کار عملی مدیران میرویم: نصب نرمافزار از مخازن بسته و مدیریت پردازههای در حال اجرا.