Product SiteDocumentation Site

9.3. مدیریت دسترسی

لینوکس بدون شک یک سیستم چندکاربره حقیقی است، پس فراهم کردن یک سیستم محوز برای کنترل عملیات مورد مجاز روی فایل‌ها و دایرکتوری‌ها، که شامل تمام منابع و دستگاه‌های سیستم می‌شود، امری لازم و ضروری است (در یک سیستم یونیکس، هر دستگاهی توسط یک فایل یا دایرکتوری مشحص می‌گردد). این اصل درباره تمام سیستم‌های یونیکس صدق می‌کند، اما ذکر این نکته مفید است که کاربردهای پیشرفته دیگری نیز برای این منظور وجود دارند.
هر فایل یا دایرکتوری شامل مجوزهای مشخصی برای سه گروه از کاربران است:
سه نوع دسترسی قابل ترکیب هستند:
در مورد یک فایل این دسترسی‌ها به سادگی قابل درک هستند: دسترسی خواندن اجازه خواندن محتوا را می‌دهد (از جمله رونوشت گرفتن)، دسترسی نوشتن اجازه تغییر آن را می‌دهد و دسترسی اجراکردن اجازه اجرای فایل را می‌دهد (که در صورت برنامه بودن معنی دارد).
یک دایرکتوری به شیوه متفاوتی مدیریت می‌شود. دسترسی خواندن اجازه فهرست‌گیری از محتوای آن را می‌دهد (فایل‌ها و دایرکتوری‌ها)، دسترسی نوشتن اجازه ایجاد یا حذف فایل‌ها را می‌دهد و دسترسی اجرا کردن اجازه عبور و مرور از دایرکتوری را می‌دهد (به خصوص هنگام استفاده از دستور cd). توانایی عبور از یک دایرکتوری بدون آنکه قادر باشیم محتوای آن را بخوانیم اجازه دسترسی به موارد شناخته شده در آن را می‌دهد، اما در صورتی که نام یا محل فایل را ندانیم نمی‌توان آن‌ها را پیدا کرد.
سه دستور وجود دارند که مجوزهای مربوط به یک فایل را کنترل می‌کنند:
دو روش برای ارائه دسترسی‌ها وجود دارد. از میان آن‌ها، شیوه نمادین به سادگی فرا گرفته و آموخته می‌شود. این شیوه شامل حروف نمادین ذکر شده در بالا هستند. می‌توانید برای هر دسته‌بندی از کاربران (u/g/o) دسترسی تعیین کنید با تنظیم آن‌ها به صورت انفرادی (با =)، با افزودن (+) یا کاستن (-). بنابراین فرمول u=rwx,g+rw,o-r به مالک فایل دسترسی خواندن، نوشتن و اجراکردن، به گروه مالک دسترسی خواندن و نوشتن و دسترسی خواندن را از سایر افراد می‌گیرد. دسترسی‌هایی که در چنین دستوری ذکر نشده باشند بدون تغییر باقی می‌مانند. حرف a، به معنی “all”، تمام دسته‌بندی‌های کاربران را شامل می‌شود. بنابراین، a=rx به سه دسته‌بندی موجود تمام دسترسی‌ها را (خواندن و اجراکردن، ولی نه نوشتن) می‌دهد.
نمایش عددی (اوکتال) هر دسترسی را به یک عدد نسبت می‌دهد: ۴ برای خواندن، ۲ برای نوشتن و ۱ برای اجراکردن. ترکیب دسترسی‌های یک گروه را با جمع اعداد آن به دست می‌آوریم. هر مقدار به دسته‌بندی‌های مختلف کاربران نسبت داده می‌شود درست به همان ترتیبی که قرار دارند (مالک، گروه و دیگران).
برای نمونه، دستور chmod 754 file دسترسی‌های زیر را تنظیم می‌کند: خواندن، نوشتن و اجراکردن برای مالک (چرا که ۷ = ۴ + ۲ + ۱)؛ خواندن و اجراکردن برای گروه (چرا که ۵ = ۴ + ۱)؛ خواندن برای دیگران. عدد 0 یعنی دسترسی وجود ندارد؛ بنابراین دستور chmod 600 file اجازه دسترسی خواندن و نوشتن را به مالک می‌دهد و هیچ دسترسی دیگری را شامل نمی‌شود. متداول‌ترین دسترسی‌های موجود عبارتند از 755 برای فایل‌ها و دایرکتوری‌های قابل اجرا و 644 برای فایل‌های داده‌ای.
برای نمایش دسترسی‌های ویژه، می‌توانید یک عدد چهارم نیز به قبل از آن اضافه کنید که بیت‌های setuid، setgid و sticky به ترتیب نشانگر ۴ و ۲ و ۱ هستند. دستور chmod 4754 بیت setuid را به همراه دسترسی‌های موجود اضافه می‌کند.
نکته اینکه استفاده از شیوه عددی برای تنظیم تمام دسترسی‌ها بکار می‌رود؛ پس نمی‌توانید از آن برای افزودن تنها یک دسترسی، مانند دسترسی خواندن برای گروه مالک، استفاده کنید چرا که باید تمام دسترسی‌های موجود و اعداد مربوط به آن‌ها را نیز به حساب بیاورید.