مقوله امنیت در راه اندازی انواع سایت ها از اهمیت ویژه ای برخوردار هست، تا جایی که بسیاری از مدیران سایت ها هزینه های هنگفتی را بابت تامین امنیت پایگاه خودشان متقبل می شوند. به زبان عامیانه یکی از پایه های امنیت سایت از یک سو کدنویسی صحیح و اصولی و از سوی دیگر دسترسی صحیح و منطقی به پرونده ها و پوشه های سایت می باشد.
در این آموزش قصد ما این است که سطوح دسترسی لینوکس برای ایجاد دسترسی به پوشه ها و پرونده های سایت را مقداری برای شما توضیح دهیم، پس با ما باشید!
یکی از موارد خیلی مهم برای کسانی که سایت طراحی می کنند امنیت سایت می باشد، چون سروری که برای سایت هایی که با PHP طراحی می شوند اکثرا سرور لینوکس است لازم هست که در مورد پرمیشن ها یا مجوزهای دسترسی لینوکس به پرونده ها و پوشه ها بیشتر بدانید چون کل امنیت لینوکس به این مجوزها وابسته هست.
مسلماً اگه مجوزها مناسب نباشند می تواند برای سیستم خطرناک باشد و هاست ناامن مساوی ست با دسترسی هکرها و در نتیجه از دست رفتن سایت. ما ۳ سطح دسترسی لینوکس داریم :
- Read : توانایی خواندن
- Write : توانایی نوشتن و ایجاد تغییرات
- Execute : توانایی اجرای فایل
و ۳ گروه دسترسی لینوکس داریم :
- Owner : مالک یا ادمین
- Group : افراد عضو گروه یا اعضای گروه که در سایت عضو هستن
- Public : دیگران یا سایر بازدیدکنندگان
در واقع اعدادی که برای مجوزها نوشته می شود در مبنای هشت هستند. رقم های اول و دوم و سوم (از چپ به راست) مجوز owner و group و Public را مشخص می کنند. هر کدام از این سه رقم را که به مبنای دو برده شود یک عدد سه رقمی در مبنای دو می شود که رقم اول و دوم و سومش (از چپ به راست) مجوز Read و Write و Execute را مشخص می کند.
حالا بیاید ۷۷۷ را معنی کنیم:
owner 7 = 4 + 2 + 1 = read + write + execute
group 7 = 4 + 2 + 1 = read +write + execute
others 7 = 4 + 2 + 1 = read +write + execute
و این همان چیزیست که در کنترل پنل هاست جلوی فایل ها و فولدرها نمایش داده می شود .
یک نکته بسیار مهم : مراقب باشید مجوز ۷۶۶ اصلاً جالب نیست، چون به Group و Public اجازهٔ هر کاری را می دهد اما به خود Owner فایل، مجوز اجرا نمی دهد !! اینچنین مجوزی هیچ جا بکار نمی رود شما هم در هنگام کار با مجوزها مواظب باشید اشتباهی همچین مجوزی صادر نکنید !!! همین اشتباه را درباره مجوز ۶۶۶ هم مرتکب نشوید.
توضیح بیشتر: فرض کنید که برای همه پرونده ها و پوشه های سایت، مجوز ۷۷۷ را تعیین کردیم. باید بگویم بازدیدکنندگان عادی سایت شما فقط امکانات و اینترفیس وبی را که شما در سایت در اختیارشان گذاشته اید در اختیار دارند، بنابراین از این طریق نمی توانند کاری کنند. اما تعیین مجوز ۷۷۷ می تواند از جهات دیگری خطرناک باشد یعنی اگر کسی سایت شما را هک کند و بتواند فرامین دلخواهش را با PHP اجرا کند، مجوز ۷۷۷ به او کمک می کند که به چیزهای خیلی بیشتری دسترسی نامحدود داشته باشد و در مورد تمام فایلها و دایرکتوری ها بتواند محتویات آنها را بخواند، حذفشان کند، یا محتویاتشان را دستکاری کند و شاید اینطور بتواند هک شدن سایت را خیلی راحتتر پنهان کند و تا مدتها از سایت و کاربران شما سوء استفاده کند، بطور مثال می تواند محتویات فایلهای PHP شما را دستکاری کند و مثلا کدهای جاسوسی در آنها کار بگذارد. بنابراین هرجا فقط مجوزهایی را که واقعا لازمست تنها در مورد فایلها و دایرکتوری هایی که لازم هست اعمال کنید.
فقط هم بحث بازدیدکنندگان نیست، امکان دارد صاحبان سایت های دیگر روی سرور اشتراکی شما که هم اکانت و دسترسی به نرم افزارها و سرویسهای سرور را دارند، بتوانند کارهای خیلی بیشتری کنند. دسترسی به فایلهای شما هم لزوما فقط از طریق PHP ممکن نیست که بگوییم مثلا تنظیم open_basedir جلوی دسترسی آنها را می گیرد، بلکه از روش ها و نرم افزارهای دیگری هم می تواند باشد و ممکنست تنظیمات امنیتی لازم در مورد آن سرویس ها درست انجام نشده باشد. مثلا طرف می تواند یک برنامه اجرایی واقعی را روی سرور اجرا کند و شاید بتواند از طریق آن برنامه خیلی محدودیت ها را دور بزند.
اینجا اگر پرمیشن های شما ۷۷۷ باشد مسلما ریسک خیلی بالاتری برای جاسوسی و دستکاری و پنهان کاری وجود دارد .پس باز هم تکرار می کنم فقط مجوزهایی را که واقعا لازمست تنها درمورد فایلها و دایرکتوری هایی که لازم هست اعمال کنید. به کلام دیگر …هر فایل یا پوشه در اینترنت یک سطح دسترسی دارد .
بخشهای اصلی سطوح دسترسی لینوکس
قاعدتا شما نمی خواهید تمام افراد به تمام فایل ها و پوشه های سایت شما دسترسی داشته باشند. سطح دسترسی یا پرمیشن (Permission) از دو بخش اصلی تشکیل شده است :
- گروه کاربری
- مجوز استفاده
گروه کاربری
از دید سرور سایت شما، سه گروه کاربری وجود دارد:
- اولی User یا در بعضی موارد Owner است. این گروه کاربری یعنی خود شما. یا به عبارتی کسی که با نام کاربری و رمز عبور وارد Cpanel شده است و یا اینکه با یک نام کاربری FTP یا Web Disk به پوشه های سایت دسترسی دارد .
- گروه دوم Group است، که شامل گروه کاربرانی است که به سایت شما دسترسی دارند، که در اینجا Cpanel شما فقط یک نام کاربری و رمز عبور دارد که خود شما هستید. به عبارتی در اینجا Group تقریبا شامل هیچ کس نمی شود!
- و اما گروه سوم که World یا Public است. این گروه یعنی تمام کسانی که به اینترنت دسترسی دارند .حال شما باید برای هر کدام از این سه گروه مجوز استفاده صادر کنید .
مجوز استفاده
همانطور که قبلاً هم بیان شد، سه مجوز استفاده وجود دارند :
Read یا قابلیت خوانده شدن اگر Read را برای یکی از سه گروه بالا فعال کنید آن گروه اجازهی خواندن فایل یا پوشه ی مورد نظر را دارد . ارزش رقمی خواندن ۴ است (در این باره توضیح داده خواهد شد).
Write یا اجازه ثبت تغییرات که اگر این مجوز به یکی از سه گروه بالا داده شود آن گروه اجازهی تغییر در فایل یا پوشه ی مورد نظر را دارند . ارزش رقمی ثبت تغییرات ۲ است.
Execute یا اجازهی اجرای فایل که اگر این مجوز به یکی از سه گروه بالا داده شود آن گروه اجازهی اجرا در فایل یا پوشه ی مورد نظر را دارند . ارزش رقمی اجرای فایل ۱ است.
ارزش های رقمی در زیر نمایش داده شده اند. هرکدام از این مجوزها یک ارزش رقمی دارند. که ارزش رقمی کل برای یک گروه از جمع این سه عدد به دست می آید.
برای مثال اگر به گروه User ۱ خواهد بود. +۲+۱ هر سه مجوز را بدهید، سطح دسترسی برای این گروه معادل عدد ۷ خواهد بود یا اگر به همین گروه فقط اجازه ی خواندن و ثبت تغییرات بدهیم، سطح دسترسی این گروه معادل ۶.
سطح دسترسی کل: یک عدد سه رقمی است که از کنار هم قرار گرفتن سطح دسترسی سه گروه User ، Group و World به دست می آید .برای مثال سطح دسترسی ۶۱۱ برای یک فایل یعنی خود شما اجازه ی خواندن و ثبت تغییرات در آن فایل را دارید، Group و سایر افراد در اینترنت فقط اجازه ی خواندن این فایل را دارند. تنظیم سطح دسترسی پوشه ها و فایل های سایت خیلی مهم است. زیرا با اشتباه در این امر ممکن است به هکرها اجازه ی نفوذ به بخش های اصلی سایت خود را بدهید و یا اینکه به کل یک پوشه یا فایل را از دسترس همه، حتی خودتان خارج کنید!.
اگر سطح دسترسی یک فایل را معادل ۰۰۰ تعیین کنید دیگر فقط می توانید آنرا حذف کنید! حتی اجازه ی اینکه سطح دسترسی آن را دوباره عوض کنید نخواهید داشت! در کل به طور خلاصه معنی سطح های دسترسی عمومی این است :
برای پرونده ها ۵۰۰۰ هیچ کس هیچ نوع دسترسی به این فایل ندارد و فقط خود شما می توانید حذفش کنید . ۵۰۰۰ به جز شما هیچ کس به این فایل دسترسی ندارد .
o۰۴۴ شما اجازه ی کار با این فایل را دارید و دیگران فقط می توانند آن را اجرا کنند .o۰۰۰ یک حالت خاص که بعضی فایلها را از دسترس نرم افزارهای نصب شده روی سایت خارج می کند .o۶۰۰ همه ی افراد همه نوع دسترسی به این فایل دارند. این سطح دسترسی فقط برای حالتهای خاص است !
برای پوشه ها ۵۰۰۰ هیچ کس هیچ نوع دسترسی به این پوشه ندارد .o۰۴۴ هیچ کس به جز شما اجازه ی دسترسی به این پوشه را ندارد و حتی فایل ها و پوشه های داخل این پوشه نیز قابل دسترسی نخواهند بود .o۶۱۱ شما کامل به این پوشه دسترسی دارید و بقیه فقط می توانند به فایل ها و پوشه های داخل این پوشه دسترسی داشته باشند. یعنی اگر فقط به آدرس این پوشه مراجعه شود خطای ۴۰۴ صادر می شود. یعنی دسترسی مستقیم به این پوشه امکان پذیر نیست .o۶۷۷ شما کامل به این پوشه دسترسی دارید و بقیه هم به طور کامل به این پوشه دسترسی دارند. حتی اگر فقط آدرس این پوشه را وارد نمایند و فایل index در این پوشه موجود نباشد، لیست فایل ها و پوشه هایی را که در این پوشه قرار دارند برایشان نمایش داده خواهد شد !o۶۶۶ همه ی افراد همه نوع دسترسی به این پوشه دارند. این سطح دسترسی فقط برای حالتهای خاص است !
و اما پیشنهاد ما به شما بهترین سطح دسترسی برای فایلهای شما ۶۱۱ و برای پوشههای شما ۷۱۱ است . البته برای بعضی از CMS ها لازم است سطح دسترسی پوشهها ۷۷۷ باشد .
سلام
در مورد سطح دسترسی های عددی که مثال زدید به کرات اشتباه توضیح دادید که باعث سردرگمی و درک اشتباه برای افراد تازه کار میشه
سلام.
وقت بخیر.
ممنون از توجه شما. لطفا در صورت امکان اشتباهات رو ذکر بفرمایید.
با تشکر.