محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

معرفی سطوح دسترسی ( Pemission ) ها در لینوکس به زبان ساده

ساختار اولیه و مقدماتی امنیت در سیستم عامل لینوکس بر اساس سطوح دسترسی یا Permission هایی است که بر روی فایل ها قرار می گیرند. لینوکس یک سیستم عامل چند کاربره است و همه دایرکتوری ها و فایل هایی که در داخل آن وجود دارند ممکن است برای همه قابل دسترس باشد ، به همین منظور برای محافظت از آنها در برابر دسترسی های غیرمجاز از Permission ها استفاده می کنیم. هر دایرکتوری یا فایل در سیستم عامل لینوکس دارای یک سری سطوح دسترسی است که نمایانگر کارهایی است که کاربر مورد نظر ما می تواند بر روی فایل یا دایرکتوری مورد نظر انجام بدهد ، سطوح دسترسی یا Permission در لینوکس بصورت کلی به سه نوع حساب یا Account اعمال می شود :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  1. مالک یا Owner : حساب یا Account ای که مالک فایل است ( ایجاد کننده یک فایل همیشه مالک آن است )
  2. گروه یا Group : اعضای گروهی که مالکیت فایل مورد نظر را بر عهده دارند
  3. world یا تمامی کاربرن دیگری که در سیستم عامل لینوکس قرار دارند ، چیزی معادل everyone در ویندوز

کاربران در سیستم عامل لینوکس می توانند دسترسی های زیر را داشته باشند :

  1. خواندن یا read : مجوز خواندن محتویات یک فایل است
  2. نوشتن یا write : مجوز ذخیره کردن اطلاعات بر روی فایل مورد نظر و قرار دادن آن بر روی دیسک است
  3. اجرا کردن یا Execute : مجوز اجرا کردن یک فایل یا وارد شدن به یک دایرکتوری است

Permission ها می توانند بصورت ترکیبی به هر روشی اعمال شوند ، برای مثال اگر شما فایل itpro.txt را در نظر بگیرید می توانید به شکل زیر به این فایل دسترسی بدهید :

  1. مالک یا owner : read,write,execute
  2. گروه یا group : read,execute
  3. all users : read

با توجه به دسترسی های بالا ، مالک یا owner می تواند فایل را باز کند ، آن را بخواند ، بر روی آن اطلاعاتی اضافه یا حذف کند و اگر فایل اجرایی باشد می تواند آن را اجرا کند. اعضای گروه ها می توانند فقط فایل مورد نظر را بخوانند و آن را اجرا کنند و در نهایت باقی کاربرانی که در لینوکس وجود دارند تنها می توانند محتویات فایل مورد نظر را با توجه به دسترسی read مطالعه کنند. سطوح دسترسی فایل ها و folder ها در سیستم عامل لینوکس توسط دستور ls –l قابل مشاهده است ، دستور زیر به شما نمونه ای از خروجی این دستور را نشان می دهد :

[root@itpro-kali ~]# ls -l
total 524876
-rw------- 1 root root 859 Jun 30 12:30 unity-ks.cfg
drwxr-xr-x 2 root root 4096 Jun 30 16:56 Desktop
-rw-r--r-- 1 root root 29101 Jun 30 12:30 nasiri.log
-rw-r--r-- 1 root root 3510 Jun 30 12:29 install.log.syslog
-rw------- 1 root root 12230 Jul 2 13:59 mbox
-rw-r--r-- 1 root root 1521 Jul 1 08:14 passwd
-rw-r--r-- 1 root root 536870912 Jul 2 13:59 swap
آموزش سطوح دسترسی در لینوکس

توجه کنید که در سیستم عامل لینوکس سطوح دسترسی بصورت مخفف شده و حرف نمایش داده می شوند ، در مثال بالا حرف r به معنی دسترسی read ، حرف w به معنی دسترسی write و حرف x به معنی دسترسی execute است. سطوح دسترسی در نتیجه دستور بالا در انتهای سمت چپ خروجی دستور نمایش داده شده اند. اولین کاراکتر در این خروجی نمایانگر این است که محتوا یک فایل است یا یک دایرکتوری ، اگر حرف d را در ابتدای خط مشاهده کردید ، این یک دایرکتوری است. باقیمانده قسمت ها به سه قسمت سه تایی ، یعنی نه قسمت تعریف می شوند که هر سه قسمت از آنها به ترتیب از سمت چپ به راست متعلق به دسترسی های owner ، دسترسی های group و دسترسی های all users است.

دسترسی ها در نهایت می تواند عدد بصورت سه عدد نمایش داده بشوند ، اگر ما هر قسمت را سه قسمت کنیم ، یعنی 9 قسمت را به سه گروه سه قسمتی تقسیم کنیم ، هر کدام از این قسمت ها می تواند یک عدد را به ترتیب در خودش جای بدهد ، برای مثال عدد اول از سمت چپ به راست هر کدام از این سه قسمت عدد 4 عدد دوم عدد 2 و عدد سوم عدد 1 خواهد بود ، یعنی اگر کسی دسترسی به فایل با عدد 4 داشته باشد به فایل مورد نظر دسترسی Read دارد ، اگر دسترسی عدد 2 باشد دسترسی خواندن یا Write دارد و اگر عدد 1 را به عنوان دسترسی داشته باشد دسترسی اجرا کردن یا execute دارد ، اما سئوال اینجاست که اگر کسی دسترسی 5 داشته باشند به چه معناست ؟

دسترسی 5 یعنی کاربر هم دسترسی read دارد و هم دسترسی execute ، ما می توانیم اعداد را با هم جمع کنیم ، یعنی عدد 5 ترکیب شدن دسترسی های 4 و 1 خواهد بود. دقت کنید که ماکزیمم دسترسی به یک فایل یا دایرکتوری عدد 7 است ، یعنی همه دسترسی ها را دارد و این عدد از ترکیب کردن 4 بعلاوه 2 بعلاوه 1 بدست آمده است. شما سه قسمت دسترسی به فایل با توجه به مفاهیم گفته شده دارید ، بنابراین ماکزیمم دسترسی به یک فایل عدد 777 خواهد بود یعنی هم مالک دسترسی کامل دارد ، هم گروه و هم other دسترسی کامل دارد ، عدد 777 می تواند در بحث امنیت بسیار خطرناک باشد. به مثالی که در بالا در دستور ls زدیم توجه کنید دسترسی های فایل ها و دایرکتوری ها به شکل زیر خواهند بود :

  1. فایل unity-ks.cfg فقط به کاربر owner دسترسی خواندن و نوشتن داده است یعنی عدد اولین قطعه آن 6 است ، قسمت های دوم و سوم هیچ دسترسی نخواهند داشت و طبیعتا خروجی دسترسی ما عدد 600 خواهد بود.
  2. دایرکتوری Desktop به کاربر owner دسترسی کامل خواندن و نوشتن و اجرا کردن را داده است و عدد خروجی 7 خواهد بود ، دسترسی گروه خواندن و اجرا کردن و عدد خروجی 3 خواهد بود و دسترسی other در اینجا فقط اجرا یا 1 است . بنابراین دسترسی کامل این پوشه بصورت 731 خواهد بود

باقی موارد را خودتان محاسبه کنید و در ادامه همین مطلب بنویسید ... این تمرین خوبی برای آشنایی با نحوه اعمال سطوح دسترسی در لینوکس است.اگر قصد دارید بصورت حرفه ای با سطوح دسترسی لینوکس آشنا شوید ، پیشنهاد می کنم دوره آموزش لینوکس اسنشیالز مهندس نصیری در این لینک را مشاهده کنید.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات