سطوح دسترسی یا Permission ها در سیستم عامل لینوکس

ساختار اولیه و مقدماتی امنیت در سیستم عامل لینوکس بر اساس سطوح دسترسی یا 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 خواهد بود

باقی موارد را خودتان محاسبه کنید و در ادامه همین مطلب بنویسید ... این تمرین خوبی برای آشنایی با نحوه اعمال سطوح دسترسی در لینوکس است. ITPRO باشید

نویسنده : محمد نصیری

منبع : ITPRO

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#ntfs_permission_چیست #سطوح_دسترسی_فولدرها_در_لینوکس #سطوح_دسترسی_فایل_در_لینوکس #سطوح_دسترسی_در_لینوکس #ساختار_فایل_در_لینوکس #سطوح_دسترسی_در_linux #امنیت_در_لینوکس #ساختار_سطوح_دسترسی_در_لینوکس #permission_ها_در_لینوکس #share_permission_چیست
10 نظر
samurai

درود مهندس

ما میتونیم اینو بگیم که برای حذف فایل حتی اگر owner یا گروپ نباشیم ودسترسی فیلد other رو داشته باشیم امکان پذیره

ولی برای حذف یک دایرکتوری حتما باید owner یا گروپ باشیم؟

محمد نصیری

نحوه حذف فرق میکنه فارق از بحث دایرکتوری

امیرحسین کریم پور

سلام آقای نصیری ،

لطفا جمله زیر رو اصلاح کنید :

یعنی اگر کسی دسترسی به فایل با عدد 4 داشته باشد به فایل مورد نظر دسترسی write دارد ، اگر دسترسی عدد 2 باشد دسترسی خواندن یا read دارد

عدد 4 دسترسی read هستش و عدد 2 دسترسی write

amirmohammad75

سلام استاد

با تشکر از توضیحات خوبتون

توی یک مثالی در یک سایت دیگه دسترسی یک دایرکتوری رو بصورت زیر تغییر داده بود

chmod g+s directory

s در اینجا به چه معناست؟

محمد نصیری

s در اینجا یعنی مالک فایل رو تحت تاثیر تغییرات قرار نده

amirmohammad75

خیلی ممنون

همین دستور رو میشه بصورت octal هم نوشت ؟

منظورم اینه که از g+s استفاده نکنیم و بصورت عددی تغییر بدیم

محمد نصیری

من عددش رو نمیدونم متاسفانه ! ولی فکر می کنم چهاررقمی به جای سه رقمی میشه و عدد 7 به جاش میاد مثلا 4777

امیرحسین کریم پور

امیرمحمد عزیز s در این دستور مخفف Set Group ID یا SGID هست و زمانیکه شما دستور زیر رو اجرا می کنید

# chmod g+s directory

هر یوزری که فایل یا فولدری رو توی دایرکتوری "directory" ایجاد می کنه مالکیت گروه اون فایل یا فولدر ایجاد شده بر اساس دایرکتوری خواهد بود که روش بیت SGID ست شده. مقدار SGID هم برابر عدد ۲ هست. به جای دستور فوق از دستور زیر هم میتونید استفاده کنید :

# chmod 2775 directory

اگه باز در تفهیم این موضوع مشکل داشتید به این لینک نگاه کنید.

amirmohammad75

خیلی ممنون آقای کریم پور

توضیحاتتون عالی بود

تشکر

amirmohammad75

خیلی ممنون آقای کریم پور

توضیحاتتون عالی بود

تشکر

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....