
به اشتراک بگذارید
مدیریت مجوزها (Permissions) در لینوکس، قلب تپنده امنیت سرورهای وب است. تغییر سطح دسترسی فایل در لینوکس مهارتی است که مرز بین یک سرور امن و یک سایت هک شده را تعیین میکند. وقتی شما با خط فرمان (Terminal) کار میکنید، دیگر رابط گرافیکی وجود ندارد که با یک کلیک مجوزها را تغییر دهید؛ بلکه باید با منطق اعداد و حروف صحبت کنید. در سالهای اخیر، با افزایش حملات سایبری، دانستن اینکه دقیقاً چه کسی اجازه خواندن (Read)، نوشتن (Write) و اجرا (Execute) را دارد، برای هر مدیر سرور یا توسعهدهندهای حیاتی است.
💡 مجوز فایل (File Permission) = مجموعهای از قوانین است که مشخص میکند چه کسی (مالک، گروه یا دیگران) میتواند روی یک فایل یا پوشه چه عملیاتی (خواندن، ویرایش یا اجرا) انجام دهد.
✅ نکته کلیدی: بسیاری از مشکلات رایج مثل خطای 403 یا حتی مشکل اتصال به دیتابیس ناشی از تنظیمات غلط همین مجوزهاست. سرورهای مجازی وبداده با کانفیگ اولیه امنیتی ارائه میشوند، اما دانش مدیریت آن قدرت شماست.
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهی برای رهایی از خطاهای کلافهکننده “Permission Denied” هستید یا میخواهید بدانید چرا نباید همه فایلها را روی 777 تنظیم کنید. ما در این راهنمای جامع، نه تنها دستورات خشک و خالی را مرور نمیکنیم، بلکه با مثالهای واقعی ، شما را به یک متخصص در خط فرمان تبدیل میکنیم. آمادهاید که امنیت سرور خود را به سطح بعدی ببرید؟
آنچه در این مقاله میخوانید:

سطح دسترسی و کلاسهای کاربری در لینوکس چیست؟
برای درک عمیق تغییر مجوز در لینوکس، باید ابتدا بدانیم سیستمعامل لینوکس چگونه به فایلها نگاه میکند. تصور کنید سرور شما یک آپارتمان بزرگ است. در این آپارتمان، سه دسته از افراد وجود دارند که سطح دسترسی متفاوتی به اتاقها (فایلها و فولدرها) دارند. درک این سه دسته، پایه و اساس امنیت در سیستمهای یونیکسی است و بدون شناخت آنها، استفاده از دستورات صرفاً کپیبرداری کورکورانه خواهد بود.
لینوکس کاربران را به سه دسته اصلی تقسیم میکند:
- User (Owner): مالک اصلی فایل (صاحب خانه). کسی که فایل را ایجاد کرده است. او معمولاً بیشترین قدرت را دارد.
- Group: گروهی از کاربران که به فایل دسترسی دارند (اعضای خانواده). مثلاً گروه “www-data” برای وبسرور.
- Others (World): سایر کاربران سیستم (غریبهها یا مهمانان). کسانی که نه مالک هستند و نه در گروه قرار دارند.
نمودار ساختار دسترسیها در Linuxبه زبان ساده (ASCII Art):
سطح دسترسی (Permissions)
⬇️
┌───────────────┐
│ فایل / پوشه │
└───────┬───────┘
│
┌───────┼───────┐
▼ ▼ ▼
Owner Group Others
(u) (g) (o)
│ │ │
rwx r-x r--
🔸 در خروجی دستور
ls -l، اولین کاراکتر نشاندهنده نوع فایل است (- برای فایل و d برای دایرکتوری). 9 کاراکتر بعدی، مجوزهای سه گروه بالا را نشان میدهند.چرا به تغییر سطح دسترسی فایل و دایرکتوری در لینوکس نیاز داریم؟
شاید بپرسید چرا سیستمعامل به طور پیشفرض دسترسی کامل به همه نمیدهد؟ پاسخ در یک کلمه خلاصه میشود: امنیت. تغییر مجوز انواع فایل و دایرکتوری از طریق خط فرمان در لینوکس به شما این امکان را میدهد که کمترین سطح دسترسی ضروری (Principle of Least Privilege) را اعمال کنید. اگر همه فایلها باز باشند، یک هکر با دسترسی محدود میتواند کل سایت شما را پاک کند.
چرا مدیریت دقیق مجوزها در لینوکس حیاتی است؟
- جلوگیری از هک: اگر دسترسی نوشتن (Write) برای “Others” باز باشد، هکرها میتوانند کدهای مخرب (Malware) را در فایلهای سایت شما تزریق کنند.
- رفع ارورهای سرور: بسیاری از مواقع ارور دیتابیس وردپرس یا خطاهای 500 Internal Server Error مستقیماً به دلیل سختگیری بیش از حد یا تنظیمات غلط پرمیشنها رخ میدهند.
- پایداری سرویسها: سرویسهایی مثل MySQL یا SSH اگر ببینند فایلهای پیکربندیشان (Config files) دسترسی باز دارند، برای امنیت بیشتر اصلاً اجرا نمیشوند!
پیشنیازهای لازم برای تغییر دسترسی تمام فایلها و پوشهها
قبل از اینکه وارد ترمینال شویم و دستورات را تایپ کنیم، باید مطمئن شویم که ابزار و دسترسی لازم را داریم. تغییر دسترسی تمام فایلها و پوشهها نیازمند سطحی از اختیارات است که کاربر عادی معمولاً فاقد آن است. در محیطهای سرور مجازی (VPS) یا سرور اختصاصی، شما پادشاه سیستم هستید، اما باید با احتیاط عمل کنید.
شرایط لازم برای شروع:
- دسترسی به ترمینال (SSH) با استفاده از نرمافزارهایی مثل PuTTY یا Terminal مک.
- دسترسی روت سرور (Root) یا کاربری با دسترسی
sudo. (کاربر عادی فقط میتواند مجوز فایلهای خودش را تغییر دهد). - دانش پایه درباره ساختار فایلهای لینوکس (تفاوت فایل و فولدر).

آموزش نحوه تغییر دسترسی فایل و دایرکتوری در Linux
در این بخش کلیدی از آموزش تغییر پرمیشن فایلها، قصد داریم به صورت گامبهگام نحوه تغییر دسترسی فایل و دایرکتوری در Linux را بررسی کنیم. تسلط بر این فرآیند برای هر مدیر سروری ضروری است، زیرا مستقیماً با امنیت و عملکرد سرویسهایی مثل وبسرور و دیتابیس در ارتباط است. در ادامه، با استفاده از ترمینال و دستورات استاندارد، یاد میگیرید که چگونه مجوزها را دقیقاً مطابق نیاز خود تنظیم کنید و امنیت سایت خود را تضمین نمایید.
1- دستور chmod در لینوکس برای تغییر مجوزها
دستور chmod (Change Mode) برای تغییر مجوزهای خواندن، نوشتن و اجرا استفاده میشود. این دستور به دو روش “عددی” (Octal) و “نمادین” (Symbolic) کار میکند. روش عددی برای حرفهایها سریعتر و دقیقتر است.
جدول ارزشگذاری عددی (Octal) ؛ منطق ریاضی مجوزها
در این روش، هر سطح دسترسی یک “امتیاز” خاص دارد. برای تعیین مجوز نهایی، کافیست امتیازها را با هم جمع کنید. این جدول به شما کمک میکند تا زبان اعداد لینوکس را درک کنید:
| امتیاز | نوع مجوز | مخفف | عملکرد روی فایل (File) | عملکرد روی دایرکتوری (Folder) |
|---|---|---|---|---|
| 4 | Read (خواندن) | r | مشاهده محتویات فایل | امکان لیست گرفتن (ls) از فایلهای داخل پوشه |
| 2 | Write (نوشتن) | w | ویرایش، تغییر و ذخیره فایل | امکان ایجاد و حذف فایل در آن پوشه |
| 1 | Execute (اجرا) | x | اجرای فایل (به عنوان برنامه) | امکان ورود به پوشه (cd) و دسترسی به فایلها |
| 0 | None (هیچ) | - | دسترسی مسدود است | دسترسی مسدود است |
💡 فرمول طلایی محاسبه: برای داشتن دسترسی کامل (Read + Write + Execute)، اعداد را جمع کنید: 4 + 2 + 1= 7
سناریوی عملی: تنظیم مجوز امن
برای محاسبه مجوز، اعداد را برای هر گروه جمع میکنیم. مثلاً برای مجوز 755:
- Owner: 4+2+1 = 7 (همه دسترسیها)
- Group: 4+0+1 = 5 (خواندن و اجرا)
- Others: 4+0+1 = 5 (خواندن و اجرا)
# تغییر مجوز یک فایل خاص
chmod 644 config.php
# تغییر مجوز یک پوشه خاص
chmod 755 public_html استفاده از روش نمادین (Symbolic Mode):
گاهی نیاز دارید فقط دسترسی اجرا (+x) را اضافه کنید بدون اینکه به بقیه دسترسیها دست بزنید.
u= Userg= Groupo= Othersa= All (همه)
# اضافه کردن دسترسی اجرا به مالک فایل
chmod u+x script.sh
# حذف دسترسی نوشتن از گروه و دیگران (امنیت بالا)
chmod go-w sensitive_data.txt 2- دستور chown در لینوکس (تغییر مالکیت)
گاهی مشکل Permission Denied با تغییر chmod حل نمیشود، چون مالک فایل (Owner) اشتباه است. مثلاً فایل با یوزر root ساخته شده اما وبسرور (مثلاً Nginx) میخواهد آن را بخواند. در اینجا دستور chown (Change Owner) وارد میدان میشود.
ساختار کلی دستور chown به صورت زیر است:
chown [user]:[group] [file] در این ساختار سه بخش اصلی وجود دارد:
Group (گروه جدید): نام گروهی که میخواهید فایل به آن تعلق بگیرد.
User (مالک جدید): نام کاربری فردی که میخواهید مالک فایل شود.
علامت دو نقطه (: ) که جداکننده نام مالک و گروه است.
در ادامه دو مثال کاربردی از تغییر مالک فایل به کاربر و تغییر مالک و گروه همزمان آورده ایم.
# تغییر مالک فایل به کاربر www-data
chown www-data index.php
# تغییر مالک و گروه همزمان
chown www-data:www-data index.php chown معمولاً نیاز به دسترسی sudo دارد. اگر خطای عدم اتصال به دیتابیس دارید و فایلهای دیتابیس شما متعلق به کاربر اشتباهی باشد، سرویس MySQL نمیتواند آنها را بخواند.3- تغییر دسترسی تمام فایلها و پوشهها به صورت یکجا
زمانی که میخواهید هزاران فایل را تغییر دهید، تغییر تکتک آنها غیرممکن است. گزینه R- (بزرگ) تغییرات را به صورت بازگشتی روی تمام فایلها و زیرپوشهها اعمال میکند. این یکی از قدرتمندترین و در عین حال خطرناکترین دستورات است.
# تغییر مالکیت کل پوشه سایت به کاربر وبسرور
chown -R www-data:www-data /var/www/html/mysite برای اینکه دقیقاً متوجه شوید چه اتفاقی در سرور میافتد، بیایید این دستور را بخش به بخش بررسی کنیم:
chown: دستور اصلی برای تغییر مالکیت (Change Owner).R-: مخفف Recursive (بازگشتی). این سوییچ حیاتی به لینوکس میگوید که عملیات را فقط روی پوشه اصلی انجام نده، بلکه وارد پوشه شو و تمام فایلها و زیرپوشههای داخلی آن را هم تغییر بده.www-data:www-data: بخش اول (www-data) نام کاربری وبسرور (معمولاً در اوبونتو/دبیان) و بخش دوم بعد از دو نقطه، نام گروه آن است. با این کار مالکیت به وبسرور داده میشود تا بتواند فایلها را بخواند یا بنویسد./var/www/html/mysite: آدرس دقیق پوشه هدف است که عملیات روی آن انجام میشود.
chmod -R 777 / را اجرا نکنید. این کار امنیت کل سیستم عامل شما را نابود میکند و راه را برای نفوذ باز میگذارد.سرور های مجازی وبداده
روی دکمه زیر کلیک کنید
رفع خطاهای رایج تغییر سطح دسترسی فایل در لینوکس
در دنیای واقعی مدیریت سرور، همیشه همه چیز طبق برنامه پیش نمیرود و ممکن است با خطاهای مختلفی روبرو شوید. در این بخش، به بررسی برخی از رایجترین چالشها و خطاهایی میپردازیم که ممکن است در حین کار با فایلها و دایرکتوریها تجربه کنید. با مرور این سناریوهای عملی، یاد میگیرید که چگونه در مواجهه با ارور Permission Denied، به جای آزمون و خطا، مشکل را ریشهیابی و حل کنید.
1- خطای 403 Forbidden در وردپرس
گاهی ممکن است کاربر سایت وردپرسی را منتقل کرده باشد و با خطای 403 مواجه شود.
دلیل خطای 403 Forbidden: پرمیشن فایلها و دایرکتوریها به هم ریخته است.
راه حل: استاندارد امنیتی وردپرس میگوید پوشهها باید 755 و فایلها باید 644 باشند. استفاده از یک دستور ترکیبی find و chmod بهترین راه حل است پس می توانید متناسب با نیازتان از یکی از دستورهای زیر استفاده کنید:
# تغییر تمام دایرکتوریها به 755
find /var/www/html -type d -exec chmod 755 {} \;
# تغییر تمام فایلها به 644
find /var/www/html -type f -exec chmod 644 {} \; این دستورات هوشمندانه، مدیریت دسترسی پوشهها را جدا از فایلها انجام میدهند. اگر همه را یکجا 755 کنید، فایلهای متنی شما قابلیت اجرایی پیدا میکنند که خطرناک است!
2- خطای اتصال به پایگاه داده
در برخی موارد مشکل به این صورت است که سایت بالا نمیآید و خطای اتصال به پایگاه داده میدهد، با اینکه یوزر و پسورد درست است.
دلیل خطا: فایل wp-config.php یا فایلهای سرویس MySQL مالکیت صحیح ندارند. اگر وبسرور نتواند کانفیگ را بخواند، اتصال برقرار نمیشود.
راه حل: بررسی مالکیت فایل کانفیگ و اطمینان از اینکه وبسرور (مثلاً apache یا nginx) مالک آن است یا مجوز خواندن (Read) دارد.
جمعبندی؛ تغییر دسترسی فایلها و پوشهها در Linux
در دنیای Linux، تغییر سطح دسترسی فایل در لینوکس یک کار روتین نیست، بلکه یک استراتژی دفاعی است. ما در این مقاله یاد گرفتیم که چگونه با ترکیبی از chmod و chown، کنترل کاملی بر سرور خود داشته باشیم و از شر خطاهای مزاحم خلاص شویم. به یاد داشته باشید که امنیت یک محصول نیست، بلکه یک فرآیند است و مدیریت صحیح Permission فایلها اولین قدم در این مسیر است.
اگر هنوز در مورد نحوه محاسبه کدها یا استفاده از خط فرمان سوالی دارید، یا تجربهای از یک اشتباه کوچک که منجر به قطعی سرور شد دارید، حتماً در بخش نظرات با ما و سایر کاربران به اشتراک بگذارید. امیدوارم این مقاله از بلاگ وبداده چراغ راهی برای مدیریت امنتر سرورهای شما باشد.
سوالات متداول درباره نحوه تغییر سطح دسترسی فایل در لینوکس
تفاوت دستور chmod و chown چیست؟
دستور chmod (Change Mode) سطح دسترسی (خواندن، نوشتن، اجرا) را تغییر میدهد، در حالی که chown (Change Owner) مشخص میکند چه کاربری صاحب آن فایل است. برای دسترسی کامل، گاهی نیاز به تنظیم هر دو دارید.




