در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

Sticky Bit چیست و چگونه در لینوکس ایجاد و حذف می شود؟

خوب دوستان در سری آموزشی Linux Essentials ای که درست کردم یکی از قسمت ها مربوط به تعیین سطوح دسترسی در سیستم عامل لینوکس بود ، در این ویدیوی آموزشی ما به بررسی انواع سطوح دسترسی و ساختار Permission ها در لینوکس که بصورت read write execute و بصورت خلاصه rwx نمایش داده می شود توضیحاتی ارائه کردیم ، اما نکته ای در این خصوص وجود دارد ، شما ممکن است در ریشه پارتیشن لینوکسی خودتان با استفاده از دستور ls خروجی permission ها را مشاهده کنید و در انتهای کاراکترهای سطوح دسترسی چیزی به غیر از حروف rwx مشاهده کنید ، ممکن است به شکل زیر شما rwt مشاهده کنید ، این خروجی در مثال زیر کاملا پیداست :

Stikcy Bit در لینوکس چیست
drwxrwxrwt 30 root root 20480 Jan 11 12:17 /tmp

خوب دو سئوال در خصوص خروجی دستور بالا بایستی برای شما پیش بیاید ، اولین سئوال اینکه کاراکتر t در انتهای سطوح دسترسی چه می کند و از طرفی چرا پوشه tmp که پوشه temporary همه کاربران شبکه است بایستی سطح دسترسی به شکل 777 یعنی همه دارای دسترسی full control داشته باشد ؟ آیا این موضوع منطقی است ؟

خوب در پاسخ به این سئوالات ابتدا یک مثال می زنیم ، طبیعی است که هر کسی بایستی بتواند در دایرکتوری tmp فایل های خودش را قرار بدهد و هر کسی هم باید بتواند فایل های خودش را پاک کند ، پس به ناچار ما به همه دسترسی full control به این پوشه می دهیم ، اما نکته اینجاست که در چنین مواقعی من به عنوان کاربر unity نبایستی بتوانم محتویات فایلی که کاربر f.khanlari ایجاد کرده است را حذف کنم اما در حالت عادی با توجه به سطح دسترسی که کاربران به این پوشه دارند هر کسی می تواند فایل های دیگران را حذف کند ، پس چاره چیست ؟ چاره اینکار استفاده از تکنیکی به نام sticky bit است.

Sticky Bit چیست ؟

اگر با سطوح دسترسی در ویندوز آشنا باشید حتما می دانید که در NTFS Permission ها یک سطح دسترسی به نام Creator Owner وجود دارد ( یا یک گروه ) با استفاده از این سطح دسترسی شما می توانید سطح دسترسی به یک پوشه اعمال کنید که کلیه کاربران فقط و فقط به فایل هایی که مالک یا Owner آنها هستند دسترسی کامل داشته باشند و به فایل های دیگران دسترسی نداشته باشند. همین امر در سیستم عامل لینوکس به عنوان sticky bit شناخته می شود ( البته این اصلا بحث مقایسه این دو سیستم عامل نیست فقط برای درک بهتر مطرح شد) .

در واقع سطح دسترسی sticky bit ، سطح دسترسی است که بر روی یک folder یا پوشه اعمال می شود و فقط به مالک یا owner فایل ها اجازه می دهد که تغییراتی که می خواهند را بر روی فایل مورد نظرشان اعمال کنند و نمی توانند کوچکترین تغییری بر روی فایل های دیگران در عین اینکه دسترسی به نظر 777 است اعمال کنند. تنها کاربر root در چنین مواقعی امکان حذف و یا تغییر دادن فایل های دیگران را خواهد داشت.

Sticky bit در واقع یک مکانیزم امنیتی در سیستم عامل لینوکس است که از حذف کردن فایل ها توسط کاربران غیرمجاز در پوشه های حساس این سیستم عامل جلوگیری می کند ، در عین حال که کاربر دسترسی کامل برای ایجاد کردن و حذف کردن و ویرایش کردن فایل های خودش دارد ، در عین حال به هیچ یک از فایل های سایر کاربران دسترسی نخواهد داشت. بصورت پیشفرض sticky bit بر روی پوشه tmp در لینوکس فعال شده است.

chmod 1757 ~/Desktop/test

چگونه می توانیم sticky bit را بر روی یک پوشه فعال کنیم ؟

فعال کردن sticky bit به روشهای مختلفی قابل انجام است ، شما می توانید آن را با استفاده از روشهای سمبولیک ، با استفاده از عددهای تعریف شده برای سطوح دسترسی و .. انجام دهید در ادامه انواع روشهای اعمال کردن Sticky bit بر روی یک فولدر به نام itpro را مشاهده می کنید :

استفاده از روش Symbolid برای ایجاد Sticky Bit


chmod o+t ~/Desktop/test

یا روش دیگر :

chmod +t ~/Desktop/test

یا با استفاده از قرار دادن عدد 1 در ابتدای اعداد سطوح دسترسی :

chmod 1757 ~/Desktop/test

حالا می توانید نتایج به دست آمده را مشاهده کنید :

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

همانطور که مشاهده کردید در خروجی حرف t در انتهای سطوح دسترسی به عنوان اعمال شدن sticky bit نمایش داده می شود ، برای حذف کردن این bit نیز می توانید به روش زیر عمل کنید :

chmod o-t ~/Desktop/test

حالا نتیجه خروجی نشان از حذف شدن sticky bit دارد :

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

امیدوارم مورد توجه شما قرار گرفته باشد. ITPRO باشید

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

9 نظر
AZARAKHSH

عالی بود

ممنون

امیرحسین کریم پور

سلام ، زمانی که یوزری یک فایل رو داخل پوشه tmp ایجاد می کنه خودش مالک اون فایل هست و کاربر دیگه ای نمیتونه تغییری روی فایل اون کاربر بده فارغ از اینکه بیت Sticky روی tmp فعال باشه یا نباشه. پس دقیقا Sticky Bit کجا بدرد میخوره ؟

محمد نصیری

این به خاطر بحث Ownership هست ، قطعا هر کسی فایلی رو حتی در ویندوز ایجاد کنه خودش مالکش هست و دسترسی کامل داره بهش ، Sticky رو مدیر سیستم به دیگران میده

امیرحسین کریم پور

منظورم اینه اگه Sticky Bit فعال نباشه روی فولدر چه اتفاقی میوفته ؟

محمد نصیری

خوب نکته اینجاست !! ما اونجا بیشتر فایل خالی ایجاد می کنیم تا فولدر !! دایرکتوری tmp برای همین چیزهای موقت هست و البته نکته دیگه اینجاست که خود سیستم حالت sticky رو به کاربر میده در این فولدر ... اگر جای دیگه بخایم درست کنیم باید دستی ایجاد کنیم.

امیرحسین کریم پور

در واقع سطح دسترسی sticky bit ، سطح دسترسی است که بر روی یک folder یا پوشه اعمال می شود و فقط به مالک یا owner فایل ها اجازه می دهد که تغییراتی که می خواهند را بر روی فایل مورد نظرشان اعمال کنند و نمی توانند کوچکترین تغییری بر روی فایل های دیگران در عین اینکه دسترسی به نظر 777 است اعمال کنند.

در اینجا سطح دسترسی روی فولدر 777 هست ولی اگه یه کاربر فایلی رو بسازه خودش Owner اون هست و یوزر دیگه ای نیمتونه روی اون فایل Write کنه چه برسه به حذف کردنش ! من دقیقا اینجا رو متوجه نمیشم

محمد نصیری

ببین زیاد سخت نیست امیر حسین ::: ما به یه فولدر دسترسی 777 میدیم یعنی همه دسترسی Full Control داخلش دارن اوکی ؟ یعنی شما فایل هم ایجاد کنی دیگران به اون فایل دسترسی Full Control خواهند داشت چراکه Permission ها از پوشه بالاسری Inherit یا به ارث میرسن اوکی ؟ خوب اینجاست مشکل ، شما فایلت رو ایجاد می کنی و Owner اش هست ! اما دیگران هم بهش دسترسی دارن چون تو یه پوشه ای هست که دیگران 777 دسترسی به فایل هاش دارن ! اوکی ؟ حالا Sticky که اضافه می کنی میگه اوکی دسترسی 777 برای همه اما فقط برای فایل های خودشون ! یعنی فایل هایی که دیگران ایجاد می کنن رو بهشون دسترسی نده

امیرحسین کریم پور

من پوشه رو ایجاد می کنم و بهش دسترسی 777 میدم اما توی اون پوشه وقتی فایلی ایجاد می کنم دسترسی ها 777 نیست و کاربرا نمیتونن اون فایل رو تغییر بدن.

محمد نصیری

امیر حسین عزیز ، این مطلب رو بخون :

sticky bit

The sticky bit on the other hand is denoted as t, such as with the //tmp directory

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

This bit should have always been called the "restricted deletion bit" given that's what it really connotes. When this mode bit is enabled, it makes a directory such that users can only delete files & directories within it that they are the owners of.

پیچیدست ؟

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....