سطوح دسترسی به فایل در UNIX و امنیت سایت

15 مرداد 1398
سطوح دسترسی به فایل در UNIX و امنیت سایت

سطح دسترسی در Unix و امنیت سایت

سیستم عامل Unix یکی از سیستم عامل های محبوب و بسیار امن است؛ نه تنها distro های لینوکس بلکه Mac OS X نیز روی آن اجرا می شود. یکی از مهم ترین ویژگی های امنیتی سیستم عامل Unix مبحث سطح دسترسی فایل ها (file permission) است. شما می توانید با استفاده از این سطوح دسترسی تعیین کنید که چه کسی می تواند فایلی را بخواند، چیزی در آن بنویسد و یا فایلی را اجرا کند.

بنابراین اگر از سایت وردپرسی استفاده می کنید یا سرور لینوکسی دارید از این آموزش بسیار لذت خواهید برد. اکثر شرکت های میزبانی (hosting) به کاربران خود اجازه می دهند که Unix file permission ها را از طریق cPanel تغییر دهند تا بتوانند از فایل ها و دایرکتوری های مهم محافظت کنند. بنابراین بهتر است شروع کنیم!

مالکیت فایل

مهم ترین نکته ای که همه باید بدانیم این است که Unix به همه چیز به چشم فایل نگاه می کند؛ در سیستم های Unix نه تنها فایل ها بلکه پوشه ها و دستگاه ها نیز فایل به حساب می آیند و Unix به آن ها سه سطح مالکیت می دهد:

  • User (کاربر)
  • Group (گروه)
  • Other (غیره)

شما باید تعیین کنید که هر کدام از این گروه ها چه سطح دسترسی خواهند داشت:

1. USER: کاربر یا user همان فردی است که فایل را ساخته است. هر فردی که در سیستم های unix فایلی بسازد به صورت خودکار صاحب آن فایل خواهد بود و این سطح دسترسی به او تعلق می گیرد.

2. GROUP: گروه یا GROUP معمولا بیشتر از یک کاربر را شامل می شوند. زمانی که می خواهید سطح دسترسی خاصی را به گروهی از کاربران بدهید از GROUP استفاده می کنید. به طور مثال می توانید به افراد یک گروه اجازه بدهید (یا بالعکس اجازه ندهید) که بتوانند یک فایل را بخوانند، در آن چیزی بنویسند یا با یک خط کد چیزی را اجرا کنند.

3. OTHER: غیره (OTHER) یعنی بقیه ی کسانی که می توانند به فایل دسترسی داشته باشند. از نظر UNIX این دسته از کاربران مالکان سوم فایل هستند که می توانید برایشان سطح دسترسی جداگانه تعیین کنید. افرادی که در این دسته قرار میگیرند نه فایل را ساخته اند و هم‌گروه فردی هستند که فایل را ساخته است.

سطح دسترسی

هر فایلی در سیستم های Unix سه نوع سطح دسترسی دارد:

  • Read (خواندن فایل)
  • Write (نوشتن در فایل)
  • Execute (اجرای فایل)

سطح دسترسی در هر کدام از این موارد به صورت جداگانه تعیین می شود و شما می توانید با آن ها به سه گروه ذکر شده (کاربر، گروه و غیره) سطح دسترسی بدهید تا امنیت فایل ها بیشتر حفظ شود.

1. READ: دسترسی READ (با علامت R) به کاربران اجازه می دهد که فایلی را باز کرده یا بخوانند. در این سطح کاربر می تواند محتویات فایل را بخواند اما نمی تواند آن را ویرایش کند. زمانی که این سطح دسترسی به یک دیرکتوری (پوشه) داده شود کاربر می تواند محتوا را لیست کند اما نمی تواند آن را ویرایش یا حذف کند.

2. WRITE: دسترسی WRITE (با علامت W) به کاربر اجازه ی ویرایش محتوای یک فایل را می دهد. زمانی که این سطح دسترسی برای یک دیرکتوری تعیین شود کاربر می تواند تمامی فایل های داخل آن دایرکتوری را تغییر نام داده و ویرایش یا حذف کند.

3. EXECUTE: این سطح دسترسی (با علامت X) به کاربر اجازه می دهد که فایلی را به عنوان یک برنامه اجرا کند. این سطح دسترسی زمانی معنا پیدا می کند که سر و کار ما با فایل های قابل اجرا (مانند اسکریپت ها) باشد. برخلاف ویندوز، Unix به هر کسی اجازه ی اجرای برنامه ها را نمی دهد مگر آنکه سطح دسترسی EXECUTE داشته باشند.

ترکیب مالکیت و سطح دسترسی

Unix روش خوبی برای دریافت سطوح دسترسی فایل ها دارد؛ کافی است terminal را باز کرده و به دایرکتوری مورد نظرتان بروید، سپس از دستور cd استفاده کنید. به طور مثال اگر می خواهید وارد دیرکتوری به نام etc را شوید باید دستور زیر را وارد کنید:

cd etc

زمانی که داخل دیرکتوری شدید برای لیست کردن محتوای آن از دستور زیر استفاده کنید:

ls -la

همانطور که در تصویر زیر نشان داده ام، این دستور تمام فایل ها را به همراه سطوح دسترسی Unix آن ها مشخص می کند:

سطوح دسترسی در ترمینال Unix
سطوح دسترسی در ترمینال Unix

داخل ترمینال من رنگ دیرکتوری ها آبی و رنگ فایل ها سفید است اما ممکن است در ترمینال شما رنگ ها فرق کند. در اولین ستون از سمت چپ می توانید سطوح دسترسی را ببینید؛ به طور مثال drwxr-xr-x یک سطح دسترسی است. این سطوح دسترسی بر اساس قوانین زیر ساخته می شوند:

  • کاراکتر اول: دیرکتوری (d) یا فایل (-)
  • کاراکتر های دوم، سوم و چهارم: سطوح دسترسی USER (به ترتیب Read با علامت R و Write با علامت W و Execute با علامت X)
  • کاراکتر های پنجم، ششم و هفتم: سطوح دسترسی GROUP (به ترتیب Read با علامت R و Write با علامت W و Execute با علامت X)
  • کاراکتر های هشتم، نهم و دهم: سطوح دسترسی OTHER (به ترتیب Read با علامت R و Write با علامت W و Execute با علامت X)

زمانی که مالکان یک فایل سطح دسترسی خاصی نداشته باشند، Unix از علامت استفاده می کند. به طور مثال سطح دسترسی drwxr-xr-x به معنای زیر است:

  • d همان دیرکتوری است (گفتیم که دیرکتوری ها نیز فایل محسوب می شوند).
  • rwx یعنی USER می تواند عملیات های Read و Write و Execute را انجام دهد.
  • r-x یعنی GROUP می تواند Read و Execute را انجام دهد اما نمی تواند آن را Write کند.
  • r-x یعنی OTHER می تواند فایل را Read و Execute کند اما نمی تواند آن را Write کند.

حالت Numeric (عددی)

به غیر از حالت عادی (استفاده از حروف rwx) حالت عددی نیز وجود دارد. این مسئله مهم است چرا که در cPanel از حالت عددی استفاده می شود (terminal هم حالت عددی را قبول می کند). اعداد آن از این قرار هستند:

  • عدد 4 مساوی با r یا همان Read است.
  • عدد 2 مساوی با w یا همان Write است.
  • عدد 1 مساوی با x یا همان Execute است.

به طور مثال:

  • 444 یعنی صاحب فایل می تواند Read کند، GROUP می تواند Read کند و OTHER هم می تواند Read کند.
  • 644 یعنی صاحب فایل می تواند Read و Write کند (6=2+4)، GROUP می تواند Read کند و OTHER هم می تواند Read کند.
  • 644 یعنی صاحب فایل می تواند Read و Write کند (6=2+4)، GROUP نمی تواند هیچ کاری کند و OTHER هم می تواند Read کند.
  • 777 یعنی صاحب فایل می تواند Read و Write و Execute کند (7=1+2+4)، GROUP می تواند Read و Write و Execute کند (7=1+2+4) و OTHER نیز می تواند Read و Write و Execute کند (7=1+2+4). این سطح دسترسی به همه دسترسی های ممکن را می دهد بنابراین ممکن است خطرناک باشد.

اکثر سیستم های مدیریت محتوا (CMS) از همان سطوح دسترسی استفاده می کنند که روی وب سایت باشد. به طور مثال وردپرس از 755 و 644 استفاده می کند.

تغییر سطوح دسترسی از CPanel

اگر وارد CPanel و محیط مدیریتی خود شوید و سپس به File Manager بروید می توانید انواع سطوح دسترسی را ببینید. تصویر زیر از یک سایت وردپرسی است که سطوح دسترسی را در سمت راست تصویر دارد:

تصویری از سطوح دسترسی در یک سایت
تصویری از سطوح دسترسی در یک سایت

همانطور که می بینید وردپرس برای فایل های اصلی از سطوح 755 و 644 استفاده می کند. در تصویر بالا فایل htaccess. را روی 404 قرار داده ایم چرا که از حالت پیش فرض (644) امن تر است. البته محدود کردن دسترسی فایل htaccess. ممکن است باعث بروز مشکلاتی در بعضی از سرورها بشود. شما باید خودتان امتحان کنید و امن ترین حالت را پیدا کنید. اگر سطح 404 باعث خطا شد از سطح 444 استفاده کنید.

برای تغییر این سطوح دسترسی کافی است روی فایل راست کلیک کرده و گزینه ی Change Permissions را پیدا کنید:

مثالی از تغییر سطح دسترسی برای یک فایل (از CPanel)
مثالی از تغییر سطح دسترسی برای یک فایل (از CPanel)

استفاده از دستور CHMOD

یکی دیگر از راه های تغییر سطح دسترسی از طریق دستور chmod در ترمینال است. ابتدا با همان دستور cd به دایرکتوری مورد نظر خود بروید و دستور زیر را در آن تایپ کنید:

chmod 644 [yourfile]

این کد سطح دسترسی را به 644 تغییر می دهد. البته اگر مالک فایل نیستید باید از دستور Sudo نیز استفاده کنید:

sudo chmod 644 [yourfile]

اگر می خواهید سطح دسترسی تمام فایل ها و پوشه های یک دیرکتوری را تغییر دهید کافی است از دستور R- استفاده کنید:

sudo chmod 644 -R [yourdirectory]

امیدوارم از مقاله سطح دسترسی در UNIX و امنیت سایت استفاده کرده باشید.

نویسنده شوید
دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

ررضا
24 آبان 1399
با سلام واقعا سایت روکسو عالی هست و همچنین ممنون از اقای مسعود صالحی با این عالی من کلا نزدیک 2میلیون هزینه ی تمام فیلم های روکسو را کرده ام وا حاضرم بیشتر هم بدم تا اموزش های بیشتری وکامل بزارین مثل زبان jquery,sql server,laravel8,

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

هادی
01 مهر 1398
سایتتون اونقد خوبه که من موندم چی بگم. واقعا توی زمینه هایی که اموزش دادید علم دارید من چنین سایتی با این سطح از اطلاعات و به روز بودن رو جایی ندیدم. واقعا تشکر میکنم ازتون که بسیاری از دوره هاتون رایگان هستن. بسیاری از سوالاتی که مدتها ذهن منو مشغول کرده بود رو همش از سایت شما یه جا پیدا کردم تشکر و سپاس فراوان

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
03 مهر 1398
سلام دوست عزیز، نظر لطف شماست. ما سعی میکنیم توی روکسو از بهترین منابع و بروزترین مطالب استفاده کنیم و اونها رو با تجربیات خودمون ترکیب کنیم تا بهترین نتیجه رو به دست بیاریم و خیلی خوشحالم که مقالات تونستن به شما کمک کنن.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مریم
24 شهریور 1398
من همیشه این دسترسی ها رو توی سرور میدیدم ولی نمیدونستم چیه حالا تازه فهمیدم!

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امیر زوارمی
26 شهریور 1398
سلام دوست عزیز، بله آشنایی با این Permission ها با اینکه ساده است اما خیلی هم مهمه!

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مقالات مرتبط
ما را دنبال کنید
اینستاگرام روکسو تلگرام روکسو ایمیل و خبرنامه روکسو