متوسط · ۱۰ دقیقه مطالعه · به‌روزرسانی ۲۰۲۶-۱۱

درک مجوزهای فایل

آن رشته‌ی rwxr-xr-x کنار هر فایل بی‌معنی نیست — یعنی چه کسی می‌تواند آن را بخواند، بنویسد و اجرا کند. خواندن و تغییرش را یاد بگیر.

لینوکس از همان روز اول برای استفاده‌ی هم‌زمان چند نفر ساخته شد، بنابراین هر فایل مجوزهایی را با خود دارد: چه کسی اجازه دارد آن را بخواند، تغییر دهد، یا اجرا کند. درست انجام دادن این کار، تفاوت بین یک سرور امن و سروری است که هرکسی می‌تواند دستکاری‌اش کند.

خواندن آن ده کاراکتر

در خروجی ls -l، ستون اول چیزی شبیه -rw-r--r-- است. کاراکتر اول نوع است (- فایل، d پوشه). نُه کاراکتر بعدی سه گروهِ سه‌تایی‌اند: مالک، گروه، و بقیه‌ی کاربران. در هر گروه، r یعنی خواندن، w یعنی نوشتن، x یعنی اجرا، و خط تیره یعنی «مجاز نیست».

bash — real output
$ ls -l app.py
-rwxr-xr-x 1 root root 128 Nov 2 12:01 app.py
  │└┬┘└┬┘└┬┘
  │ │  │  └ others: read + execute
  │ │  └──── group: read + execute
  │ └─────── owner: read + write + execute
  └───────── type: regular file
مالک می‌تواند این فایل را تغییر دهد؛ بقیه فقط می‌توانند بخوانند و اجرایش کنند.

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

دستور chmod مجوزها را تغییر می‌دهد. شکل ساده‌اش یک مجوز را برای مالک (u)، گروه (g)، بقیه (o) یا همه (a) اضافه (+) یا حذف (-) می‌کند. مثلاً یک اسکریپت را قابل‌اجرا کن:

bash
chmod +x app.py      # anyone can now run it
chmod go-w notes.txt # group & others cannot write
chmod u+rw,go-rwx key # owner read/write, nobody else anything

میان‌بُر عددی

اغلب chmod 755 یا chmod 644 را می‌بینی. هر رقم یک گروه است (مالک، گروه، بقیه)، و در آن خواندن=۴، نوشتن=۲، اجرا=۱ با هم جمع می‌شوند. پس ۷ یعنی rwx، ۶ یعنی -rw، ۵ یعنی r-x، ۴ یعنی --r. عددِ ۷۵۵ یعنی مالک همه‌کاری می‌تواند بکند و بقیه فقط می‌خوانند و اجرا می‌کنند — استاندارد یک برنامه.

یک کلید خصوصی یا فایل رمز باید 600 باشد (مالک بخواند/بنویسد، بقیه هیچ). اگر SSH کلیدت را نپذیرفت، تقریباً همیشه دلیلش مجوز اشتباه است.
همه‌ی مقاله‌ها