مهم نیست چه مدت با لینوکس کار کرده باشید، کارشناس امور امنیتی باشید یا یک هکر آزاد اندیش، مجوزهای دسترسی پدیدهای است که برای هر کاربر لینوکس جذاب است. با این مقدمه، امروز در نظر دارم ۱۳ مجوز دسترسی جالبی که توسط فایل سیستمهای ext2، ext3 و ext4 به کار میروند را معرفی کنم.
معرفی مجوزهای دسترسی عمومی لینوکس از حوصله این وبلاگ خارج است، کاربران علاقهمند میتوانند به مقالهای که در این خصوص در وب سایت لینوکس ریویو نوشتهام مراجعه کنند.
همانطور که میدانید، مجوزهای دسترسی عمومی لینوکس بر مبنای دو دستور chmod و chown استوار شدهاند و اطلاع از اآنها با کمک دستور زیر میسر است:
ls -l
دستور chmod عموما برای تعیین سه سطح دسترسی «خواندن»، «نوشتن» و «اجرا کردن» به کار میرود ولی سطوح دسترسی دیگری وجود دارد که توسط فایل سیستمهای ext2 به بعد معرفی شدهاند امکان مدیریت بهتر سیستم را فراهم میآورند، برای آشنایی با این سطوح دسترسی دو دستور ارائه شدهاند:
- دستور نمایش خصیصهها (lsattr)
- دستور تغییر خصیصهها (chattr)
برای اطلاع از خصیصههای یک دایرکتوری یا فایل به دستور lsattr را به این شکل میتوان به خدمت گرفت:
lsattr /var
خروجی این دستور بسیار شبیه به خروجی دستور ls است. با این تفاوت که این ۱۳ خصیصه را معرفی میکند:
خصیصه | شرح | قابل اعمال توسط chattr |
---|---|---|
A | رکورد atime فایلی که خصیصه A را داشته باشد، تغییر نخواهد کرد. این باعث کاهش بار عملیات ورودی/خروجی دیسک در لپتاپها و دیسکهای فلش میشود. | بله |
a | فایلی که خصیصهی a را داشته باشد، فقط در حالت append قابل نوشته شدن است. | بله، فقط توسط کاربر ریشه |
c | فایلی که خصیصهی c را داشته باشد به صورت خودکار توسط کرنل فشرده میشود. خواندن این فایل دادههای فشرده نشده را نمایش میدهد. دادههای نوشته شده روی این فایل پیش از ذخیره شدن بر روی دیسک، فشرده میشود. | بله، توضیحات را بخوانید |
D | وقتی یک دایرکتوری با خصیصهی D تغییر کند، تغییرات به صورت همزمان روی دیسک نوشته میشود، این رفتار معادل این است که ماونت آپشن dirsync بر روی فایلها اعمال شود. | بله |
d | فایلی که خصیصه d را داشته باشد، موقع پشتیبانگیری با برنامه dump نادیده گرفته خواهد شد. | بله |
E | خصیصه E توسط پچهای آزمایشی فشردهسازی استفاده میشوند برای اینکه اعلان کنند فایل فشرده شده خطایی در فشردهسازی دارد. | خیر |
e | این خصیصه بیانگر این است که فایل برای نگاشت بلوکهای دیسک از extents استفاده میکند. | خیر |
I | خصیصه I توسط کد htree برای بیان اینکه یک دایرکتوری در حال ایندکس شدن با درختهای هش است، به کار میرود. | خیر |
i | وقتی فایلی خصیصه i را داشته باشد، قابل تغییر نیست: نمیتوان آن را حذف کرد، تغییر نام داد یا لینکی به آن ایجاد کرد و هیچ دادهای بر روی آن نمیتوان نوشت. | بله، فقط توسط کاربر ریشه |
j | فایل با خصیصه j باعث میشود اگر فایل سیستم با آپشن data=ordered یا data=writeback ماونت شده باشند، همهی دادهها پیش از نوشته شدن بر روی خود فایل بر روی ژورنال (ext3) نوشته شوند، اگر فایل سیستم قبلا با آپشن data=journal ماونت شده باشد این مکانیزم به صورت پیشفرض اتفاق میافتد و این خصیصه بیاثر خواهد بود. | بله، فقط توسط کاربر ریشه |
s | وقتی فایلی با خصیصه s حذف شود، بلوکهای آن صفر میشود و بر روی دیسک نوشته میشود. این خصیصه برای حذف ایمن فایلها بدون امکان بازگشت مفید است. | بله، توضیحات را بخوانید |
S | وقتی فایلی با خصیصه S تغییر کند، تغییرات به صورت همزمان روی دیسک نوشته میشوند، این معادل آپشن ماونت sync است که به فایلها اعمال میشود. | بله |
T | وجود خصیصه T بر یک دایرکتوری، یک راهنمایی به تخصیصگر بلوک است که در ext3 و ext4 استفاده میشود تا اعلام کند زیردایرکتوریها این دایرکتوری بهم مرتبط نیستند و بنابراین، باید برای دسترسی سریعتر پخش شوند. به عنوان مثال، این ایدهی خیلی خوبی است که خصیصه T را به دایرکتوری /home اعمال کنید، تا زیردایرکتوریهای /home/john و /home/mary در بلوکهای جداگانهای ذخیره شوند. در صورت عدم وجود این خصیصه، تخصیصگر بلوک Orlov سعی خواهد کرد زیردایرکتوریها را تا حد امکان در بلوکهای نزدیک بهم قرار دهد. | بله |
t | فایلی با خصیصه t بخش بلوک ناقص (partial block gragment) را در انتهای خود جایی که به فایل دیگری پیوسته باشد، ندارد (این برای فایل سیستمهایی است که از پیوستگی-انتها (tail-merging) پشتیبانی میکنند). این برای برنامههایی مثل LILO لازم است که مستقیما فایل سیستم را میخوانند و پیوستگی-انتها را متوجه نمیشوند. نکته: تا این زمان، فایل سیستمهای ext3 و ext2 هنوز (بجز در پچهای آزمایشی) از پیوستگی-انتها پشتیبانی نمیکنند. | بله |
u | وقتی فایلی با خصیصه u حذف میشود، محتویاتش باقی میماند. این خصیصه اجازه میدهد که کاربر بتواند فایلهایش را پس از حذف شدن برگرداند. | بله، توضیحات را بخوانید |
X | خصیصه X توسط پچهای فشردهسازی آزمایشی استفاده میشود تا بیان کند که محتویات خام یک فایل فشردهشده به طور مستقیم میتواند خوانده شود. | خیر |
Z | خصیصه Z توسط پچهای فشردهسازی آزمایشی استفاده میشود تا بیان کند که فایل فشردهشده اصطلاحا «کثیف» است. | خیر |
توضیحات:
- خصیصههای c، s و u در فایل سیستمهای ext2 و ext3 در نسخههای فعلی کرنل لینوکس فعلی، پیادهسازی نشدهاند. این خصیصهها در نسخههای آتی فایل سیستمهای ext2 و ext3 پیادهسازی خواهند شد.
- آپشن j فقط زمانی مفید است که فایل سیستم به حالت ext3 ماونت شده باشد.
- آپشن D فقط بر روی کرنلهای لینوکس ۲.۵.۱۹ و بعد از آن مفید است.
- حدف کردن و یا اعمال کردن خصیصههای a، i فقط توسط کاربر ریشه یا پروسهای که خصیصه CAP_LINUX_IMMUTABLE را داشته باشد امکان پذیر است.
- حذف کردن و یا اعمال خصیصهی j نیز توسط کاربر ریشه یا پروسهای که خصیصه CAP_SYS_RESOURCE را داشته باشدمیسر است.
اعمال یا حذف کردن خصیصههای قابل اعمال با chattr بسیار ساده است. بعنوان مثال برای تغییر ناپذیر کردن دستور ls کافی است وارد کنیم:
chattr +i /bin/ls
حذف کردن این خصیصه نیز به راحتی عوض کردن علامت + با علامت – در دستور بالاست:
chattr -i /bin/ls
خب خسته نباشید. این مطلب هم به پایان رسید. نظراتتون رو همین پایین مطرح کنید. 🙂
منابعی که من استفاده کردم عبارتند است:
- کتاب ubuntu linux toolbox تالیف آقایان Christopher Negus و François Caen از انتشارات Wiely
- صفحهی راهنمای دستور chattr در وب سایت die.net
- مجوزهای دسترسی گنولینوکس به زبان آدمیزاد در وب سایت linuxreview.ir