مجوزهای دسترسی (Permissions) در خط فرمان لینوکس
سیستمعاملها در یونیکس با انواع سنتی MS-DOS تفاوت دارند. از این نظر که آنها نهتنها چندوظیفهای هستند بلکه چندکاربری نیز هستند. یعنی اینکه بیش از یک نفر میتواند به صورت همزمان با کمک مجوزهای دسترسی (Permissions) از یک کامپیوتر استفاده کند.
در حالی که یک کامپیوتر معمولاً یک کیبورد و مانیتور دارد ولی باز هم قابلیت استفاده توسط چند کاربر را داراست. برای مثال اگر یک کامپیوتر به شبکه یا اینترنت متصل باشد، کاربران ریموت میتوانند اپلیکیشنهای گرافیکی را اجرا رده و رابط گرافیکی را در صفحه نمایش خود مشاهده کنند و با آن کار خود را انجام دهند. سیستم Windows X نیز این ویژگی را به عنوان بخشی از طراحی اولیه خود پشتیبانی میکند.
مجوزهای دسترسی (Permissions)
قابلیت چند کاربری لینوکس یک نوآوری جدید نیست بلکه بخشی است که به طور عمیق در طراحی سیستمعامل گنجانده شده است. اگر به محیطی که لینوکس در آن ایجاد شده فکر کنیم، این موضوع ملموستر خواهد بود. سالها قبل، پیش از آنکه کامپیوترهای شخصی وجود داشته باشند، کامپیوترهای بزرگ و مرکزی و گرانقیمت موجود بود. یک سیستم معمولی کامپیوتر یک دانشگاه را فرض کنید. این سیستم شامل یک کامپیوتر مرکزی بود که در داخل ساختمان قرار داشت و ترمینالهایی وجود داشت که هر یک به این سیستم مرکزی متصل بودند و از طریق ریموت از این سیستم بهرهبرداری میکردند. در این حالت بود که کامپیوتر قابلیت استفاده چندین کاربر را به صورت همزمان فراهم میکرد.
برای اینکه این دسترسیها عملیاتی شود بایستی متدی برای حفاظت از هر کاربر و همچنین حفاظت آنها از یکدیگر بهوجود میآمد. چون که انجام کارهایی که هر شخص مجوزهای دسترسی (Permissions) انجام آن را نداشت موجب تخریب کاربر و حتی کامپیوتر میشد.
مالکیت، گروه اعضا و دسترسی همگانی در لینوکس
اگر خاطرتان باشد در آموزشهای قبلی وقتی سیستم را کاوش میکردیم ممکن بود زمان مشاهده فایلی مشابه /etc/shadow با مشکل زیر مواجه شویم:
1 2 3 4 |
[me@linuxbox ~]$ file /etc/shadow /etc/shadow: regular file, no read permission [me@linuxbox ~]$ less /etc/shadow /etc/shadow: Permission denied |
علت به وجود آمدن این خطا این است که کاربران عادی دسترسی لازم برای خواندن این فایل را ندارند. وقتی که یک کاربر مالکیت یک فایل یا پوشه را دارد، بر روی دسترسی آن کنترل دارد. کاربران همچنین میتوانند به نوبه خود عضو گروهی که شامل یک یا چند کاربر دیگر است نیز باشند که از ظریق مالکان این گروه دسترسی به فایلها و پوشههای آن ایجاد شده است. علاوه بر این به منظور دسترسی یه یک گروه، مالک ممکن است برخی حقوق دسترسی را برای همگان آزاد بگذارند که در یونیکس به این منظور از واژه world (دنیا) استفاده میشود. برای اینکه به هویت خود در لینوکس پی ببرید دستور id را در خط فرمان به کار برید:
1 2 |
[me@linuxbox ~]$ id uid=500(me) gid=500(me) groups=500(me) |
در خروجی مشاهده میشود که زمانی که حسابهای کاربری ایجاد میشود، به کاربران یک شماره با نام user ID (uid) به معنی شناسه کاربر، اختصاص مییابد. در ادامه برای راحتی کار کاربران یک نام کاربری به این شناسه تخصیص داده میشود. کاربر همچنین یک شناسه گروهی Primary Group ID یا همان gid را به خود اختصاص میدهد که ممکن است به گروههای دیگر تعلق داشته باشد. مثالی که میبینید مربوط به یک سیستم فدورا است. این خروجی ممکن است در سیستمهای دیگر مانند اوبونتو متفاوت باشد.
این اطلاعات از تعدادی فایلهای متنی سرچشمه میگیرد. اطلاعات حسابهای کاربری در فایلی با نام /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 در مثال زیر توجه کنیم، میبینیم که این دسترسیها چگونه پیادهسازی شدهاند.
1 2 3 4 |
[me@linuxbox ~]$ id uid=1000(me) gid=1000(me) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46( plugdev),108(lpadmin),114(admin),1000(me) |
به کاراکتر اول در خروجی بالا توجه کنید. آن را به چهار بخش تقسیم کنید. کاراکتر اول از سمت چپ نوع فایل را مشخص میکند. جدول انواع فایل در زیر، مقادیر مختلف آن را توضیح داده است. ۹ کاراکتر باقیمانده را مشخصههای file mode مینامند. این کاراکترها را از سمت چپ سه یه سه از هم جدا کنید. اولین بخش سهتایی دسترسیها برای مالک فایل یا همان کاربر (File’s Owner) را مشخص میکند. بخش سهتایی دوم دسترسیها برای مالک گروه (Group Owner) را مشخص میکند.
این دسترسیها به ترتیب با کاراکترهای اختصاصی rwx تعریف میشوند که r به معنی دسترسی خواندن (Read)، w به معنی دسترسی نوشتن (Write) و x به معنی دسترسی اجرا (Execution) میباشد. اگر هر کدام از این دسترسیها از کاربر (User) یا گروه (Group) و یا همگان (World) منع شده باشد به جای آن علامت دش (-) گذاشته میشود.
جداول زیر این دسترسیها را به تفصیل بررسی کرده:
مشخصه | نام فایل |
---|---|
- | یک فایل عادی |
d | یک دایرکتوری (پوشه) |
l | یک لینک سمبولیک. توجه کنید که در لینکهای سمبولیک بقیه مشخصههای فایل همیشه rwxrwxrwx هستند و مقادیر بیارزشی هستند. مشخصههای واقعی فایل مربوط به خود فایلی هستند که لینک سمبولیک به آن اشاره میکند. |
c | یک فایل کاراکتر ویژه. این نوع فایل به یک دیوایس که دادهها را به یک جریان بایتها نگهداری میکند مثل ترمینال یا مودم اشاره دارد. |
b | یک فایل ویژه بلاک. این نوع فایل به یک دیوایس که دادههذ را در بلاکهایی مثل هارددیسک یا CD-ROM نگهداری میکند، دارد. |
مشخصه | فایلها | دایرکتوریها |
---|---|---|
r | به یک فایل اجازه میدهد تا باز شده و خوانده شود. | به محتویات دایرکتوری اجازه میدهد تا لیست شوند در صورتی که مشخصه اجرا نیز تنظیم شده باشد. |
w | به یک فایل اجازه داده میدهد نوشته یا کوتاه شود. هر چند این مشخصه به فایلها اجازه نمیدهد تا تغییر نام داده یا حذف شوند. توانایی حذف یا تغییر نام فایلها بوسیله مشخصههای دایرکتوری شناسایی میشود. | به فایلها درون یک دایرکتوری اجازه ایجاد، حذف و تغییر نام میدهد در صورتیکه مشخصهای اجرا تنظیم شده باشند. |
x | به یک فایل اجازه میدهد تا به جای یک برنامه رفتار کند و اجرا شود. فایلهای برنامه که در زبانهای برنامهنویسی نوشته شدهاند باید خواندنی باشند تا بتوانند اجرا شوند. | به یک دایرکتوری اجازه ورود میدهد، برای مثال cd directory |
درباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
دیدگاهتان را بنویسید