راهنمای کامل و کاربردی سطوح دسترسی(Permission) در لینوکس به همراه دستورات

محتوای مطلب

سطوح دسترسی لینوکس مبحثی بسیار مهم می باشد به این علت که ار لحاظ امنیت سیستم و شبکه بسیار تاثیرگذار بر روند کاری کاربران است. اگر Permission ها یا به عبارتی دیگر دسترسی ها بصورت صحیح تعریف نشده باشد ممکن است دسترسی بالاتری به گروهی داده شود که آنها از همین طریق امکان ایجاد تغییرات غیر مجاز در سیستم را داشته باشند. شما به کمک دستور ls با پارامتر l میتوانید تمامی دسترسی های مربوط به یک فایل یا فولدر را درون یک دایرکتوری مشاهده کنید همانند تصویر زیر:

ls command with l parameter

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

تعریف سطوح دسترسی در لینوکس

زمانیکه شما میخواهید سطح دسترسی یک فایل یا فولدر را در لینوکس بررسی کنید باید اول بدانید که سیستم کنترل دسترسی ها در لینوکس چگونه کار میکند. در لینوکس برای هر فایل یا فولدر سه گروه کاربری در نظر گرفته میشود. گروه اول خود کاربر ایجاد کننده(Owner)، گروه دوم گروهی که این فایل یا فولدر به آن متعلق است(Group) و در نهایت سایر افراد(Other) و سپس به هرکدام از این سه دسته دسترسی هایی داده میشود.

linux permissions

همانطور که در تصویر بالا مشاهده میکنید کاراکتر اولی که به شما نمایش داده میشود نوع فایل در لینوکس است که میتواند از نوع فایل یا فولدر یا مدل های دیگری از فایل در لینوکس باشد. آن چیزی که برای ما مهم است حروف بعد از کاراکتر اول است. بعد از کاراکتر اول به تعداد 3 کاراکتر شما میتوانید سطح دسترسی کاربر ایجاد کننده را مشاهده کنید که با حروف انگلیسی r,w,x نمایش داده شده است. حرف r نمایان گر که به معنای read است و امکان خواندن و مشاهده فایل میباشد و اگر شما بخواهید کاربر ایجاد کننده دسترسی خواندن به آن فایل را داشته باشد شما دسترسی r را به آن میدهید در غیر اینصورت بجای حرف r در خانه اول خط تیره(-) نمایش داده میشود. کاراکتر بعدی حرف w میباشد که به معنای write است و به کاربر ایجاد کننده آن این امکان را میدهد که بتواند آن فایل یا فولدر را بخواند و در آن تغییرات ایجاد نماید. کاراکتر بعدی x میباشد که به معنای execute است که به کاربر ایجاد کننده این امکان را میدهد که آن فایل را اجرا نماید.

تمامی این کاراکترها برای گروه های بعدی یعنی Group و Other نیز صدق میکند و شما میتوانید برای مثال دسترسی اجرا را فقط به گروه Other بدهید و سایر دسترسی ها را از گروه بگیرید و بجای آن به شما خط تیره(-) نمایش میدهد. همچنین همانطور که در تصویر بالا مشاهده میکنید بجای هرکدام از این کاراکترها معادل عددی نیز وجود دارد که شما میتوانید از آن اعداد برای دادن دسترسی استفاده کنید. کنترل دسترسی به وسیله اعداد به این ترتیب است که بجای هر کاراکتر معادل عددی آن وجود دارد و سپس شما این اعداد را در هر گروه باید جمع بزنید و عدد نهایی نمایان گر سطح دسترسی در آن گروه میباشد. در جدول زیر چند مثال از این نوع ایجاد دسترسی وجود دارد که به شما کمک میکند راحت تر این موضوع را درک کنید.

توضیحات قسمت other قسمت group قسمت owner
سطح دسترسی بصورت 761 تعریف میشود e

 

1

r+w

 

4+2

r+w+e

 

4+2+1

سطح دسترسی بصورت 650 تعریف میشود  

 

0

r+e

 

4+1

r+w

 

4+2

سطح دسترسی بصورت 777 تعریف میشود که به معنای کنترل کامل همه به فایل یا فولدر است. r+w+e

 

4+2+1

r+w+e

 

4+2+1

r+w+e

 

4+2+1

 

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

تغییر سطح دسترسی به وسیله دستور لینوکسی chmod

chmod permissions filename

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

استفاده از کاراکتر در دستور لینوکسی chmod

زمانیکه شما از کاراکترها در دستور chmod استفاده میکنید باید از عملگرهای دیگری نیز به همراه این کاراکترها استفاده نمایید تا سطح دسترسی مد نظر شما بر روی فایل اعمال شود. هر عملگر دارای یک سری رفتار میباشد که در جدول زیر توضیح داده شده است.

توضیح عملگر
اضافه کردن یک دسترسی +
حذف کردن یک دسترسی
در نظر نگرفتن دسترسی موجود و تغییر دسترسی به سطحی که اعلام میشود =

همچنین کاراکترهای هر دسته بندی بصورت مخفف باید در دستور اجرا شود تا بتوانید تغییرات مد نظرتان را اعمال کنید بدین صورت که برای دسته بندی صاحب فایل کاراکتر u، برای دسته بندی گروه کاراکتر g و برای دسته بندی سایرین کاراکتر o استفاده میشود. جال با استفاده از این عملگرها و همچنین کاراکترهای مربوط به سطوح دسترسی در لینوکس شما میتوانید این تنظیمات را تغییر دهید. برای مثال دستور زیر قابلیت خواندن و مشاهده را به دسته بندی owner اضافه میکند.

chmod u+r test.txt

همانطور که میبینید در تصویر زیر با این دستور این دسترسی برای user اضافه شد:

chmod command

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

chmod g-r test.txt

نتیجه دستور فوق را در محیط CLI بصورت زیر میتوانید مشاهده نمایید:

chmod command

حال اگر بخواهید بدون در نظر گرفتن دسترسی های حال حاضر یک فایل یا فولدر کل دسترسی ها را تغییر بدهید میتوانید از عملگر = استفاده نمایید. برای مثال دستور زیر دسترسی خواندن، نوشتن و اجرا را به گروه other میدهد:

chmod o=rwx test.txt

نتیجه این دستور را نیز میتوانید در تصویر زیر مشاهده نمایید:

chmod command

استفاده از مجموع اعداد در دستور لینوکسی chmod

روش دوم استفاده از معادل عددی کاراکترها برای سطوح دسترسی در لینوکس میباشد. شما میتوانید با توجه به توضیحاتی که بالاتر در مورد ترکیب اعداد داده شد دسترسی مد نظرتان را بصورت عدد وارد نمایید. دقت کنید زمانیکه شما از اعداد استفاده مینمایید سیستم عامل بدون در نظر گرفتن دسترسی حال حاضر تنظیمات را بر اساس اعدادی که شما وارد میکنید تغییر میدهد. برای مثال برای اینکه یک فایل یا فولدر بصورت full control برای همه باشد(این دسترسی خطرناک می باشد و فقط برای آموزش اجرا شده است) شما میتوانید دستور زیر را اجرا نمایید:

chmod 777 test.txt

نتیجه دستور فوق را میتوانید در تصویر زیر مشاهده نمایید:

chmod 777 command

پارامتر R در دستور لینوکسی chmod

زمانیکه شما در حال ایجاد تغییرات دسترسی برای فولدرها هستید دسترسی که شما ایجاد مینمایید در حقیقت فقط برای فولدر در نظر گرفته میشود و به زیر شاخه های آن اعمال نمیشود. این بدین معنا است که شما برای اینکه بخواهید دسترسی مد نظرتان به زیر شاخه های یک فولدر هم اعمال شود و هر فایل و فولدر درون آن دایرکتوری هم دسترسی مد نظر شما را دریافت کند باید برای هر فایل یا فولدر بصورت جداگانه این دستور را بزنید. با استفاده از پارامتر R در دستور chmod شما میتوانید بصورت Recursive این دستور را برای تمام زیر شاخه های یک فولدر اجرا کنید با اضافه گردن این پارامتر بصورت زیر سیستم عامل سطح دسترسی تمام زیر شاخه های دایرکتوری را تغییر میدهد:

chmod permissions -R filename

همانطور که در این مقاله اشاره شد مبحث سطوح دسترسی در لینوکس بسیار مهم و حیاتی می باشد و ادمین های سیستم باید به این نکات دقت داشته باشند که این تنظیمات به درستی اعمال شوند.

چگونه لیست دسترسی های یک فایل یا فولدر را مشاهده کنیم؟

با دستور ls -l میتوانید لیست سطوح دسترسی را مشاهده نمایید. ستون های اول، دوم و سوم این سطوح را به شما نمایش میدهد.

چطور یک فایل متنی را تبدیل به یک فایل اجرایی کنیم در لینوکس؟

برای اینکه یک فایل بصورت اسکریپت قابلیت اجرا داشته باشد باید با دستور chmod +x قابلیت اجرا را به آن اضافه نمایید.

دیدگاهتان را بنویسید

بیست − شانزده =