مجوزهای دسترسی (آموزش لینوکس LPIC1-101)
مجوزهای دسترسی (آموزش لینوکس LPIC1-101)
سیستم عامل ها در یونیکس با انواع سنتی MS-DOS تفاوت دارند.
از چه نظر؟
از این نظر که آنها نه تنها چند وظیفه اي هستند بلکه چندکاربري نیز هستند این دقیقا به چه معناست؟
یعنی اینکه بیش از یک نفر می تواند به صورت همزمان از یک کامپیوتر استفاده کند.
در حالی که یک کامپیوتر که معمولا یک کیبورد و مانیتور دارد ولی بازهم قابلیت استفاده توسط چند کاربر را دارد.
براي مثال:
اگر یک کامپیوتر به شبکه یا اینترنت متصل باشد، کاربران ریموت می توانند از طریق رابط (SSH (Secure Shell متصل شده و با کامپیوتر کار کنند.
در حقیقت کاربران ریموت می توانند اپلیکیشن هاي گرافیکی را اجرا کرده و رابط گرافیکی را در صفحه نمایش خود مشاهده کنند و با آن کار کنند.
سیستم Windows X نیز این ویژگی را به عنوان بخشی از طراحی اولیه خود پشتیبانی می کند.
قابلیت چند کاربري لینوکس یک نوآوري جدید نیست بلکه بخشی است که به طور عمیق در طراحی سیستم عامل گنجانده شده است.
اگر به محیطی که لینوکس در آن ایجاد شده فکر کنیم، این موضوع ملموس تر خواهد بود.
سال ها قبل، پیش از آنکه کامپیوترهاي شخصی وجود داشته باشند کامپیوترهاي بزرگ و مرکزي و گران قیمت موجود بود.
یک سیستم معمولی کامپیوتر را به عنوان یک دانشگاه فرض کنید.
این سیستم شامل یک کامپیوتر مرکزي بود که در داخل ساختمان قرار داشت
و ترمینال هایی وجود داشت که هر یک به این سیستم مرکزي متصل بودند و از طریق ریموت از این سیستم بهره برداري می کردند.
در این حالت بود که کامپیوتر قابلیت استفاده چندین کاربر را به صورت همزمان فراهم می کرد.
براي اینکه این دسترسی ها عملیاتی شود بایستی متدي براي حفاظت از هر کاربر و همچنین حفاظت آنها از یکدیگر بوجود می آمد.
چون که انجام کارهایی که هر شخص مجوز انجام آن را نداشت موجب تخریب کاربر و حتی کامپیوتر می شد.
در این قسمت ما بخش هاي ضروري امنیتی سیستم لینوکس را توضیح می دهیم.
به این منظور از دستورهاي id ,chmod ,umask ,su ،id,sudo ,chown ,chgrp ,passwd استفاده خواهیم کرد.
مالکیت، گروههاي عضویت و دسترسی همگانی در لینوکس
در جلسات قبلی وقتی که سیستم را کاوش می کردیم
ممکن بود زمان مشاهده فایلی مشابه etc/shadow/ با مشکل زیر مواجه می شدیم:
علت به وجود آمدن این خطا این است که کاربران عادي دسترسی لازم براي خواندن این فایل را ندارند!
وقتی که یک کاربر مالکیت یک فایل یا پوشه را دارد، بر روي دسترسی آن کنترل دارد.
کاربران همچنین می توانند به نوبه خود عضو گروهی که شامل یک یا چند کاربر دیگر هست نیز باشند
که از طریق مالکان این گروه دسترسی به فایل ها و پوشه هاي آن ایجاد شده است.
علاوه بر این به منظور دسترسی به یک گروه، مالک ممکن است برخی حقوق دسترسی را براي همگان آزاد بگذارد
که در یونیکس به این منظور از واژه world (دنیا) استفاده می شود.
براي اینکه به هویت خود در لینوکس پی ببرید دستور id را در خط فرمان به کار ببرید:
خب حالا به خروجی نگاهی بیندازید. زمانی که حساب هاي کاربري ایجاد می شود،
به کاربران یک شماره با نام (Userid (uid شناسه کاربر اختصاص می یابد.
سپس به خاطر راحتی کاربران یک نام کاربري به این شناسه اختصاص می یابد.
کاربر همچنین یک شناسه گروهی primary group ID یا همان gid را به خود اختصاص می دهد که ممکن است به گروههاي دیگر تعلق داشته باشد.
مثالی که می بینید مربوط به یک سیستم ابونتو می باشد.
این خروجی ممکن است در سیستم هاي دیگر متفاوت باشد.
مثلا فدورا شمارش حساب کاربران عادي را از عدد 500 آغاز کرده در حالی که اوبونتو این عدد را از 1000 آغاز می کند.
علاوه بر این همانطور که می بینید در اوبونتو گروههاي کاربري زیادي وجود دارد
که این کار به منظور مدیریت دسترسی ها براي دیوایس ها و سرویس هاي مختلف است.
خب حالا این اطلاعات از کجا می آید؟
شبیه بسیاری از موارد دیگر در لینوکس، این اطلاعات از تعدادي فایل هاي متنی سرچشمه می گیرد.
اطلاعات حساب هاي کاربري در فایلی با نام etc/passwd/ و گروه هاي کاربري در فایلی با نام etc/group/ تعریف می شود.
هنگامی که کاربران و گروهها ایجاد می شوند این فایل ها نیز ویرایش شده
و در موازات آن فایل etc/shadow/ که حاوي اطلاعات پسورد کاربر است نیز تغییر پیدا می کند.
در هر حساب کاربري، فایل etc/passwd/ موجب تغییر این موارد می شود:
نام کاربري، uid و gid و نام واقعی حساب پوشه خانگی کاربر (Home Directory)
اگر محتویات etc/passwd/ و etc/group/ را بررسی کنید،
متوجه خواهید شد که در کنار حساب هاي کاربري عادي حساب هایی براي کاربران ارشد (Superuser) و دیگر کاربران سیستم وجود دارد.
در حالی که بسیاري از سیستم هاي یونیکسی کاربران عادي را به یک گروه عمومی مثل گروه users اختصاص می دهند،
لینوکس هاي مدرن یک گروه یگانه و تک کاربره به نام کاربر ایجاد کرده و به وي اختصاص می دهند.
این کاربر باعث می شود که اختصاص برخی انواع دسترسی ها آسان تر شود.
دسترسی هاي خواندن، نوشتن و اجرا
حقوق دسترسی به فایل ها و پوشه ها را با عبارات دسترسی خواندن (Read Access)، دسترسی نوشتن (Write Access) و دسترسی اجرا (Execution Access) تعریف می کنند.
اگر که به خروجی دستور ls در مثال زیر توجه کنیم می بینیم که این دسترسی ها چگونه پیاده سازي شده اند.
در نگاه اول !!! کمی پیچیده به نظر می رسد ولی واقعا آنقدر هم پیچیده نیست.
به کاراکتر اول در خروجی بالا نگاه کنید. آن را به چهار بخش تقسیم کنید.
چگونه؟
کاراکتر اول از سمت چپ نوع فایل را مشخص می کند.
در جدول انواع فایل در زیر مقادیر مختلف آن را توضیح داده شده است.
9 کاراکتر باقی مانده را مشخصه هاي File Mode می نامند.
این کاراکتر ها را از سمت چپ سه به سه از هم جدا کنید.
اولین بخش سه تایی دسترسی ها براي مالک فایل یا همان کاربر (File ‘s Owner) را مشخص می کند.
بخش سه تایی دوم دسترسی ها براي مالک گروه (Group Owner) را مشخص می کند و بخش سه تایی آخر دسترسی ها را براي همگان مشخص می کند.
این دسترسی ها به ترتیب با کاراکترهاي اختصاصی rwx تعریف می شوند
که r به معنی دسترسی خواندن (w ,(Read به معنی دسترسی نوشتن (Write) و x به معنی دسترسی اجرا (Execution) می باشد.
اگر هر کدام از این دسترسی ها از کاربر (User) یا گروه (Group) و یا همگان (World) منع شده باشد به جاي آن یک علامت دش (-) گذاشته می شود.
اوکتال (Octal) چیست؟!
اعداد مبناي هشت (base 8) دوست و یار مهربان اعداد مبناي 16 (base 16) هستند، اعدادي هستند که براي بیان اعداد در کامپیوترها استفاده می شوند.
ولی ما بنی بشر هستیم و از زمان تولد با ده انگشت آفریده شده ایم پس براي ما سیستم شمارش 10تایی راحت است.
کامپیوترها در طرف دیگر یک انگشت بیشتر ندارند.
در نتیجه تمام عمل شمارش خود را بر مبناي باینري (base 2) یا همان مبناي 2 یعنی صفر و یک انجام می دهند.
یعنی سیستم شمارش کامپیوتر فقط دو عدد دارد صفر و یک.
پس اگر از صفر شروع به شمارش کند اینگونه می شمارد.
0 ,1 ,10 ,11 ,100 ,101 ,110 ,111 ,1000 ,1001 ,1010 ,1011 و ….
حالا که با باینري آشنا شدید درك اوکتال براتون راحت تر خواهد بود.
در سیستم عددگذاري اوکتال (مبناي هشت) هشت رقم در سیستم شمارش وجود دارد در نتیجه شمارش به اینگونه انجام می شود:
0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,10 ,11 ,12 ,13 ,14 ,15 ,17 ,20 ,21 و …
در کنار سیستم شمارش اوکتال شمارش هگزا دسیمال را هم داریم که از شماره هاي 0 تا 9 به علاوه حروف A تا F به منظور شمارش استفاده می کند.
خب ما گفتیم که کامپیوتر ها فقط یک انگشت دارند و با باینري شمارش را انجام می دهند.
پس اوکتال و هگزا دسیمال به چه دردي می خورد؟
پاسخ باز هم بر می گردد به راحتی انسان. در موارد زیادي بخش هاي کوچکی از داده بر روي الگوهاي کوچک بیت قرار می گیرند.
مثلا الگوي رنگ RGB که در نرم افزارهاي فتوشاپ و دیگر سیستم هاي رنگی در کامپیوتر استفاده می شود را در نظر بگیرید.
در نمایشگرهاي بیشتر کامپیوترها هر پیکسل رنگی شامل سه جز رنگی است.
8 بیت قرمز، 8 بیت سبز، هشت بیت آبی.
مثلا یک آبی زیبا از 24رقم باینري تشکیل می شود به این صورت:
010000110110111111001101!!!
آیا خواندن و به کاربردن این رقم براي شما آسان است؟!
جواب مشخص است.
این جا مدل دیگري از سیستم اعداد به کار ما می آید.
هر رقم هگزا دسیمال معادل 4 رقم باینري است.
پس ما با بکار بردن یک رقم فقط 6 رقمی هگزا دسیمال (436FCD) می توانیم به کامپیوتر بفهمانیم که منظورمان همان عدد 24 رقمی باینري است.
در این وضعیت هم ما به نتیجه دلخواه خود می رسیم هم دیگر نیازي به کاربردن و حفظ کردن 24رقم باینري نیست.
همین کار را می توانیم در مثال استفاده اوکتال براي دسترسی ها در لینوکس به کار ببریم.
تغییر وضعیت دسترسی فایل (Change File Mode)
به منظور تغییر دسترسی یا همان وضعیت (Mode)یک فایل یا یک پوشه از دستور chmod استفاده می شود.
chmod مخفف دو واژه انگلیسی (change (mode به معنی تغییر حالت (منظور تغییر دسترسی) است.
به یاد داشته باشید که براي تغییر وضعیت یک فایل یا پوشه فقط مالک فایل یا کاربر ارشد قادر به انجام این کار خواهد بود.
دستور chmod دو شیوه منحصر به فرد براي انجام این کار استفاده می کند:
1- نمایش با شماره هاي مبناي هشت 2- نمایش سیمبولیک
نمایش با شماره هاي مبناي هشت (Octal Representation)
با نشان گذاري مبناي هشت ما از شماره هاي مبناي هشت براي ایجاد یک الگوي مورد نظر از دسترسی ها استفاده می کنیم.
از آنجایی که هر کدام از شماره ها در یک عدد مبناي هشت، ارائه کننده سه رقم باینري است،
این الگو به خوبی براي ایجاد دسترسی ها در فایل به کار ما می آید. با مشاهده جدول زیر مفهوم ذکر شده را متوجه خواهید شد:
با بکار بردن سه رقم اوکتال ما می توانیم وضعیت دسترسی فایل را به ترتیب براي کاربر (User)، گروه (Group) و همگان (World) تعیین کنیم.
به مثال زیر توجه کنید:
قبل از شروع توضیح یک نکته درباره تبدیل دسترسی هاي rwx به اعداد باینري.
براي تبدیل هر زمان که کاراکتري وجود داشته باشد به جاي آن عدد 1 و هر زمان که کاراکتري نباشد یعنی (-) را دیدیم به جاي آن صفر می گذاریم.
یعنی -rw می شود 110.
خب حالا توضیح مثال بالا:
یک فایل با نام test.txt ایجاد کردیم و سپس وضعیت دسترسی آن را با استفاده از دستور ls -l test.txt مشاهده می کنیم.
—rw-rw-r
کاراکتر اول از سمت چپ (-) است یعنی اینکه این یک فایل عادي است.
سپس -rw یعنی عدد باینري 110 که معادل اوکتال آن می شود 6.
به همین صورت دوباره -rw که می شود 110 باینري یعنی 6 اوکتال و در نهایت –r یعنی عدد 100 باینري یعنی 4 اوکتال.
پس اگر بخواهیم دسترسی آن را به شیوه الگوي اوکتال بیان کنیم می گوییم: 664.
چگونه این مقدار را تغییر دهیم؟
به سادگی با بکاربردن دستور chmod و سپس مقدار دسترسی بر مبناي الگوي اوکتال و در آخر نام فایل که می شود دستور:
chmod 600 test.txt
در آخر با بکار بردن دستور ls -l test.txt مشاهده می کنیم که دسترسی ما به ——-rw یعنی الگوي عدد اوکتال 600 تغییر کرد.
نکته:
دقت کنید که وقتی دسترسی فایل را با استفاده از دستور ls -l مشاهده می کنید اولین رقم از چپ نشانگر نوع فایل است
و آن را با رقم هاي دسترسی اشتباه نگیرید.
نمایش سیمبولیک (Symbolic Representation)
chmod همچنین از یک نشانه گذاري سیمبلیک براي اختصاص دسترسی هاي فایل پشتیبانی می کند.
نشان گذاري سیمبلیک به سه بخش تقسیم می شود:
1- کسی که تغییر بر روي آن تاثیر می گذارد
2- عملیاتی که انجام خواهد شد
3- دسترسی ایی که تنظیم خواهد شد.
براي اختصاص و تعیین شخصی که تغییر بر روي آن تاثیر خواهد گذاشت از ترکیب کاراکترهاي u ,g ,o و a استفاده می کنیم.
جدول زیر این کاراکترها را توصیف می کند:
در صورتی که هیچ کاراکتري به این منظور اختصاص نیابد معنی آن all یعنی همه گروههاي دسترسی خواهد بود.
عملیات ممکن است کاراکتر (+) باشد که نشانگر این است که یک دسترسی اضافه شده،
اگر کاراکتر (-) استفاده شود یعنی اینکه یک دسترسی کم شده و اگر کاراکتر (=) استفاده شود
یعنی اینکه فقط دسترسی هاي اختصاص یافته بایستی اعمال شوند و دیگر دسترسی ها حذف خواهند شد.
دسترسی ها طبق معمول با کاراکترهاي r ,w ,x اختصاص می یابند.
جدول زیر لیستی از برخی مثال هاي نشان گذاري سیمبلیک دسترسی ها را نشان می دهد:
برخی افراد ترجیح می دهند که از نشان گذاري اوکتال استفاده کنند و برخی دیگر واقعا طرفدار نشان گذاري سیمبلیک هستند.
نشانگذاري سیمبلیک برخی امتیازات و برتري هایی دارد
مثلا اینکه به کاربر اجازه می دهد تا یک مشخصه را بدون اینکه دیگر مشخصه ها را درگیر کنیم در دسترسی هایي تعیین کنیم.
به هر حال اینکه از کدام یک استفاده کنیم بنا به شرایط و سلیقه افراد متفاوت خواهد بود.
تنظیم وضعیت دسترسی با استفاده از رابط گرافیکی در لینوکس
خب دیدیم که چگونه با استفاده از خط فرمان دسترسی پوشه ها و فایل ها تغییر دهیم
بهتر می توانیم رابط گرافیکی که به این منظور در نظر گرفته شده است را درك کنیم.
هم در (Nautilus (GNOME و هم در (Konqueror (KDE راست کلیک کردن بر روي یک فایل و یا پوشه و انتخاب گزینه properties یک پنجره گفتگوي تنظیمات را نشان خواهد داد:
در این وضعیت ما می توانیم تنظیمات دسترسی را براي مالک (Owner)، گروه (Group) و همگان (World) تعریف کنیم.
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
نویسنده: موسی رشوند
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.