هر کسی که با سرور یا دسکتاپ لینوکس کار میکند دیر یا زود به Permission denied میرسد. ابزار اصلی تنظیم مجوزها chmod است. مدل یونیکس ساده است: سه نقش (صاحب، گروه، دیگران) و برای هر نقش r و w و x. manpage رسمی اوبونتو همین چارچوب را توضیح میدهد؛ اینجا با مثال روزمره قابلاستفاده میشود.
پیشنیازها
- قبل از تغییر گسترده، با ls -l وضعیت فعلی را ببینید.
- chmod فقط مجوز را عوض میکند؛ صاحب را chown تغییر میدهد.
- روی مسیرهای سیستمی عجولانه chmod -R نزنید؛ اول روی پوشهٔ تست در home تمرین کنید.
نمادین و عددی با مثال
دو سبک رایج دارید:
chmod u+x script.sh
chmod go-w file
chmod 755 script.sh
chmod 644 notes.txt
معنی اعداد را اینطور به خاطر بسپارید: ۷ برابر rwx، ۶ برابر rw-، ۵ برابر r-x، ۴ برابر r-- و ۰ یعنی هیچ. در ۷۵۵ صاحب همه کار میکند و گروه و دیگران فقط خواندن و اجرا دارند؛ ۶۴۴ برای فایل متنی معمولی و ۶۰۰ فقط برای صاحب است.
نمادین برای خوانایی تیمی بهتر است؛ عددی برای سرعت اسکریپت عالی است. هر دو درستاند.
سناریوهای روزمره گامبهگام
- اسکریپت اجرایی: chmod +x deploy.sh یا ۷۵۵.
- کلید SSH: chmod 600 ~/.ssh/id_rsa و معمولاً ۷۰۰ برای پوشهٔ .ssh.
- دایرکتوری: بیت x برای ورود (cd) لازم است؛ فقط r کافی نیست.
- بازگشتی فقط با اطمینان مسیر: مثلاً chmod -R 755 /var/www/html — اول مسیر را دوبار چک کنید.
- راستیآزمایی: نتیجه را با ls -l ببینید؛ در عیبیابی عمیقتر namei -l کمک میکند.
اشتباه معروف ۷۷۷: سریع کار میکند ولی روی سرور عمومی خطرناک است. فقط موقتی و کنترلشده استفاده کنید.
جدول ذهنی سریع
- فایل متنی معمولی: شروع با ۶۴۴.
- اسکریپت یا باینری اجرایی: ۷۵۵ یا حداقل u+x.
- راز و کلید: ۶۰۰ برای فایل و معمولاً ۷۰۰ برای پوشه.
- اشتراک گروهی: گاهی ۶۴۰ یا ۶۶۰ با گروه درست؛ نه ۷۷۷.
- قبل از -R روی یک پوشهٔ تست تمرین کنید.
تمرین امن در home
- یک پوشهٔ آزمایشی بسازید:
mkdir ~/perm-lab && cd ~/perm-lab
- فایل را اول ۶۴۴ بگذارید، بعد با کاربر دیگر بنویسید و ببینید کجا به دیوار میخورید.
- اگر مجوز درست بود و باز هم خطا ماند، مالکیت، mount فقطخواندنی یا SELinux/AppArmor را چک کنید.
روی میزبان وب الگوی رایج فایل ۶۴۴ و پوشه ۷۵۵ است. اگر روی پروژهٔ گیت کار میکنید، در README بنویسید بعد از کلون چه chmodی لازم است تا کسی به وسوسهٔ ۷۷۷ نیفتد.
منبع: chmod(1) — Ubuntu manpage.
شما بیشتر نمادین کار میکنید یا عددی؟ کدام خطای permission بیشتر کلافهتان کرده؟