لینوکس بدون شک یک سیستم چندکاربره حقیقی است، پس فراهم کردن یک سیستم محوز برای کنترل عملیات مورد مجاز روی فایلها و دایرکتوریها، که شامل تمام منابع و دستگاههای سیستم میشود، امری لازم و ضروری است (در یک سیستم یونیکس، هر دستگاهی توسط یک فایل یا دایرکتوری مشحص میگردد). این اصل درباره تمام سیستمهای یونیکس صدق میکند، اما ذکر این نکته مفید است که کاربردهای پیشرفته دیگری نیز برای این منظور وجود دارند.
هر فایل یا دایرکتوری شامل مجوزهای مشخصی برای سه گروه از کاربران است:
مالک آن (که با حرف u
از کلمه “user” نمایش مییابد)؛
گروه مالک آن (که با حرف g
از کلمه “group” نمایش مییابد) که بیانگر تمام اعضای آن گروه است؛
دیگران (که با حرف o
از کلمه “other” نمایش مییابد).
سه نوع دسترسی قابل ترکیب هستند:
خواندن (که با خرف r
از کلمه “read” نمایش مییابد)؛
نوشتن یا تغییردادن (که با حرف w
از کلمه “write” نمایش مییابد).
اجرا کردن (که با حرف x
از کلمه “eXecute” نمایش مییابد).
در مورد یک فایل این دسترسیها به سادگی قابل درک هستند: دسترسی خواندن اجازه خواندن محتوا را میدهد (از جمله رونوشت گرفتن)، دسترسی نوشتن اجازه تغییر آن را میدهد و دسترسی اجراکردن اجازه اجرای فایل را میدهد (که در صورت برنامه بودن معنی دارد).
یک دایرکتوری به شیوه متفاوتی مدیریت میشود. دسترسی خواندن اجازه فهرستگیری از محتوای آن را میدهد (فایلها و دایرکتوریها)، دسترسی نوشتن اجازه ایجاد یا حذف فایلها را میدهد و دسترسی اجرا کردن اجازه عبور و مرور از دایرکتوری را میدهد (به خصوص هنگام استفاده از دستور cd
). توانایی عبور از یک دایرکتوری بدون آنکه قادر باشیم محتوای آن را بخوانیم اجازه دسترسی به موارد شناخته شده در آن را میدهد، اما در صورتی که نام یا محل فایل را ندانیم نمیتوان آنها را پیدا کرد.
سه دستور وجود دارند که مجوزهای مربوط به یک فایل را کنترل میکنند:
chown user file
مالک فایل را تغییر میدهد؛
chgrp group file
گروه مالک را تغییر میدهد؛
chmod rights file
مجوزهای مربوط به فایل را تغییر میدهد.
دو روش برای ارائه دسترسیها وجود دارد. از میان آنها، شیوه نمادین به سادگی فرا گرفته و آموخته میشود. این شیوه شامل حروف نمادین ذکر شده در بالا هستند. میتوانید برای هر دستهبندی از کاربران (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
را به همراه دسترسیهای موجود اضافه میکند.
نکته اینکه استفاده از شیوه عددی برای تنظیم تمام دسترسیها بکار میرود؛ پس نمیتوانید از آن برای افزودن تنها یک دسترسی، مانند دسترسی خواندن برای گروه مالک، استفاده کنید چرا که باید تمام دسترسیهای موجود و اعداد مربوط به آنها را نیز به حساب بیاورید.