chmod در لینوکس چیست؟ آموزش کامل مجوزهای 644، 755 و 777
اگر با لینوکس، هاست یا سرور کار کرده باشید، احتمالاً عددهایی مثل 644، 755 یا 777 را دیدهاید. این عددها مربوط به سطح دسترسی فایلها و پوشهها هستند و با دستور chmod تغییر میکنند.
دستور chmod مشخص میکند چه کسی اجازه خواندن، ویرایش یا اجرای یک فایل را داشته باشد. این موضوع در مدیریت سرور، وردپرس، فایلهای سایت و امنیت هاست اهمیت زیادی دارد.
دستور chmod چیست؟
chmod مخفف Change Mode است و برای تغییر Permission یا همان مجوز دسترسی فایلها و پوشهها در لینوکس استفاده میشود.
ساختار کلی دستور به این شکل است:
chmod permission file_or_directory
مثال:
chmod 644 index.php
این دستور سطح دسترسی فایل index.php را روی 644 قرار میدهد.
Permission در لینوکس یعنی چه؟
در لینوکس سه نوع دسترسی اصلی داریم:
read = خواندن
write = نوشتن یا ویرایش
execute = اجرا یا دسترسی اجرایی
اما نکته مهم این است که execute برای فایل و پوشه معنی متفاوتی دارد.
برای فایلها، execute یعنی فایل میتواند به عنوان برنامه یا اسکریپت اجرا شود؛ مثلاً یک فایل شل اسکریپت.
برای پوشهها، execute یعنی کاربر میتواند وارد پوشه شود و به محتویات داخل آن دسترسی داشته باشد. به همین دلیل اگر یک پوشه دسترسی execute نداشته باشد، حتی اگر دسترسی خواندن داشته باشد، ممکن است نتوانید بهدرستی وارد آن شوید یا فایلهای داخل آن را باز کنید.
عددهای chmod چطور ساخته میشوند؟
در روش عددی chmod، هر دسترسی یک عدد دارد:
read = 4
write = 2
execute = 1
این عددها با هم جمع میشوند:
خواندن + نوشتن + اجرا = 4 + 2 + 1 = 7
خواندن + نوشتن = 4 + 2 = 6
خواندن + اجرا = 4 + 1 = 5
فقط خواندن = 4
عددهای سهرقمی مثل 755 برای سه گروه مختلف هستند:
رقم اول: مالک فایل
رقم دوم: گروه
رقم سوم: سایر کاربران
برای مثال، 755 یعنی:
مالک: خواندن + نوشتن + اجرا
گروه: خواندن + اجرا
سایر کاربران: خواندن + اجرا
چطور سطح دسترسی فایلها را ببینیم؟
برای دیدن سطح دسترسی فایلها و پوشهها از دستور زیر استفاده میشود:
ls -l
مثال خروجی:
-rw-r--r-- 1 user user 1234 Jun 27 index.php
drwxr-xr-x 2 user user 4096 Jun 27 uploads
در این خروجی:
-rw-r--r-- = 644
drwxr-xr-x = 755
علامت اول نوع فایل را نشان میدهد. اگر - باشد یعنی فایل معمولی است و اگر d باشد یعنی پوشه است.
مثال:
-rw-r--r--
یعنی فایل معمولی با سطح دسترسی 644.
و:
drwxr-xr-x
یعنی پوشه با سطح دسترسی 755.
سطح دسترسی 644 برای چیست؟
سطح دسترسی 644 معمولاً برای فایلهای معمولی سایت استفاده میشود.
مثال:
chmod 644 index.php
در این حالت:
مالک: خواندن + نوشتن
گروه: فقط خواندن
سایر کاربران: فقط خواندن
این سطح دسترسی برای فایلهایی مثل فایلهای PHP، HTML، CSS و بسیاری از فایلهای وردپرس رایج است.
مالک فایل میتواند آن را ویرایش کند، اما گروه و سایر کاربران فقط امکان خواندن دارند.
سطح دسترسی 755 برای چیست؟
سطح دسترسی 755 رایجترین سطح دسترسی برای پوشههای وبسایت و فایلهای اجرایی است.
مثال برای پوشه:
chmod 755 public_html
مثال برای یک فایل اجرایی:
chmod 755 script.sh
در حالت 755 مالک دسترسی کامل دارد، اما گروه و سایر کاربران فقط اجازه خواندن و اجرا دارند.
برای پوشههای سایت، 755 معمولاً مناسب است چون وبسرور میتواند وارد پوشه شود و فایلها را بخواند، اما همه کاربران اجازه تغییر محتوا را ندارند.
سطح دسترسی 777 یعنی چه و چرا خطرناک است؟
سطح دسترسی 777 یعنی همه کاربران اجازه خواندن، نوشتن و اجرا دارند.
یعنی:
مالک: خواندن + نوشتن + اجرا
گروه: خواندن + نوشتن + اجرا
سایر کاربران: خواندن + نوشتن + اجرا
در گذشته بعضی اسکریپتها برای پوشههایی مثل uploads پیشنهاد میکردند از 777 استفاده شود، اما در سرورهای امروزی معمولاً نیازی به این سطح دسترسی وجود ندارد و استفاده از آن میتواند خطرناک باشد.
وقتی یک فایل یا پوشه 777 باشد، کاربران بیشتری امکان تغییر آن را دارند. این موضوع ممکن است باعث مشکلات امنیتی، تغییر ناخواسته فایلها یا سوءاستفاده از فایلهای قابل نوشتن شود.
پس 777 را فقط در شرایط خاص، موقت و با آگاهی کامل استفاده کنید.
روش نمادین chmod چیست؟
chmod علاوه بر روش عددی، یک روش نمادین هم دارد. در این روش به جای عدد، مشخص میکنیم دسترسی کدام گروه اضافه یا حذف شود.
حروف مهم در این روش:
u = مالک فایل
g = گروه
o = سایر کاربران
a = همه کاربران
چند مثال:
chmod u+x script.sh
یعنی به مالک فایل اجازه اجرا اضافه شود.
chmod g-w file.txt
یعنی اجازه نوشتن از گروه گرفته شود.
chmod o+r file.txt
یعنی به سایر کاربران اجازه خواندن داده شود.
روش عددی برای تنظیم کامل سطح دسترسی سریعتر است، اما روش نمادین وقتی مفید است که فقط بخواهید یک دسترسی خاص را اضافه یا حذف کنید.
تنظیم سطح دسترسی فایلها و پوشهها در وردپرس
در بسیاری از سایتهای وردپرسی، حالت رایج این است:
فایلها: 644
پوشهها: 755
برای تنظیم پوشهها:
find . -type d -exec chmod 755 {} \;
برای تنظیم فایلها:
find . -type f -exec chmod 644 {} \;
دستور اول فقط پوشهها را روی 755 قرار میدهد و دستور دوم فقط فایلها را روی 644 تنظیم میکند.
قبل از اجرای این دستورها مطمئن شوید در مسیر درست سایت هستید. اجرای اشتباه دستورهای بازگشتی میتواند سطح دسترسی فایلهای مهم را تغییر دهد.
هشدار مهم درباره chmod -R
گزینه -R یعنی تغییرات به صورت بازگشتی روی پوشه و تمام فایلها و پوشههای داخل آن اعمال شود.
مثال:
chmod -R 777 public_html
این دستور از نظر امنیتی خطرناک است و معمولاً نباید روی سایت واقعی اجرا شود.
همچنین اجرای اشتباه دستورهای بازگشتی روی مسیرهای سیستمی مثل /etc یا /var میتواند باعث ایجاد مشکل امنیتی یا حتی از کار افتادن سرویسها شود.
قبل از استفاده از chmod -R همیشه مسیر فعلی را بررسی کنید:
pwd
بعد از اینکه مطمئن شدید در مسیر درست هستید، دستور موردنظر را اجرا کنید.
جمعبندی
دستور chmod یکی از مهمترین دستورهای لینوکس برای مدیریت سطح دسترسی فایلها و پوشههاست.
اگر با هاست، وردپرس یا سرور لینوکسی کار میکنید، شناخت درست chmod کمک میکند هم خطاهای دسترسی را بهتر حل کنید و هم امنیت سایت را پایین نیاورید.
سطح دسترسی | کاربرد رایج |
|---|---|
644 | فایلهای معمولی سایت |
755 | پوشهها و فایلهای اجرایی |
777 | فقط در شرایط خاص و موقت |
در بیشتر سایتها، فایلها با 644 و پوشهها با 755 تنظیم میشوند، اما استفاده از 777 باید با احتیاط زیاد انجام شود.
سوالات متداول درباره chmod
آیا 755 فقط برای پوشههاست؟
نه. 755 برای پوشههای وبسایت بسیار رایج است، اما برای فایلهای اجرایی مثل اسکریپتهای شل یا فایلهای CGI هم میتواند استفاده شود.
آیا استفاده از 777 برای پوشه uploads درست است؟
در بیشتر سرورهای امروزی نیازی به 777 نیست. این سطح دسترسی فقط باید در شرایط خاص و موقت استفاده شود، چون میتواند امنیت سایت را کاهش دهد.
از کجا بفهمیم سطح دسترسی یک فایل چیست؟
با دستور زیر میتوانید سطح دسترسی فایلها و پوشهها را ببینید:
ls -l
برای مثال:
-rw-r--r-- = 644
rwxr-xr-x = 755

