هر کسی که با سرور یا دسکتاپ لینوکس کار می‌کند دیر یا زود به 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-- و ۰ یعنی هیچ. در ۷۵۵ صاحب همه کار می‌کند و گروه و دیگران فقط خواندن و اجرا دارند؛ ۶۴۴ برای فایل متنی معمولی و ۶۰۰ فقط برای صاحب است.

نمادین برای خوانایی تیمی بهتر است؛ عددی برای سرعت اسکریپت عالی است. هر دو درست‌اند.

سناریوهای روزمره گام‌به‌گام

  1. اسکریپت اجرایی: chmod +x deploy.sh یا ۷۵۵.
  2. کلید SSH: chmod 600 ~/.ssh/id_rsa و معمولاً ۷۰۰ برای پوشهٔ .ssh.
  3. دایرکتوری: بیت x برای ورود (cd) لازم است؛ فقط r کافی نیست.
  4. بازگشتی فقط با اطمینان مسیر: مثلاً chmod -R 755 /var/www/html — اول مسیر را دوبار چک کنید.
  5. راستی‌آزمایی: نتیجه را با ls -l ببینید؛ در عیب‌یابی عمیق‌تر namei -l کمک می‌کند.

اشتباه معروف ۷۷۷: سریع کار می‌کند ولی روی سرور عمومی خطرناک است. فقط موقتی و کنترل‌شده استفاده کنید.

جدول ذهنی سریع

  • فایل متنی معمولی: شروع با ۶۴۴.
  • اسکریپت یا باینری اجرایی: ۷۵۵ یا حداقل u+x.
  • راز و کلید: ۶۰۰ برای فایل و معمولاً ۷۰۰ برای پوشه.
  • اشتراک گروهی: گاهی ۶۴۰ یا ۶۶۰ با گروه درست؛ نه ۷۷۷.
  • قبل از -R روی یک پوشهٔ تست تمرین کنید.

تمرین امن در home

  1. یک پوشهٔ آزمایشی بسازید:

mkdir ~/perm-lab && cd ~/perm-lab

  1. فایل را اول ۶۴۴ بگذارید، بعد با کاربر دیگر بنویسید و ببینید کجا به دیوار می‌خورید.
  2. اگر مجوز درست بود و باز هم خطا ماند، مالکیت، mount فقط‌خواندنی یا SELinux/AppArmor را چک کنید.

روی میزبان وب الگوی رایج فایل ۶۴۴ و پوشه ۷۵۵ است. اگر روی پروژهٔ گیت کار می‌کنید، در README بنویسید بعد از کلون چه chmodی لازم است تا کسی به وسوسهٔ ۷۷۷ نیفتد.

شما بیشتر نمادین کار می‌کنید یا عددی؟ کدام خطای permission بیشتر کلافه‌تان کرده؟