در سیستم عامل های تحت شبکە، سطح دسترسی به فایل و دایرکتوری ها جزء موارد حساس و صد البتە بدیهی است. سیستم عامل ها به عنوان بزرگترین نرم افزار های مدیریت سخت افزار کامپیوتری، نقش چند کاربری و شبکەای ان در روزگار فعلی بسیار پر رنگ شده است. در مقاله امروز قصد داریم sticky bit را معرفی کنیم کە یک بیت برای ماندگاری دادەهای کاربری شما در محیط های لینوکسی در اشتراکی ترین دایرکتوری ها می باشد.
مدیران سرور یا کاربران لینوکسی کم تا بیش با سیستم تعیین دسترسی فایل/دایرکتوری در لینوکس آشنا هستند در نتیجه بسیار سریع و مختصر این مورد را بحث خواهیم کرد.
به دستور زیر دقت کنید:
[alfa@server ~]$ chmod WhoWhatWhich file | directory
دستور فوق نحوه ایجاد سطح دسترسی در لینوکس را معرف می کند. با chmod شما قادر خواهید بود برای چە کسی، چە چیزی را چگونه تعیین کنید.
برای مثال chmod +x virgool.txt به فایل virgool.txt اجازە اجرا شدن در محیط user فعلی را صادر می کند.
فایل پس از این دستور به عنوان یک executable در نظرگرفتە خواهد شد.
شما می توانید از اعداد برای اجرای این دستور نیز استفادە کنید، کە این مدل بر اساس نحو زیر است:
[tcarrigan@server ~]$ chmod ### file | directory
در اینجا، از چپ به راست، کاراکتر # یک سطح دسترسی را نشان می دهد. سه سطح دسترسی وجود دارد - کاربر، گروه و دیگران. برای تعیین اینکه هر رقم چقدر است، از موارد زیر استفاده می کنیم:
کاربر --- = ١ + ٢ + ٤
گروه --- = ١ + ٢ + ٤
دیگران --- = ١ + ٢ + ٤
اگر بخواهیم کە به یک فایل سطح دسترسی کاربر برای خواندن و نوشتن، گروه خواندن و نوشتن دیگران هیچ را بدهیم عدد باید ٦٦٠ باشد، خواندن ٤ نوشتن ٢ و اجرا ١ می باشد.
[tcarrigan@server ~]$ chmod 660 virgool.txt
معمولاً به عنوان SUID ذکر می شود، مجوز ویژه برای سطح دسترسی کاربر دارای یک عملکرد واحد است:
یک فایل با SUID همیشه به عنوان کاربری که مالک فایل است، بدون توجه به اینکه کاربر دستور را اجرایی می کند، در نظر گرفتە خواهد شد. اگر مالک فایل مجوزهای اجرایی را ندارد، در اینجا از S بزرگ استفاده کنید.
این مورد برای گروه ها نیز با SGID ذکر می شود. به معنی اینکە یک گروه مالک فایل هستند اما امکان اجرایی ندارند و در قسمت گروه بە جای X از علامت S استفادە می شود.
برای مشاهده مثال می توانید به فایل های داخل /etc دقت بفرمایید.
تا به اینجا شما با سطح دسترس ها و انواع مخصوص ان نیز اشنا شدید. اکنون می خواهیم کە یکی دیگر از سطح دسترسی های مخصوص را کە اصل مقاله برای این مورد بود را معرفی کنیم.
تا به حال به دایرکتوری /tmp دقت کردە اید. در محیط های چند کاربری تمامی کاربران امکان دسترسی به این پوشە را دارند. امکان خواندن/ نوشتن/ حذف/اضافە به این پوشە برای همە مقدور است، چطور می توانیم چنین پوشە ای در سایر location های سیستم عامل ایجاد کنیم ؟
آخرین مجوز ویژه "بیت چسبنده" نامگذاری شده است. این مجوز روی فایل های فردی تأثیر نمی گذارد. با این حال، در سطح دایرکتوری، حذف فایل را محدود می کند. فقط مالک (و ریشه) یک فایل می تواند فایل را در آن دایرکتوری حذف کند. با sticky bit شما قادر خواهید بود کە فایل های خود را در یک دایرکتوری اشتراکی ایجاد کنید بدون ان کە کسی بتواند ان را حذف کند.
به مثال زیر دقت کنید:
[alfa@server]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/
اگر از پوشە tmp دستور ls بگیرید با نتیجه فوق رو بە رو خواهید شد.
مجموعه مجوز با حروف کوچک t مشخص می شود، جایی که x معمولاً امتیاز اجرا را نشان می دهد.برای تنظیم مجوزهای ویژه روی یک فایل یا دایرکتوری، می توانید از یکی از دو روشی که برای مجوزهای استاندارد در بالا ذکر شده است استفاده کنید: نمادی یا عددی.
بیایید فرض کنیم که می خواهیم SGID را در پوشه Community_content تنظیم کنیم.
برای انجام این کار با استفاده از روش نمادین، موارد زیر را انجام می دهیم:
با استفاده از روش عددی، باید چهارمین رقم قبلی را در دستور chmod خود پاس کنیم. رقم استفاده شده مشابه ارقام مجوز استاندارد محاسبه می شود:
[alfa@server]$ chmod g+s community_content/
در پایان، مجوزها برای اینکه یک مدیر مؤثر لینوکس باشید اساساً مهم هستند. دو روش تعریف شده برای تنظیم مجوزها با استفاده از دستور chmod وجود دارد: نمادین و عددی. ما نحو و محاسبات مورد نیاز برای هر دو روش را بررسی کردیم. همچنین مجوزهای ویژه و نقش آنها در سیستم را در نظر گرفتیم. اکنون که مجوزها و مفاهیم زیربنایی را درک کردهاید، میتوانید خطای همیشه آزاردهنده Permission denied را هنگامی که سعی میکند مانع کار شما شود را حل کنید. همچنین از sticky bit نیز غافل نباشید تا در محیط های شبکەای اشخاص فایل ها یا دایرکتورهای شما را حذف نکنند.