مجوزهای سیستم فایل

بیشتر سیستم‌های فایل شیوه‌هایی برای انتصاب مجوزها یا حق دسترسی به کاربران یا گروه‌های کاربران دارند. این سیستم‌ها بر توانایی کاربران در زمینه دیدن، تغییر دادن، وارد شدن، و اجرای محتوای سیستم فایل نظارت می‌کنند.
گوناگونی سیستم‌های عامل
سیستم‌های شبه یونیکسی و سیستم‌های مبتنی بر پازیکس، شامل سیستم‌های مبتنی بر لینوکس و تمامی نسخه‌های مک او اس اکس، سیستمی برای مدیریت مجوزهای فایل دارند که در این مقاله به آن‌ها «مجوزهای مرسوم یونیکس» می‌گوییم. بیشتر این سیستم‌ها همچنین از نوعی فهرست کنترل دسترسی پشتیبانی می‌کنند که یا اختصاصی است (برای مثال HP-UX ACLs قدیمی) یا POSIX.1e ACLs، بر اساس طرح و پیشنویس اولیه پازیکس که در سال ۱۹۹۷ از آن صرف نظر شد، یا سیستم فایل شبکه‌ای ACLs که قسمتی از استاندارد NFSv4 می‌باشد.
مجوزهای مرسوم یونیکس
مجوزهای سیستم شبه‌یونیکسی در سه دسته یا محدوده مدیریت می‌شوند. این محدوده‌ها با نام‌های کاربر ، گروه و دیگر شناخته می‌شوند.
وقتی که یک فایل روی یک سیستم شبه یونیکسی ساخته می‌شود. مجوزهای آن توسط یوماسک فرایندی که آن را ساخته است، محدود می‌شوند.
دسته‌ها
کاربر مالک فایل‌ها و دیرکتوری‌ها می‌باشد. کاربر مالک، دسته کاربر یک فایل را مشخص می‌کند. مجوزهایی به مالک فایل اختصاص داده می‌شود.
به فایل‌ها و دیرکتوری‌ها یک گروه اختصاص داده می‌شود که دسته گروه را برای فایل مشخص می‌کند. مجوزهایی به اعضای گروه فایل اختصاص داده می‌شود. مالک فایل ممکن است یکی از اعضای گروه فایل نیز باشد.
کاربرانی که نه مالک فایل و نه عضوی از گروه فایل باشند، در دسته دیگر قرار می‌گیرند. مجوزهایی به دسته دیگر اختصاص داده می‌شود.
مجوزهای یک کاربر بر اساس دسته‌هایی که به آن تعلق دارد به ترتیب کاربر (مالک) ، گروه ، دیگر مشخص می‌شود. مثلا مجوزهایی به کاربری که مالک یک فایل است داده می‌شود که به دسته کاربر فایل اختصاص داده شده، فارغ از اینکه چه مجوزهایی به دسته گروه یا دسته دیگر اختصاص داده شده است.
مجوزها
سیستم‌های شبه یونیکسی سه مجوز خاص را پیاده‌سازی می‌کنند که این مجوزها را به کاربران هر یک از سه دسته کاربر ، گروه ، و دیگر می‌توان اختصاص داد:
خواندن ، مجوز خواندن، قابلیت خواندن فایل را به کاربران می‌دهد. وقتی از این مجوز برای دیرکتوری‌ها استفاده می‌شود، این مجوز قابلیت خواندن نام فایل‌های موجود در دیرکتوری را به کاربران می‌دهد ولی اجازه کسب اطلاعات بیشتر در مورد محتویات دیرکتوری از قبیل محتویات فایل‌ها یا نوع فایل‌ها یا اندازه فایل‌ها یا اطلاعات مربوط به مالکیت فایل‌ها یا اطلاعات مربوط به مجوزهای فایل‌ها را به کاربر نمی‌دهد.
نوشتن ، مجوز نوشتن قابلیت اصلاح و دستکاری محتویات یک فایل را به کاربر می‌دهد وقتی از این مجوز برای دیرکتوری‌ها استفاده می‌شود، این مجوز اجازه اصلاح محتویات دیرکتوری یعنی اعمالی از قبیل ساخت فایل‌های درون دیرکتوری یا پاک کردن فایل‌های درون دیرکتوری یا تغییر نام فایل‌های درون دیرکتوری را به کاربران می‌دهد.
اجرا ، مجوز اجرا قابلیت اجرای فایل را به کاربران می‌دهد. این مجوز باید فقط برای برنامه‌هایی از قبیل اسکریپت شل که قابل اجرا شدن هستند گذاشته شود تا سیستم عامل بتواند آن‌ها را اجرا کند. وقتی از این مجوز برای دیرکتوری‌ها استفاده می‌شود، این مجوز اجازه دسترسی به محتویات فایل‌ها و اطلاعات فرامتنی را می‌دهد اما اجازه فهرست کردن فایل‌های دیرکتوری(در لینوکس دستور ls) را نمی‌دهد مگر در صورتی که مجوز خواندن نیز داده شده باشد.
نشان‌گذاری مجوزهای مرسوم یونیکس
نشان‌گذاری نمادی
مجوزهای یونیکس یا در قالب نشان‌گذاری نمادی یا نشان‌گذاری هشت هشتی هستند.
شکل رایج مجوزها، نشان‌گذاری نمادی است که خروجی دستور ls -l به اینصورت مجوزها را نمایش می‌دهد.
سه سه‌تایی مجوز
اولین سه‌تایی
کارهایی که مالک می‌تواند انجام دهد
دومین سه‌تایی
کارهایی که اعضای گروه می‌توانند انجام دهند
سومین سه‌تایی
کارهایی که کاربران دیگر می‌توانند انجام دهند
هر سه‌تایی
حرف اول
r: قابلیت خواندن
حرف دوم
w: قابلیت نوشتن
حرف سوم
x: قابلیت اجرا کردن
اولین حرف خروجی ls مربوط به نوع فایل می‌باشد و ربطی به مجوزها ندارد. ۹ حرف دیگر در سه مجموعه‌ سه‌تایی قرار می‌گیرد که هر مجموعه مربوط به یک دسته از مجوزهاست. اولین مجموعه مربوط به دسته کاربر(مالک) میباشد و دومین دسته مربوط به دسته گروه و سومین مربوط به دسته دیگر می‌باشد.
هر کدام از ۳ حرف مربوط به مجوزهای خواندن و نوشتن و اجرا می‌باشند:
r اگر خواندن مجاز باشد، اگر مجاز نباشد جای آن حرف - قرار می‌گیرد
w اگر نوشتن مجاز باشد، اگر مجاز نباشد جای آن حرف - قرار می‌گیرد
x اگر اجرا مجاز باشد، اگر مجاز نباشد جای آن حرف - قرار می‌گیرد
در ذیل نمونه‌هایی از نشان‌گذاری نمادی به عنوان مثال بیان می‌شوند:
-rwxr-xr-x : یک فایل معمولی که دسته کاربر آن مجوز کامل را دارد و دسته‌های گروه و دیگر مربوط به آن فایل فقط مجوزهای خواندن و نوشتن را دارند.
crw-rw-r-- : یک فایل دستگاهی کاراکتری که دسته‌های کاربر و گروه آن دارای مجوزهای خواندن و نوشتن می‌باشند و دسته دیگر آن فقط دارای مجوز خواندن هستند.
dr-x
: یک دیرکتوری که دسته کاربر آن مجوز خواندن و نوشتن را دارد و دسته‌های گروه و دیگر مربوط به آن فایل مجوزی ندارند.
نشان‌گذاری عددی
یک روش دیگر برای نشان دادن مجوزهای یونیکسی، نشان‌گذاری اوکتال یا هشت‌هشتی یا پایه هشت می‌باشد همانطور که stat -c %a نشان می‌دهد. این نشان‌گذاری حداقل از ۳ رقم تشکیل شده است. هر کدام از ۳ رقم یک جزء از مجوزها را نشان می‌دهد: مالک، گروه، دیگر.
هر کدام از این ارقام مجموع بیت‌های تشکیل دهنده آن در سیستم اعداد دودوئی است. در نتیجه هر بیت بر اساس ارزش مکانیش در جمع شرکت می‌کند:
بیت خواندن ارزش ۴ را دارد(به باینری ۱۰۰)
بیت نوشتن ارزش ۲ را دارد(به باینری ۰۱۰)
بیت اجرا ارزش مکانی ۱ را دارد(به باینری ۰۰۱)
این مقادیر هیچگاه ترکیبات مبهم ایجاد نمی‌کنند. هر مجموع یک مجموعه مجوزها را نشان می‌دهد. اگر بخواهیم کمی فنی‌تر موضوع را بررسی کنیم به این نتیجه می‌رسیم که این روش در حقیقت تبدیل عدد باینری به اوکتال می‌باشد. هر بیت از این سه بیت مربوط به یک مجوز متمایز(خواندن و نوشتن و اجرا) است.
در ذیل نمونه‌هایی از نشان‌گذاری عددی به عنوان مثال بیان می‌شود:
نشان‌گذاری نمادی
نشان‌گذاری عددی
توضیح فارسی
۰۰۰۰
هیچ مجوزی داده نشده
-rwx
۰۷۰۰
خواندن، نوشتن، اجرا فقط برای مالک
-rwxrwx---
۰۷۷۰
خواندن، نوشتن، و اجرا برای مالک و گروه
-rwxrwxrwx
۰۷۷۷
خواندن، نوشتن، و اجرا برای مالک و گروه و دیگران
---x--x--x
۰۱۱۱
اجرا
--w--w--w-
۰۲۲۲
نوشتن
--wx-wx-wx
۰۳۳۳
نوشتن و اجرا
-r--r--r--
۰۴۴۴
خواندن
-r-xr-xr-x
۰۵۵۵
خواندن و اجرا
-rw-rw-rw-
۰۶۶۶
خواندن و نوشتن
-rwxr
۰۷۴۰
مالک می‌تواند بخواند و بنویسد و اجرا کند
گروه می‌تواند فقط بخواند
دیگران هیچ مجوزی ندارند