لینوکس جنبههای زیادی را در بر میگیرد که یک لینوکس کار باید با تمامی آنها آشنا باشد. یکی از موضوعات مهم هر رایانۀ لینوکسی Permission یا همان جواز دسترسی پروندهها و پوشههایی است که شما روی رایانۀ لینوکسی خود دارید. حالا چه این رایانه یک رایانۀ رومیزی و شخصی باشد؛ چه یک رایانۀ سرور. به عبارتی ساده Permission یا جواز دسترسی تعیین میکند که روی یک سیستم لینوکس چه کسانی بتوانند یک پرونده یا پوشه را ویرایش کنند یا آن را بخوانند یا اجرایش نمایند. از آنجایی که در سایت وبنولوژی شما با یک دورۀ کامل آموزش مدیریت و کار با سرور لینوکس طرف هستید، بحث جواز دسترسی را حتماً باید یاد داشته باشید و در این مقاله به این موضوع به صورت موشکافی شده میپردازیم. البته مباحث زیادی راجع به Permission وجود دارد که آنها را به نوشتههای بعدی موکول خواهیم کرد.
Permission که ما از آن با عنوان “جواز دسترسی” هم نام خواهیم برد، یک عدد ۹ رقمی است. البته بهتر است گفته شود، یک عبارت ۱۰ نویسهای است. اولین نویسه از سمت چپِ جواز دسترسی، مربوط به این است که نوع آن پرونده یا پوشه چیست که حالا توضیحاتش را خدمت شما خواهم داد.
در آموزشهای قبلی با نحوۀ فهرست کردن محتویات یک مسیر در لینوکس آشنا شدید که با دستور ls قابل انجام بود. برای این که با استفاده از این دستور جواز دسترسیِ هر پوشه یا پرونده را هم ببینیم، باید به شکل زیر از مشخصۀ l هم استفاده کنیم:
ls -l
نتیجهای که به ما برگردانده میشود، به این صورت خواهد بود:
[root@jamall ~]# ls -l -rwxrwxrwx. 1 root root 22549 Oct 2 2015 shell.sh -rw-r--r--. 1 root root 3263 Oct 2 2015 1534.log -rw-------. 1 root root 1099 Mar 15 2014 anaconda-ks.cfg
چهار تا پرونده در اینجا وجود دارد که هر کدام دارای یک نوع جواز دسترسی است. آن عبارت اول تا نقطه، همان جواز دسترسی پروندههای ماست. مثلاً rwxrwxrwx جواز دسترسی پروندۀ sell.sh میباشد. جوازهای دسترسی را به صورت عددی هم نشان میدهند. مثلاً جواز دسترسی همین پرونده به شکل عددی ۷۷۷ خواهد بود.
اما اول میپردازیم به نویسۀ اول هر Permission که معمولاً میتواند یکی از موارد زیر باشد:
- – : یک پروندۀ ساده
- b : وسیله قعطه (Block Device)
- c : وسیله نویسه (Character Device)
- d : پوشه
- l : پیوند نمادین (Symbolic Link)
پس از آنجایی که در خروجی دستور ls بالا تمامی Permissin های مورد نظر در ابتدا دارای – هستند، تمامی آنها پرونده هستند. اما حالا میرویم سراغ خود جواز دسترسی.
در لینوکس، رایانۀ ما میتواند چندین کاربر داشته باشد. این کاربران میتوانند درون گروههایی دسته بندی شوند. اطلاعات کاربران درون پروندۀ /etc/passwd ذخیره میشود و اطلاعات گروههای کاربری در /etc/group ذخیره میشود. حالا فرض کنید طبق خروجی بالا پروندۀ sell.sh دارای جواز دسترسی rwxrwxrwx میباشد. این جواز تعیین میکند که چه کاربرهایی و چه گروههایی امکان خواندن، ویرایش و اجرا کردن پروندۀ مذکور را دارند. هر حرف r، w و x نمایندۀ یک فعالیت است:
- r : خواندن (read)
- w : نوشتن یا همان ویرایش کردن (write)
- x : اجرا کردن پرونده، یا اگر پوشه بود امکان جستجو درون آن (execute)
اگر جواز دسترسی rwxrwxrwx را به سه قسمت سه نویسهای تقسیم کنیم، سه قسمت اول از سمت چپ (آبی) مربوط به دسترسیهای کاربری است که صاحب این پرونده است. سه قسمت دوم (قرمز)، مربوط به دسترسیهای گروهی است که این پرونده درون آن قرار دارد. و سه قسمت سوم (سبز) مربوط به دسترسیهای دیگر کاربرانی است که روی همین سیستم حساب کاربری دارند.
پس تا اینجا میتوانیم بهفمیم که پروندۀ sell.sh توسط همۀ کاربرانی که روی سیستم لینوکس ما حساب کاربری دارند، میتواند خوانده شود، ویرایش شود و همچنین اجرا گردد. همانطور که میدانید ما با دستور useradd میتوانستیم کاربر جدیدی را در سیستم تعریف کنیم که اگر گروهی برای آن در نظر گرفته نشده باشد، همزمان با ساخته آن کاربر، گروه معادل همان کاربر هم ساخته خواهد شد. حالا این کاربر وارد حساب کاربری خود میشود و به مسیری میرود که پروندۀ sell.sh در آنجا وجود دارد. از آنجایی که جواز دسترسی این پرونده rwxrwxrwx یا ۷۷۷ است، وی میتواند آن را بخواند، ویرایش کند و از آن جایی که این پرونده یک شِل است، آن را اجرا کند.
ما در سرور لینوکس به غیر از این گونه کاربران، کاربرها یا گروههای دیگری هم داریم که توسط فردی استفاده نمیشوند. یعنی شخصی نمیتواند با آنها وارد حساب لینوکس شوید. اما سرویسهایی هستند که با استفاده از آن کاربر اقدام به اجرا کردن یا دسترسی به اسناد مختلف روی قسمتهای مختلف سرور میکنند. مثلاً فرض کنید بستۀ نرم افزاری Apache را نصب کردید و کاربر و گروهی با نام apache هم به جمع کاربران و گروههای لینوکس شما اضافه خواهند شد. این کاربر یا گروه فقط میتواند به پروندههایی که جواز آنها برای او مجاز است، دسترسی داشته باشد و آنها را بخواند، ویرایش کند یا اجرا نماید.
پس تا الان فهمیدیم که جوازهای دسترسی اسناد یا پوشهها روی لینوکس چقدر میتواند به امنیت سیستم اضافه کند. این یکی از دلایلی است که گفته میشود لینوکس فوق العاده امن است. اما شاید این سوال برای شما پیش آمده باشد که از کجا میتوانیم بفهمیم که یک پرونده یا پوشه مختص چه کاربر و چه گروهی است که با توجه به آن جواز دسترسی معنا پیدا میکند؟
خوب، دوباره به نتیجۀ دستور ls بر میگردیم. خط زیر را در نظر بگیرید:
-rwxrwxrwx. 1 root root 22549 Oct 2 2015 sell.sh
بخش اول از سمت چپ که همان جواز دسترسی (Permission) بود. به بخش دوم کار نداریم. به بخش سوم (آبی) و چهارم (قرمز) میرسیم. بخش آبی رنگ از خط بالا همان نام کاربری است که صاحب این پرونده است. بخش قرمز رنگ هم گروه کاربریای است که صاحب این پرونده است. زمانی که مثلاً با دستور touch یک پروندۀ خالی ایجاد میکنید، شما و گروه کاربریِ شما به عنوان صاحب آن شناخته خواهید شد. اما بیشتر پروندههای سیستمی که از اول روی سیستم شما وجود دارند، دارای دسترسی کاربر root و گروه root یا همان ریشه هستند. پس اگر با حساب ریشه وارد لینوکس یا سرور لینوکس شده باشد و یک پرونده ساخته باشد، به مانند خط بالا صاحب آن root خواهد بود.
تمرین
سوال: جواز دسترسی r-xrw–wx برای کاربر، گروه و دیگر کاربران چه دسترسیهایی را تعیین میکند؟
پاسخ:
کاربری که صاحب آن است میتواند آن پرونده یا پوشه را بخواند و اجرا کند.
گروه کاربری که این پرونده مختص آنها است، میتوانند آن را بخوانند، ویرایش کنند؛ اما قادر به اجرا کردن آن نیستند.
دیگر کاربران روی این سیستم نمیتوانند آن را بخوانند. اما با کمال تعجب میتوانند آن را ویرایش یا اجرا کنند!
تا اینجای کار الان شما باید به طور کامل با چیستیِ جواز دسترسی آشنا شده باشد. اما ما همین جواز دسترسی حروفی را میتوانیم به صورت عدد هم ببینیم. اینکه چطور میتوانیم جواز دسترسی حروفی را به عددی و بالعکس تبدیل کنیم، ادامۀ ماجرا را همراه باشید.
جواز دسترسی یا Permission عددی
تصویری که در ابتدای همین مقاله آورده شده است، به طور کامل این موضوع را برای شما باز میکند. بهتر است کمی روی آن تمرکز کنید تا ببینید هر فعالیت روی یک پرونده یا پوشه چه عددی دارد و جواز دسترسیِ عددی چطور تعیین خواهد شد.
- خواندن (Read) : عدد ۴
- نوشتن (Write) : عدد ۲
- اجرا کردن (Execute) : عدد ۱
ما در شیوۀ عددیِ نمایش جواز دسترسی، به جای هر سه حرفِ یک دسته، یک عدد نظر میگیریم، که در نهایت سه عدد در کنار یکدیگر Permission پروندۀ ما را تشکیل میدهد. برای روشن شدن موضوع، به تصویل زیر نگاه کنید. خطی که به رنگ نارنجی است، همان جواز دسترسیِ حروفی است که با آن آشنا شدید. در زیر هر حرف عدد متعلق به آن نوشته شده و هر سه عدد با هم جمع شده است. این کار برای دسترسیها گروه و دسترسیهای دیگران هم انجام شده است.
در نهایت جواز دسترسیِ –rw-r–r تبدیل به عدد ۶۴۴ شده است که معادل هم هستند. در خیلی از مواقع میتوانید از معادل عددی یک جواز دسترسی استفاده کنید. پس جواز دسترسیِ ۶۴۴ به ما میفهماند که صاحب این پرونده میتواند آن را اجرا و ویرایش کند. گروه کاربریِ این پرونده و همچنین دیگر کاربران فقط میتوانند آن را بخوانند. همین که هر روزه Permission های پروندهها و پوشهها را در لینوکس بررسی کنید، کم کم دستتان خواهد آمد که مثلاً معنی جواز ۷۵۵ چیست و دیگر نیازی به حساب و کتابهای مربوطه نیست. اما الان باید کاملاً متوجه شده باشید که یک جواز دسترسی چطور محاسبه میشود و چطور میتواند نوع حروفی آن را به عددی تبدیل کرد.
تمرین
سوال: جواز دسترسیِ ۷۵۵ چه نوع محدودیتهایی را ایجاد میکند؟
پاسخ:
کاربر صاحب پرونده یا پوشه میتواند آن را بخواند، ویرایش و اجرایش کند (دسترسی کامل روی آن دارد).
گروه کاربری، میتواند آن را بخواند و اجرایش کند.
دیگر کاربران هم میتوانند آن را بخوانند و اجرایش کنند.
با این توضیحات الان شما باید به طور کامل با مفهوم Permission یا همان جواز دسترسی در لینوکس آشنا شدید. در خیلی از مواقع در مراحل کار با برنامههای کاربردی لینوکس ما نیاز داریم جواز دسترسیها را به درستی تنظیم کرده باشیم، که حتماً باید این مقالۀ آموزشی را خوب خوانده باشید. البته کار با جواز دسترسیها به همین جا ختم نمیشود. اینکه چطور میتوانیم جواز دسترسیِ یک پرونده یا پوشه را تغییر دهیم، موضوعی است که در آموزش بعدی از مجموعۀ آموزش مدیریت سرور لینوکس به آن خواهیم پرداخت. پس همچنان با ما همراه باشید.
بسیار عالی
متشکرم
سلام
بسیار مممنون.واقعا مفید و خلاصه بود لذت بردم.