معرفی مجوزهای دسترسی در لینوکس : بررسی Permission ها در Linux

یکی از ویژگی های امنیتی یا ساختار اولیه امنیت در سیستم عامل لینوکس برپایه ی سطح دسترسی (Permissions) یا مالکیت تعریف شده است . لینوکس یک سیستم عامل چند کاربره(multi user) است که مجوز و اجازه ی دسترسی یک راه محافظت سیستم در برابر خرابکاری ها و دسترسی های غیر مجاز است.فایل ها و دایرکتوری ها در لینوکس"متعلق به" شخصی است که آنها را ایجاد کرده و دارای یک سری سطوح دسترسی است که بیانگر کارهایی است که کاربر مورد نظر ما می تواند بر روی فایل یا دایرکتوری مورد نظر انجام دهد این بدان معناست که شما می توانید مشخص کنید چه کسی مجاز به خواندن فایل، ارسال فایل، و یا اینکه فایل را اجرا کند .تمامی فایل ها و دایرکتوری ها در لینوکس با مجموعه ای از بیت های اجازه مجهز شده اند که دسترسی های مختلفی را تعیین می کند . این بیت ها از اعداد 0 تا 7 ساخته شده اند .به جدول زیر توجه کنید . (شکل 1-1 )

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

سطوح دسترسی فایل ها و دایرکتوری ها در سیستم عامل لینوکس با دستور ls –l قابل مشاهده است :

kingdeface@ubuntu:~$ ls -l
total 44
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:57 Desktop
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Documents
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Downloads
-rw-r--r-- 1 kingdeface kingdeface 8980 Dec 27 08:00 examples.desktop
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Music
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Pictures
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Public
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Templates
drwxr-xr-x 2 kingdeface kingdeface 4096 Dec 27 10:07 Videos

اولین کاراکتری که از سمت چپ در این خروجی مشاهده می کنید نشان دهنده نوع آن فایل یا دایرکتوری است. اگر حرف " d " بود نشان دهنده ی یک دایرکتوری است اما اگر علامت dash" – " بود نشان دهنده ی یک فایل است .

d rwx r-x r-x

- rw- r-- r--

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

  • =l سیمبولیک لینک
  • = b بلاک دیوایس
  • = s سوکت
  • = c کاراکتر دیوایس
  • = p پایپ

دسترسی کاربران در سیستم عامل لینوکس

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

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

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

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

  1. user کاربر صاحب فایل یا Owner
  2. group گروهی که مالکیت فایل مورد نظر را بر عهده دارند.
  3. other دیگران (نه مالک نه صاحبان گروه)
  4. all, everyone, world تمامی کاربران دیگر
وب سایت توسینسو

(شکل 3-1 )

چون Permissions ها قابلیت ترکیب شدن را دارند برای اینکه ما بتوانیم سطح دسترسی یک فایل را تنظیم کنیم به ترتیب زیر عمل میکنیم :

  1. مالک یا owner = read ,write ,execute
  2. گروه یا group = read ,execute
  3. کاربران دیگر all = read
وب سایت توسینسو

(شکل 4-1 )

خواندن مجوزها در مبنای 8

طبق تعاریف بالا ما میتوانیم مجوز ها را به دو 2 روش در مبنای 8 بخوانیم .

روش اول : با توجه به (شکل 1-1 ) این کار را انجام می دهیم . مثال (1-1) :

d rwxrwxrwx

اولین کاراکتر از سمت چپ نشان دهنده ی یک دایرکتوری است . باقیمانده ی قسمت ها را از سمت چپ به سه قسمت سه تایی ، که هر سه قسمت از آنها به ترتیب از چپ به راست متعلق به دسترسی های owner ، دسترسی های group و دسترسی های all users است .

rwx = owner

rwx = group

rwx = all user

سپس به صورت زیر معادل باینری یا دو دویی هر یک از قسمت های 3 تایی در بالا را حساب می کنیم :

rwx = owner = 111

rwx = group = 111 => 111 111 111 => 777

rwx = all user = 111

و در نهایت اگر اعداد 111 111 111 را به مبنای 8 ببریم پرمیژن این دایرکتوری 777 خواهد بود . مثال (1-2) :

- rwxr-xr-x

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

rwx = owner

r-x = group

r-x = all user

سپس معادل باینری هر یک از قسمت های 3 تایی را حساب می کنیم :

rwx = owner = 111

r-x = group = 101 => 111 101 101=> 755

r-x = all user = 101

روش دوم :

در روش دوم ابتدا مطابق این تعریف :

  1. مالک یا owner = read ,write ,execute
  2. گروه یا group = read ,execute
  3. کاربران دیگر all = read

و این جدول :

وب سایت توسینسو

(شکل 5-1 ) میتوانیم نتیجه بگیریم که :

0 = no permission = -

1 = execute = x

2 = write = w

4 = read = r

مثال (1-3) :

d rw- r-- r--

مطابق روش قبلی 3 تا 3 تا از سمت چپ از هم جدا می کنیم .( حرف d به معنای دایرکتوری است ) .

rw- = owner

r-- = group

r-- = all user

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

rw- => r = 4 w=2 - = 0 => 4+2+0= 6

r-- => r = 4 - = 0 - = 0 => 4+0+0 = 4 => 644

r-- => r = 4 - = 0 - = 0 => 4+0+0 = 4
وب سایت توسینسو

مثال (1-4) :

d rwxr-xr-x

(1)

rwx = owner

r-x = group

r-x = all user

(2)

rwx => r=4 w=2 x = 1 => 4+2+1= 7

r-x => r=4 -= 0 x = 1 => 4+0+1 = 5 => 755

r-x => r=4 -= 0 x = 1 => 4+0+1 = 5
وب سایت توسینسو

گاردایران


نظرات