
اگر کمی در لینوکس عمیق شوید، ردپای فناوریهای بسیار قدیمی را میبینید که هنوز کار میکنند. یکی از مهمترین این نمونهها سیستم مجوزهای فایل (File Permissions) است که با سه حرف rwx شناخته میشود و پس از حدود پنج دهه، همچنان تعیین میکند چه کسی میتواند به هر فایل دسترسی داشته باشد.
از Multics تا Unix؛ نیاز به سیستمی سادهتر
برای درک این سیستم باید به دهه ۱۹۶۰ بازگردیم. در آن دوران سیستمعاملی به نام Multics وجود داشت که برای هر فایل فهرستی از مجوزها نگه میداشت. این فهرست مشخص میکرد هر کاربر، گروه پروژه و سطح دسترسی او چه اختیاراتی دارد. چنین روشی امن بود، اما از نظر مدیریتی پیچیده و پرهزینه محسوب میشد؛ زیرا بررسی این فهرست برای هر درخواست دسترسی، حافظه و توان پردازشی مصرف میکرد.
کنث تامپسون (Ken Thompson) و دنیس ریچی (Dennis Ritchie) در سال ۱۹۶۹ از Multics جدا شدند و به دنبال روشی سبکتر برای سیستمعامل جدید خود یعنی یونیکس (Unix) بودند. آنها دریافتند که برای تعیین دسترسی فایلها نیازی به فهرست بسیار ریزدانه از هر کاربر و هر گروه نیست و میتوان با تعداد محدودی عدد، کار را انجام داد.
سه بیت، سه سطح دسترسی
در راهنمای برنامهنویس یونیکس (Unix Programmer's Manual) در سال ۱۹۷۱، تامپسون و ریچی از ریاضیات پایه ۲ (Base-2) برای نمایش سطح دسترسی استفاده کردند. در این روش، هر رقم دودویی میتواند ۰ یا ۱ باشد. آنها سه رقم را به سه مفهوم اختصاص دادند: خواندن (Read)، نوشتن (Write) و اجرا (Execute). مقدار ۱ به معنای مجاز بودن و مقدار ۰ به معنای غیرمجاز بودن است.
این سه رقم برای سه نوع کاربر تکرار میشود: مالک فایل (Owner)، اعضای گروه (Group) و سایر کاربران (Others). برای نمونه، ترکیب 111 101 100 به این معناست که مالک همه دسترسیها را دارد، گروه میتواند فایل را بخواند و اجرا کند اما آن را تغییر ندهد، و سایر کاربران فقط اجازه خواندن دارند. همین ترکیب در پایه ۸ (Base-8) به عدد 754 تبدیل میشود.
ردپای rwx در لینوکس امروز
در سال ۱۹۹۱، لینوس توروالدز (Linus Torvalds) در حال ساخت لینوکس بود و میخواست آن را با استاندارد POSIX سازگار کند تا با ابزارهای موجود یونیکس کار کند. به همین دلیل، سیستم rwx به لینوکس هم راه یافت و از همان ابتدا بخشی از آن شد.
امروز هم میتوانید اثر این سیستم را در ترمینال (Terminal) ببینید. اگر دستور ls -l را اجرا کنید، بخش سمت چپ هر خط همان مجوزهای rwx را نشان میدهد. برای نمونه، خروجی زیر را در نظر بگیرید:
drwxr-xr-x. 1 simon simon 76 Oct 5 19:26 AppImages
این رشته ظاهراً نامنظم از حروف، در واقع همان سیستم rwx است که پس از حدود پنج دهه هنوز فعال است. این رشته از چهار بخش تشکیل شده است:
- حرف d در ابتدا نشان میدهد که این مورد یک دایرکتوری (Directory) است.
- سه حرف rwx بعد از d، مجوزهای مالک را نشان میدهد: خواندن، نوشتن و اجرا.
- بخش r-x بعدی مجوزهای گروه است: خواندن و اجرا، اما بدون اجازه نوشتن. نبود مجوز نوشتن با خط تیره در جای حرف w نمایش داده میشود.
- بخش نهایی r-x هم مربوط به سایر کاربران است و مانند گروه، فقط خواندن و اجرا را مجاز میداند.
این ترکیب معادل 111 101 101 یا همان 755 در پایه ۸ است؛ روشی بسیار سادهتر از فهرستهای طولانی مجوز در سیستمهای قدیمی. لینوکس سرشار از فناوریهای قدیمی است و سیستم مجوزهای فایل یکی از ماندگارترین نمونههای آن به شمار میرود.