آموزش تغییر سطح دسترسی (Permission) فایلها و دایرکتوریها در پنل دایرکت ادمین
How to Change Permission of Files and Directories in Directadmin Panel
سطح دسترسی (Permission) یا “پرمیشِن” یکی از اصول اولیه هر سیستم عامل یا به زبان سادهتر، هر فعالیتی در جهانِ ماست. همانطور که کلیدهای هر قفلی در دست افراد مشخصی قرار دارد، دسترسی به هر فایلی در بستر شبکه هم به افراد خاصی داده میشود.
امروز در نت افراز بلاگ میخواهیم به سراغ بررسی مفهوم سطح دسترسی بپردازیم و ببینیم که صاحبان وبسایتهای اینترنتی یا ادمینهای سایتها، باید به شکلی سطح دسترسی فایلها و دایرکتوریهای وبسایتهای خود را مدیریت کنند.
اگر بخواهیم مثالی از دنیای پیرامون خودمان را ارائه کنیم، بهترین مثال، میتواند یک فروشگاه فیزیکی باشد. فروشگاهی که ممکن است متعلق به خود شما باشد یا اینکه شما یک کارمند آن باشید!
تغییر سطح دسترسیهای دایرکتوریها یا فایلهای سایت، مثل این است که یک کلید جدید بسازید و آن را در اختیار گروهی قرار دهید یا اینکه کلید قفل فروشگاه را عوض کنید تا دسترسیهای گروه پیشین باطل شود!
توجه داشته باشید که این مطلب تنها مختص مدیران سایتها نیست، چرا که از کاربران ویندوز و مک گرفته تا کاربران لینوکس، میتوانند از اطلاعات این مقاله برای افزایش امنیت سیستم شخصی یا سرور خود استفاده کنند. در ادامه با نتافراز بلاگ همراه باشید.
سطح دسترسی یا Permission چیست؟
در مقدمه اشاره کوتاهی به مفهوم سطح دسترسی داشتیم، اما در این بخش میخواهیم یک بار برای همیشه با مفهوم سطحی دسترسی یا پرمیشن آشنا شویم. کلمه Permission در کلمه به معنای اجازه نامه، اجازه دادن یا دسترسی است. در هر سیستم عاملی مفهوم سطح دسترسی وجود دارد و عملا نمیتوانید سیستم عاملی را ببینید که در آن مفهوم سطح دسترسی مورد بررسی و استفاده قرار نگرفته باشد.
سطح دسترسی مشخص میکند که یک کاربر (یا گروهی از کاربران) میتوانند چه امتیازات یا اجازه نامههایی داشته باشند. به عنوان مثال، من یک پوشه با نام Netafraz در سیستم ویندوزی خودم ایجاد میکنم. با راست کلیک کردن بر روی این پوشه و سپس کلیک بر روی گزینه Properties، میتوانم جزئیات این پوشه را مشاهده کنم. اگر به سربرگ “Security” این پوشه بروم، دقیقا میتوانم گروههای کاربری و سطح دسترسیهای داده شده به هر گروه کاربری را مشاهده کنم.
عبارت ” … Permissions for” هم دقیقا به این مفهوم اشاره دارد که هر گروه کاربری به چه مواردی دسترسی دارند (Allow)، و به چه مواردی دسترسی ندارند (Deny). از این موارد میتوان به خواندن فایلها، اعمال تغییر در فایلها، کپی کردن فایلها، دانلود فایلها و… اشاره کرد.
موارد گفته شده، در سیستم عامل ویندوز و ویندوز سرور بود. اما اوضاع در لینوکس به چه شکل است؟
مثل همیشه لینوکس کمتر به رابط کاربری اهمیت داده و ترجیح به استفاده منطقی از اعداد دارد. همچنین برخلاف ویندوز که سطح دسترسیهای متنوعتری داشت، در لینوکس سه سطح دسترسی اصلی وجود دارد.
بررسی انواع Permission ها در لینوکس
برای بررسی انواع پرمیشنها در لینوکس، به سراغ پنل کاربری خودمان در نت افراز میرویم. همانطور که میدانید، در زمان نگارش این مقاله، ما در تیم نت افراز تنها اقدام به ارائه هاستهای لینوکسی میکنیم. با خرید هاست از نت افراز، میتوانید از حجم زیادی از قابلیتهای یک توزیع سمت سرور لینوکس بهرهمند شوید و سایت یا وب اپلیکیشن خود را بر روی هاستهای مختلف نت افراز میزبانی کنید.
اگر از همراهان همیشگی ما باشید، میدانید که نت افراز از پلاگین AXFile Pro برای راحتی بیشتر کاربران خود در بخش مدیریت فایلها استفاده میکند. در کنار این پلاگین که بر روی پنل دایرکت ادمین شما در دسترس است، همچنان میتوانید از سیستم مدیریت فایل پیش فرض کنترل پنل دایرکت ادمین هم استفاده کنید که رنگ و لعاب کمتری نسبت به AXFile Pro دارد.
ما در این آموزش از AXFile Pro استفاده میکنیم. برای دسترسی به این پلاگین، باید ابتدا وارد پنل دایرکت ادمین خود شوید. برای این کار میتوانید از آموزشی که پیش از این برای شما آماده کردهایم، استفاده کنید.
آموزش ورود به پنل دایرکت ادمین
پس از ورود به پنل دایرکت ادمین، با کلیک بر روی گزینه «مدیریت فایل» مستقیما به پلاگین مدیریت فایل AXFile Pro هدایت خواهید شد. در کنار این آیکون هم، گزینه «مدیریت فایل قدیمی» قرار دارد که سیستم مدیریت فایل پیش فرض دایرکت ادمین را برای شما بارگذاری میکند.
با کلیک بر روی گزینه «مدیریت فایل» به مرحله بعدی میرویم.
مشاهده Permission ها در پنل دایرکت ادمین
با کلیک بر روی گزینه مدیریت فایل، پنل اصلی پلاگین AXFile Pro برای شما به نمایش درخواهد آمد. در این صفحه میتوانید اصلیترین دایرکتوریهای سایت خود که شامل public_html و private_html میشوند را در کنار تعدادی دایرکتوری دیگر مشاهده کنید. از همین ابتدا میتوانید با راست کلیک کردن بر روی یکی از دایرکتوریها گزینه “Change Permissions” را مشاهده کنید.
پیشنهاد میکنیم که برای کاهش خطرات ناشی از اشتباهات کاربری، یک فایل با نام دلخواه خود در دایرکتوری public_html ایجاد کرده و مراحل بعدی این آموزش را بر روی این فایل آزمایش کنید. برای این کار پس از ورود به این دایرکتوری بر روی اولین آیکون از سمت چپ کلیک میکنیم و در پنجره جدید، نام فایل خود را همراه با فرمت دلخواه آن وارد میکنیم. من نام فایل خود را netafraz در نظر میگیرم و میخواهم در فرمت یک فایل متنی ایجاد شود. برای همین در پنجره باز شده عبارت netafraz.txt را وارد میکنم. شما میتوانید در فرمت html نیز این فایل را ایجاد کنید.
اکنون بر روی فایلی که ایجاد کردیم کلیک راست کرده و بر روی گزینه Change Permissions کلیک میکنیم.
با این کار پنجره جدیدی برای شما باز میشود که در آن 4 ستون و 5 سطر میبینید.
Other | Group | User | Mode |
☑ | ☑ | ☑ | Read |
▢ | ▢ | ☑ | Write |
▢ | ▢ | ▢ | Execute |
0644 | Octal |
در ابتدا لازم است که با مفهوم هر یک از عبارات بالا آشنا شوید. پس اول به سراغ معانی هر بخش میرویم.
انواع سطح کاربری
User: مشخص کننده نقش کاربری مدیر سایت یا مدیر هاست. این نقش کاربری همواره بیشترین سطح دسترسی را به فایلها و دایرکتوریهای سایت دارد.
Group: مشخص کننده گروهی از افراد (حسابهای کاربری)، که به وسیله مدیر سرور یا هاست، گروهبندی شدهاند تا بتوانند به یک فایل یا دایرکتوری، دسترسیهای تعریف شده و مجزا داشته باشند. مفهوم Group همواره کمی گیج کننده است، اما نیازی به نگرانی در این رابطه نیست، چرا که تنها در سایتهای فوق پیشرفته نیاز به تعریف Group وجود دارد.
Other: تمامی افرادی که در دسته بندی User و Group قرار نگیرند، به صورت پیش فرض در دستهبندی Other جای میگیرند. در حقیقت این دسته بندی شامل تمامی افرادی است که میتوانند سایت شما را مشاهده کنند.
انواع سطح دسترسی
Read (r): این اجازه نامه به فرد یا گروه داده میشود تا بتواند اطلاعات یک فایل یا دایرکتوری را بخواند یا مشاهده کند.
Write (w): این اجازه نامه به فرد یا گروه داده میشود تا بتواند محتویات فایل یا دایرکتوری را بنویسد یا به زبان ساده، ویرایش کند.
Execute (x): این اجازه نامه موجب میشود که فرد یا گروه بتواند یک فایل یا دایرکتوری را اجرا یا اصطلاحا (Run) کند. توجه داشته باشید که علامت اختصاری این سطح دسترسی، برخلاف دو مورد قبلی از حرف اول آن گرفته نشده است.
در ادامه با مثالهایی که میزنیم بیشتر با این سطوح کاربری و دسترسی آشنا خواهید شد.
سطح دسترسی فایلها و دایرکتوریها چگونه تعیین میشود؟
هر سطح دسترسی یک مقدار مشخص دارد. این مقدار برای سطح دسترسی Read برابر 4، برای سطح دسترسی Write برابر 2 و برای سطح دسترسی Execute برابر 1 میباشد. این مقادیر بر اساس سیستم Octal طراحی شدهاند که توضیح این سیستم خارج از حوصله این مقاله است و نیازی به ارائه توضیحات بیشتری در این رابطه نیست.
بنابراین 8 حالت کلی میتواند برای یک سطح کاربری رخ دهد:
- 0: این مقدار برای زمانیست که کاربر هیچ دسترسی به فایل یا دایرکتوری ندارد. یعنی حتی قادر به مشاهده سایت شما هم نیست. به این سطح دسترسی “None” گفته میشود.
- 1: گروه کاربری قادر به اجرای فایلها یا دایرکتوریهاست. اجرای دایرکتوریها شامل تغییر نام، کپی کردن و… هم میشود. به این سطح دسترسی “Execute” گفته میشود.
- 2: گروه کاربری قادر به نوشتن و ویرایش کردن فایلها و دایرکتوریها میباشد. به این سطح دسترسی “Write” گفته میشود.
- 3: گروه کاربری مورد نظر، هم قادر به نوشتن و هم قادر به اجرای فایل ها و دایرکتوریهاست. به این سطح دسترسی نوشتن و اجرا (Write & Execute) گفته میشود.
- 4: گروه کاربری مورد نظر قادر به خواندن فایل یا دایرکتوری موردنظر است. به این سطح دسترسی “Read” گفته میشود.
- 5: گروه کاربری مورد نظر قادر به خواندن و اجرای فایل یا دایرکتوری تعیین شده است. به این سطح دسترسی خواندن و اجرا (Read & Execute) گفته میشود.
- 6: گروه کاربری مورد نظر قادر به خواندن و نوشتن فایل یا دایرکتوری موردنظر است. به این سطح دسترسی خواندن و نوشتن (Read & Write) گفته میشود.
- 7: بالاترین سطح دسترسی همین مقدار است. در این حالت سطح کاربری مدنظر بالاترین میزان دسترسی به فایل یا دایرکتوری تعیین شده را دارد و عملا میتواند هر تغییری را در این فایل اعمال کند یا حتی دایرکتوری یا فایل را به صورت کامل حذف کند!
بررسی Permission فایلها و دایرکتوریهای سایت وردپرسی
برای اینکه بتوانید مفهوم سطحی دسترسیهای مختلف را بهتر درک کنید، وردپرس خام را بر روی یک هاست نت افراز نصب کردهایم و تصمیم داریم که بخشی از Permission های فایلها و دایرکتوریهای وردپرس را بررسی کنیم.
همانطور که در تصویر بالا قابل مشاهده است، به خاطر اهمیت زیاد Permission فایلها و دایرکتوریها، میتوانید سطح دسترسی هر فایل یا دایرکتوری را در کنار آن مشاهده کنید. همچنین مالک (Owner) که همان نقش کاربری User است را هم در کنار نقش کاربری Group تعیین شده برای هر فایل یا دایرکتوری میتوانید ببینید.
سطح دسترسی پوشههای اصلی وردپرس برابر با 755 تعریف شده است. که مطابق با تصویر زیر هستند:
با این سطح دسترسی، مدیر سرور دسترسی کامل به محتوای هر دایرکتوری دارد و سایرین تنها میتوانند محتوای پوشه را بخوانند یا محتوای داخل آن را اجرا کنند. به جز مدیر سرور، هیچ سطح کاربری دیگری قادر به ویرایش محتوای دایرکتوریهای اصلی وردپرس نیست. بد نیست اشاره کنم که در هاستهای نت افراز و در حقیقت، اکثر هاستهای دنیا، پرمیشن پیشفرض و بهترین Permission برای دایرکتوریها همین مقدار 0755 است که در برخی پنلهای کاربری به صورت 755 هم نمایش داده میشود.
فایل wp-config.php یکی از مهمترین فایلهای موجود در هاست هر سایت وردپرسی است. این فایل پرمیشن 640 دارد که جزئیات آن مطابق با تصویر زیر است:
بر اساس این پرمیشن، تنها مدیر سرور قادر به خواندن و نوشتن این فایل است و هیچ سطح کاربری دیگری قادر به ویرایش آن نیست. این فایل در سایتهای وردپرسی دربرگیرنده اطلاعات دیتابیس، اکانت ftp و برخی دیگر از مهمترین اطلاعات سایت است. از همین رو باید در امنترین حالت ممکن نگهداری شود و علاوه بر تعیین Permission صحیح، با روشهای دیگری هم امنیت آن ارتقا یابد.
اکنون که با قواعد بررسی سطح دسترسی فایلها و دایرکتوریها آشنا شدید و میتوانید با نگاه به ارقام Octal یک پرمیشن، سطح دسترسی هر گروه کاربری را تشخیص دهید، وقت آن رسیده که به سراغ آموزش تغییر سطح دسترسی (Permission) فایلها و دایرکتوریها در پنل دایرکت ادمین برویم.
تغییر Permission فایلها یا دایرکتوریها در پنل دایرکت ادمین
پیش از هر چیز، لازم است اشاره کنم که فرآیند تغییر سطح دسترسی فایلها و دایرکتوریها در پنل دایرکت ادمین کاملا مشابه با یکدیگر است. تنها تفاوت این مسیر، قواعدی است که باید برای هرکدام در نظر بگیرید.
به صورت پیش فرض و بر اساس قواعد امنیتی تعریف شده در بستر شبکه، هر فایلی که شما در هاست اشتراکی خود ایجاد میکنید، پرمیشن 644 و هر دایرکتوری که ایجاد میکنید، پرمیشن 755 میگیرد. این مقادیر ممکن است در زمانهای مختلف نیاز به تغییر داشته باشد، اما در حالت عادی بهترین سطح دسترسی برای فایلها و دایرکتوریها همین مقادیر است؛ مگر در مواردی که از ابتدا در سطح سیستم مقادیر دیگری برای آن تعریف شده باشد.
برای بررسی نحوه تغییر Permission فایلها، به سراغ همان فایل تستی (netafraz.txt) که در ابتدای این نوشته ایجاد کردیم، خواهیم رفت. بر روی این فایل کلیک راست میکنیم و سپس بر روی گزینه Change Permissions کلیک میکنیم. با این کار پنجره جدیدی برای ما باز خواهد شد که امکان تغییر پرمیشنهای فایل را در اختیار ما قرار میدهد. نکته قابل توجه اینجاست که اگر به مقدار Octal این فایل توجه کنید، میبینید که به صورت پیش فرض برای آن مقدار 644 تعریف شده که مطابق با بند قبلی همین نوشته است.
اکنون میخواهیم یک تغییر تستی بر روی این فایل ایجاد کنیم و ببینیم که چه اتفاقی میافتد. برای مثال، من تیک گزینه Read برای سطح کاربری Other را خاموش میکنم. با این کار گروه کاربری Other دیگر قادر به خواندن این فایل نیست و مقدار Octal به 640 تغییر میکند. نهایتا با کلیک بر روی گزینه OK تغییرات خودم را نهایی میکنم. اکنون این فایل را از طریق دامنه فراخوانی میکنم. برای این کار کافیست که اسم فایل را پس از دامنه خود بیاورید. به عنوان مثال، اگر دامنه شما abc.com باشد، باید به شکل زیر اقدام کنید:
abc.com/netafraz.txt
چنانچه تنظیمات Permission این فایل را بر روی مقدار گفته شده (640) قرار داده باشید، اکنون با فراخوانی این فایل، با خطای Forbidden رو به رو میشوید.
همانطور که در تصویر هم قابل مشاهده است، به صراحت در زیر این خطا اشاره شده که شما دسترسی لازم برای خواندن این فایل را ندارید.
اکنون بازمیگردیم و سطح دسترسی این فایل را بر روی مقدار پییش فرض 644 تنظیم میکنیم. یعنی تیک گزینه Read برای گروه کاربری Other را مجدد روشن میکنیم و سپس فایل را دوباره فراخوانی میکنیم. در این حالت چنانچه هیچ متنی را در فایل txt خود ننوشته باشید، با یک صفحه سفید روبهرو خواهید شد. من یک متن دلخواه داخل فایل netafraz.txt مینویسم و آن را فراخوانی میکنم. نتیجه درست این است که متن دلخواه من در صفحه وب نمایش داده شود. برای نوشتن متن هم تنها کافیست که بر روی این فایل دوبار کلیک کنید و متن دلخواه خود را تایپ کنید.
همانطور که میبینید، متنی که من در فایل نوشتم، برای من به نمایش در میآید.
این یک مثال ساده برای این بود که بتوانید متوجه اهمیت تغییرات اعمالی خود در سطح سرور شوید. هر تغییر ممکن است یک دسترسی پیشین را از بین ببرد و یا یک دسترسی جدید ایجاد کند.
نهایتا باید اشاره کنم که دو اصل مهم را هیچ موقع در زمان تغییر پرمیشن فایلها و دایرکتوریهای خود فراموش نکنید:
- سطح دسترسی گروه کاربری User (مدیر سرور) همواره باید بیشتر از سایر گروههای کاربری باشد و بزرگترین عدد در 3 رقم Octal را شامل میشود.
- سطح دسترسی 777 یا 0777، بهندرت به یک فایل یا دایرکتوری داده میشود. تقریبا میتوان گفت که این سطح دسترسی به هیچ فایل یا دایرکتوری در سمت سرور داده نمیشود! این سطح دسترسی به این معناست که هر کاربری میتواند هرگونه تغییری را در یک فایل یا دایرکتوری اعمال کند. در زمان تغییر سطح دسترسیها توجه داشته باشید که این مقدار Octal برای هیچ فایل یا دایرکتوری تعریف نکنید.
پرمیشن فایلها و دایرکتوریهای هاست دانلود
مسلما سطح دسترسی فایلهای موجود در هاست دانلود با فایلهای موجود در هاست میزبان سایت متفاوت است. نکته مهم اینجاست که سطح دسترسی فایلهای دانلودی موجود در هاست دانلود باید به گونهای تنظیم شود که در برخی شرایط امکان دانلود آنها فراهم باشد و در برخی شرایط قابل دانلود نباشند.
مثل سایتهای فروش فایل یا دوره آموزشی که برخی فایلهای خود را به صورت رایگان عرضه میکنند و برخی دورهها را به فروش میرسانند. مسلما فایلهای رایگان باید برای همه قابل دانلود باشند و فایلهای فروشی باید تنها توسط خریداران قابل دانلود باشند. نحوه پیاده سازی این سیستم، جدا از کدنویسی سایت، ارتباط قابل توجهی هم با کانفیگ هاست دانلود دارد.
تنظیم پرمیشنهای فایلها و دایرکتوریهای هاست دانلود، نیاز به دانش بالایی دارد و عمدتا هم در سمت سرور تنظیم میشود که خریداران هاستهای اشتراکی، دسترسی مستقیمی به آنها ندارند.
ما در نت افراز، اقدام به تامین هاستهای دانلود متنوعی در قالب هاست دانلود فرانسه و هاست دانلود ایران نمودهایم که کانفیگ این سرورها متناسب با جدیدترین آپدیتهای امنیتی روز دنیا صورت گرفته و میتواند میزبانِ امانتداری برای فایلهای ارزشمند شما باشد. چنانچه برای فایلهای سایت خود نیاز به یک هاست دانلود دارید و میخواهید ذهن خود را درگیر مسائل امنیتی، دیوار آتش، از دست رفتن فایلها، پرمیشنها و… نکنید، پیشنهاد میکنم که با خرید هاست دانلود نت افراز، این سرویس را امتحان کنید و تبدیل به یکی از همراهان همیشگی نت افراز شوید!
سخن پایانی و خلاصه مقاله
در این مقاله از نت افراز بلاگ، به توضیح سطح دسترسی فایلها در لینوکس و آموزش تغییر سطح دسترسی (Permission) فایلها و دایرکتوریها در پنل دایرکت ادمین پرداختیم.
به طور ساده در سیستم عامل لینوکس، “سطح دسترسی” وظیفه کنترل مجوزها، ویژگیها و مالکیت فایلها و دایرکتوریها را دارد. بنابراین این موضوع را تضمین میکند که فقط کاربران و فرآیندهای مجاز میتوانند به فایلها و دایرکتوریهای خاصی دسترسی داشته باشند.
معمولا در سیستمهای هاستینگ لینوکسی، سطح دسترسی استاندارد برای فایلها 644 و برای دایرکتوریها 755 تنظیم میشود. سطح دسترسیهای دیگر مانند 777 به شدت وبسایت شما را به خطر میاندازد. زیرا هکرها از این مسئله بهره برده و میتواند کدها و فایلها را مشاهده و بازنویسی کرده و کدهای مخرب خود را نیز به فایلها اضافه کنند. پس همیشه در تعیین سطح دسترسی صحیح برای فایلها و دایرکتوریهای وبسایت خود، دقت کافی را داشته باشید تا با مشکل امنیتی در وبسایت خود مواجه نشوید.
تنظیم سطح دسترسی صحیح بر روی فایلها و دایرکتوریهای هاست شما، جدا از حفظ امنیت باعث اجرای صحیح فایلها و کدهای شما خواهد شد. به عنوان مثال در یک هاستینگ لینوکسی، اگر سطح دسترسی یک فایل اصلی را روی 0400 تنظیم کنید، به احتمال زیاد با خطاهایی مانند خطای 500 و Internal Server Error یا صفحه سفید مواجه خواهید شد. البته نوع خطا و سازگاری، به کانفیگ و پیکربندی PHP سرور شما بستگی دارد که توسط شرکت میزبان سایت شما سرور به چه صورت کانفیگ و تنظیم شده باشد.
همچنین گاها کارکرد اسکریپتهای مختلف روی هاست شما کاملا وابسته به تنظیمات صحیح سطح دسترسی برای فایلها و پوشههای سایت شما خواهد داشت. مثلا یک اسکریپت آپلود کننده فایل برای آپلود حتما نیاز به تنظیم صحیح سطح دسترسی دایرکتوری دارد. در غیر این صورت، آپلود فایل را بدرستی انجام نخواهد داد و با خطا مواجه خواهد شد. پس اهمیت تنظیمات صحیح سطح دسترسی در هاست شما بسیار قابل توجه است.
توجه داشته باشید که تغییر پیشبینی نشده پرمیشنها و توجه نداشتن به سطح دسترسی فایلها و دایرکتوریها میتواند سبب بروز مشکلاتی در سایت شما شود و یا امنیت سایت شما را کاهش دهد. سعی کنید که پیش از اعمال هر تغییر در سطح دسترسی فایلها و دایرکتوریهای سایت خود، بررسی کنید که پس از اعمال تغییر، چه بر سر دسترسی گروههای کاربری مختلف خواهد آمد تا یک دسترسی به اشتباه گرفته نشود و یا یک دسترسی اشتباها به گروهی داده نشود.
نهایتا امیدواریم که از این نوشته بهره کافی را برده باشید. هدف ما در تیم نت افراز، پاسخگویی به سوالات و برطرف کردن مشکلات اولیه شماست. پس چنانچه سوالی در رابطه با این نوشته دارید، از طریق بخش ارسال نظرات در پایین این صفحه با ما در ارتباط باشید.
موفقیت همراه راهتان باد.