کنترل دسترسی ACL لینوکس چیست Access Control List
لیست های کنترل دسترسی ACL از جمله امکاناتی است که در هستۀ نسخۀ 2.6 خود را به شکل جدی نشان داد و به وسیله آن کاربران قادر خواهند بود، کنترل بیشتری بر روی مجوزهای فایل ها و شاخه ها داشته باشند. کنترل دسترسی ACL لینوکس چیست Access Control List ؟ بدین وسیله می توان برای کاربرانی غیر از مالک و گروه مالک فایل حق دسترسی تعریف کرد. مرسوم ترین ابزاری که جهت استفاده ازACl وجود دارد دستورات setfacl و getfacl هستند که در ادامه به بررسی عملکرد آنها می پردازیم. همچنین جهت استفاده از این گزینه بر روی پارتیشن های مورد نظر سیستم باید گزینۀ acl را در زمان اتصال دادن پارتیشن و یا راه اندازی سیستم در فایل /etc/fstab قرار دهیم.
LABEL=/1 / ext3 defaults 1
Dev/hda6 /boot ext3 defaults 1 2
Dev/hda6 /home ext3 defaults,acl 1 2/
Proc /proc proc defaults 0 0
Sysfs /sys sysfs defaults 0 0
/dev/hda7 /karamad ext3 defaults 0 0/
فرمان setfacl : توسط این دستور یک قانون جدید برای فایل یا پوشه مشخصی می توان تعریف کرد و دسترسی به آن را تنها به کاربران یا گروه خاصی محدود کرد. به طور مثال اگر بخواهیم کاربر demo تنها مجوز خواندن و نوشتن بر روی فایل test.sh داشته باشد و نتواند آن را اجرا کند. آنگاه داریم:
setfacl -m u : demo : rw test.sh#
فرمان getfact: این دستور جهت ننمایش لیست کنترل دسترسی هر یک از فایل یا شاخه های سیستم به کار می رود که شامل اطلاعاتی مانند نام فایل، گروه فایل و مجوز های آن است.
getfacl test.sh#
خروجی این دستور به شکل زیر است:
file: test.sh
owner: root
group: root
User: : r—
Other: : r–
از جمله مثال های کاربری این ابزار محدود کردن دسترسی کاربران به سایر قطعات سیستم است. به طور مثال اگر بخواهید مجوزهای دیسک درایو سیستم را طوری تعیین کنید که تنها کاربر ali بتواند از آن استفاده کند به شکل زیر عمل می کنیم:
chmod -R 700 /media/floppy#
setfacl -m u : ali : rwx /media/floppy#
فایل /etc/fstab: در زمان راه اندازی سیستم همل پارتیشن هایی از سیستم را که می خواهیم پس از ورود به سیستم در اختیار سایر کاربران قرار گرفته و روی سیستم mount شوند در قالب مشخصی داخل این فایل قرار می دهیم. علاوه بر این فایل، فایل دیگری به نام mtab در شاخه /etc وجود دارد که تمام دستگاههایی که هم اکنون روی سیستم سوار شده اندرا نمایش می دهند. تفاوت این دو فایل در این است که محتویات mtab به طور پویا تغییر می کند اما فایل fstab به این گونه نبوده و پیکر بندی داخل آن با هر بار راه اندازی به سیستم اعمال می شود. تنها کاربری که قدرت ویرایش کردن فایل fstab را داراست، کاربر ریشه است. اجزای اصلی این فایل در 6 ستون قرار می گیرند که در زیر نمونه هایی از این فایل را می توانید مشاهده کنید:
LABEL= /1 /ext3 defaults 1 1
Dev/hda6 /boot /ext3 defaults 1 2
Dev/hda6 /home ext3 defaults, acl 1 2
Proc /proc proc defaults 0 0
Sysfs /sys sysfs defaults 0 0
LABEL=SWAP-hda2 swap swap defaults 0 0
/dev/hda7 /karamad ext3 defaults 0 0
همان طور که مشاهده می کنید، ستون اول نام وسیله یا برچسب پارتیشن در شاخه /dev و ستون دوم نقطۀ اتصال آن را در سیستم فایل نشان می دهد. در ستون سوم نوع سیستم فایل پارتیشن مربوطه و در چهارمین ستون پارامترهایی که از آنها در اتصال پارتیشن به نقطه مربوطه استفاده می شود، درج می شود. دو ستون آخر وضعیت ساخت core dump و کنترل کردن پارتیشن ها در زمان راه اندازی سیستم را انجام می دهند. در صورتی که قصد دارید کاربران قابلیت دسترسی به پارتیشن خاصی را در زمان راه اندازی سیستم نداشته باشند، کافی است در بخش پارامترهای مربوط به آن در ستون چهارم فایل fstab عبارت noauto را درج کنید. جهت سوار کردن پارتیشن های سیستم پس از راه اندازی سیستم به نقاط اتصال از پیش تعیین شده باید از فرمان mount استفاده کنیم که در ادامه به بررسی این فرمان می پردازیم.
فرمان mount: به منظور دسترسی به سایر قطعات سخت افزاری و اتصال آنها به سیستم از این دستور استفاده می کنیم. شکل کلی دستور به صورت زیر است:
mount [-t fs_type] device_path mount_point_directory#
-t: برای تعیین نوع فایل سیستم استفاده می شود که یک سوئیچ اختیاری است.
Mount_point_directory: شاخه ای که قرار است وسیله مورد نظر به آن سوار کنیم.
از جمله گزینه هایی که در زمان اتصال یک وسیله مانند یک پارتیشن می توان آنها را اعمال کرد مجوزهای خواندن و نوشتن بر روی وسیلۀ مورد نظر پس از اتصال آن است که در فرمان با سوئیچ -o مشخص می شوند و به شکل زیر هستند:
mount -o ro# ——> موجب اتصال پارتیشن به شکل فقط خواندنی می شود.
mount -o rw# ——> موجب اتصال پارتیشن به شکل فقط خواندنی / نوشتنی می شود.
(پیش فرض)
mount -o ro /dev/sdb /mnt#
این مثال نشان می دهد که چگونه می توان دیسک سخت اسکازی دوم سیستم را به صورت فقط خواندنی به شاخۀ /mnt سوار کرد.
mount -w -o remount /dev/hda1#
در این مثال پارتیشن /dev/hda1 در محل اتصال قبلی خود با مجوز خواندن و نوشتن مجدداً mount می شود.
فرمان umount: عموماً این دستور جهت قطع ارتباط یک وسیله یا پارتیشن سوار شده به سیستم به کار می رود. این امر بیشتر جهت بالا بردن امنیت اطلاعات و عدم دسترسی سایر کاربران و برنامه های در حال اجرا به پارتیشن مورد نظر به کار می رود. شکل کلی دستور عبارت است:
umount device_name#
به جای نام وسیله می توان نقطۀ اتصال را نیز به عنوان ورودی به آن داد. در صورت پیاده کردن یک دستگاه در حین انجام عملیات خاص، هیچ نرم افزار یا برنامه کاربردی یا حتی سیستم عامل نیز به آن منبع دسترسی نخواهد داشت. همچنین در صورت پیاده کردن یک دستگاه، تمام فرایند های مربوط به آن دستگاه چنانچه بالا باشند از بین خواهند رفت. در صورتی که هنگام پیاده کردن یک پارتیشن پیغام device busy را دریافت کردید، باید همۀ فرایند هایی که هم اکنون در حال استفاده از پارتیشن یا دیسک مورد نظر هستند را از بین ببریم و سپس آن را پیاده کنیم که این کار توسط فرمان fuser انجام می گیرد و به شکل زیر است:
fuser -km /dev/sda#
umount /dev/sda#
توسط دستور fuser تمام فرایندهای مربوط به وسیلۀ سوار شده kill می شوند و سپس وسیله از حالت سوار بودن (mount) خارج می شود.
Automount: یکی از امکانات جدیدی که در هسته 2.6 لینوکس ظهور پیدا کرد، سرویسی به نام automount بود که قابلیت اتصال و قطع اتصال خودکار منابع ذخیره سازی سیستم را میسر می کرد. بدین وسیله منابع سیستم ( در زمانی که به پارتیشن های اتصال یافته نیازی نداریم) توسط دیگر فرایندهای سیستمی مورد استفاده قرار می گیرند و بازدهی سیستم از این طریق افزایش می یابد. فایل های اصلی پیکربندی این سرویس در شاخه /etc قرار داشته و به شرح زیر هستند.
/etc/auto.master#
/atc/auto.misc#
فایل مربوط به راه اندازی این سرویس نیز autofs بوده و در مسیر /etc/init.d قرار دارد.
کنترل دسترسی ACL لینوکس چیست Access Control List