مدیریت مجوزهای فایل و دایرکتوری در محیط لینوکس برای امنیت و کارکرد سیستم بسیار مهم است.
umask، که به معنای “ماسک ایجاد فایل کاربر” است، در تنظیم این مجوزها نقش حیاتی دارد. این مقدار، مجوزهای پیشفرض برای فایلها و دایرکتوریهای جدید را تعیین میکند و به شما امکان تغییر این مجوزهای پیشفرض را میدهد.
درک تعامل بین تنظیمات umask و بیتهای مجوز لینوکس، که کنترل مجوزهای خواندن، نوشتن و اجرا را بر عهده دارند، بسیار مهم است. نقش umask به امنیت سیستم و تضمین پیکربندی صحیح تنظیمات حیاتی گسترش مییابد.
در این آموزش، نحوه کارکرد دستور umask لینوکس، سناریوهای استفاده معمول و چگونگی پیکربندی مقادیر umask برای مدیریت موثر مجوزهای فایلها و دایرکتوریها را بررسی خواهیم کرد.
چیست umask؟
umask یک ابزار محبوب در لینوکس است که مجوزهای پیشفرض برای همه فایلها و دایرکتوریهای جدید ایجاد شده توسط کاربران و سرویسها را تعیین میکند.
کاربران از این دستور برای مشاهده یا تنظیم مجوزهای پیشفرض ایجاد استفاده میکنند، تا اطمینان حاصل کنند که امنیت و قابلیت دسترسی فایلهای جدید با نیازهای کاربر مطابقت دارد.
مقدار umask بر مجوزهای فایل از تنظیمات پیشفرض سیستم تأثیر میگذارد. به عنوان مثال، مقدار umask رایج ۰۲۲ باعث میشود که فایلهای جدید قابل نوشتن و خواندن توسط مالک باشند، اما توسط دیگران قابل دسترسی نباشند، و دایرکتوریهای جدید برای همه قابل دسترسی باشند.
اجزای umask
**ارزشهای اعشاری و نمادین**: مجوزهای لینوکس میتوانند به صورت اعشاری (عددی) یا نمادین نمایش داده شوند، که بر نحوه تنظیم یا تفسیر مقادیر umask تأثیر میگذارد.
**بیتهای مجوز**: این تنظیمات فردی در ساختار مجوز هستند که کنترل مجوزهای خواندن، نوشتن و اجرا را برای مالک فایل، گروه و دیگران بر عهده دارند.
**تفاوتهای فایل و دایرکتوری**: تنظیمات umask میتوانند بر فایلها و دایرکتوریها به شکل متفاوتی تأثیر بگذارند، بر اساس نیازهای مجوز ذاتی آنها – دایرکتوریها معمولاً نیاز به مجوز اجرا دارند تا قابل دسترسی باشند.
چگونه umask عمل میکند؟
umask یک مکانیزم حیاتی در لینوکس است که مجوزهای پیشفرض برای فایلها و دایرکتوریهای جدید را تنظیم میکند.
هنگام ایجاد یک فایل یا دایرکتوری جدید، لینوکس ابتدا مجوزهای پیشفرض را اختصاص میدهد. بر اساس تنظیمات آن، مقدار umask مشخص میکند که کدام از این مجوزها باید حذف شوند.
مقدار umask برای یک فایل یا دایرکتوری با استفاده از نوتاسیون اعشاری نمایش داده میشود و معمولاً شامل سه رقم است. هر رقم به یک کلاس کاربر مختلف اشاره دارد: مالک، گروه و دیگران. مجوزها به صورت خواندن، نوشتن و اجرا ساختاربندی شدهاند که به ترتیب ارزشهای ۴، ۲ و ۱ را در اعشاری دارند. مقدار umask از مجوزهای پیشفرض کسر میشود تا مجوزهایی که برای یک فایل یا دایرکتوری جدید اختصاص داده میشوند، تعیین شوند.
به عنوان مثال، اگر مجوزهای پیشفرض برای فایلها ۶۶۶ (خواندن و نوشتن برای مالک، گروه و دیگران) باشد و umask 022 تنظیم شده باشد، مجوزهای واقعی اختصاص یافته ۶۴۴ خواهد بود. این پیکربندی به این معنی است که مالک میتواند بخواند و بنویسد، در حالی که گروه و دیگران فقط میتوانند بخوانند.
برای دایرکتوریها که معمولاً مجوزهای پیشفرض ۷۷۷ (خواندن، نوشتن و اجرا برای همه) هستند، همان umask 022 منجر به تنظیم مجوزها به ۷۵۵ میشود.
این فرآیند کاهشی باعث میشود که هیچ فایل یا دایرکتوری به طور اتفاقی با بیش از حد مجوزهای مورد نظر در معرض قرار نگیرد. این گام مهمی در ارتقای امنیت سیستم است.
با تسلط بر تنظیمات umask، کاربران میتوانند قابلیت دسترسی به فایلها و دایرکتوریهای خود را به دقت تنظیم کنند، دادههای حساس را محافظت کرده و در عین حال دسترسی لازم برای همکاری و استفاده را فراهم کنند.
مجوزهای فایل و دایرکتوری در لینوکس
مجوزهای هر فایل و دایرکتوری در لینوکس به سه دسته تقسیم میشوند، که هر کدام سطح دسترسی متفاوتی را برای مجموعههای مختلف کاربران تعریف میکنند:
کاربر: این دسته مجوزهای مربوط به کاربری را که مالک فایل یا دایرکتوری است، مشخص میکند. معمولاً کاربری که فایل یا دایرکتوری را ایجاد میکند، به طور خودکار به عنوان مالک تعیین میشود.
گروه: این دسته مجوزهای مربوط به گروهی از کاربران را تنظیم میکند. همه کاربران در یک گروه، سطح دسترسی یکسانی به فایل یا دایرکتوری خواهند داشت، مطابق با مجوزهای تعریف شده برای گروه.
دیگران: این دسته به همه کاربرانی اشاره دارد که در دسته کاربر یا گروه قرار ندارند. این مجوزها دسترسی برای همه چنین کاربران و سرویسهای دارای دسترسی به سیستم را تعریف میکند.
برای بررسی مجوزهای اختصاص یافته به دایرکتوری خانگی خود، دستور زیر را اجرا کنید:
ls -ld ~
این دستور از ls (لیست) با گزینههای -l (فرمت لیست طولانی) و -d (دایرکتوری) استفاده میکند تا اطلاعات تفصیلی درباره دایرکتوری، که در این مورد دایرکتوری خانگی شما (~) است، را نمایش دهد. میتوانید مجوزهای اختصاص یافته به مالک و گروه مرتبط با دایرکتوری خانگی خود را ببینید.
دستور umask در لینوکس مقدار پیشفرض ماسک ایجاد فایل را در نشست شل فعلی تنظیم یا نمایش میدهد. این ماسک بر مجوزهای پیشفرض اختصاص یافته به فایلها و دایرکتوریهای جدید تأثیر میگذارد. درک نحوه استفاده از دستور umask برای مدیریت موثر این مجوزهای پیشفرض ضروری است.
نحوه استفاده از دستور umask
نحوه استفاده اصلی از دستور umask به شرح
زیر است:
umask [options] [mask]
در اینجا:
[options]: این بخش از دستور میتواند شامل گزینههایی باشد که رفتار استاندارد دستور umask را تغییر میدهند. یک گزینه رایج -S است که ماسک را به جای فرمت اعشاری پیشفرض، به صورت نمادین نمایش میدهد.
[mask]: این مقدار umask است که میخواهید تنظیم کنید. میتواند به صورت اعشاری یا نمادین مشخص شود. اگر ماسکی مشخص نشود، umask مقدار umask فعلی را نمایش میدهد.
مثالها
نمایش مقدار umask فعلی
برای مشاهده مقدار umask فعلی به صورت اعشاری، فقط umask را بدون هیچ آرگومانی تایپ کنید:
umask
نمایش مقدار umask فعلی به صورت نمادین
اگر ترجیح میدهید umask را به فرمت نمادین خواناتر ببینید، از گزینه -S استفاده کنید:
umask -S
تنظیم مقدار umask
برای تنظیم یک مقدار umask جدید، ماسک را به عنوان آرگومان ارائه کنید.
به عنوان مثال، دستور زیر را اجرا کنید تا مقدار umask را به ۶۴۴ برای فایلهای جدید و ۷۵۵ برای دایرکتوریهای جدید تنظیم کنید:
umask 022
این دستور umask را به ۰۲۲ تنظیم میکند، که مجوز نوشتن برای گروهها و دیگران را حذف میکند.
نکات قابل توجه
هنگام استفاده از umask، باید دو نکته زیر را در نظر داشته باشید:
تأثیر umask
umask از مجوزهای پیشفرض سیستم، که معمولاً ۶۶۶ برای فایلها (rw-rw-rw-) و ۷۷۷ برای دایرکتوریها (rwxrwxrwx) است، کم میکند. بنابراین، umask 022 باعث میشود که فایلهای جدید مجوزهای ۶۴۴ (rw-r–r–) و دایرکتوریهای جدید ۷۵۵ (rwxr-xr-x) داشته باشند.
مختص به نشست
تغییرات در umask فقط بر نشست شل فعلی تأثیر میگذارند و پس از خروج باقی نمیمانند، مگر اینکه دستورات تنظیم این مجوزها را در یک فایل راهاندازی سیستم مانند .bashrc یا .profile قرار دهید.
درک و استفاده موثر از دستور umask میتواند به اطمینان از ایجاد فایلها و دایرکتوریها در سیستم لینوکس با تنظیمات امنیتی مناسب کمک کند و خطر دسترسی غیرمجاز را کاهش دهد.
پیشنیازهای استفاده از umask
قبل از شروع به استفاده از دستور umask در لینوکس، مطمئن شوید که موارد زیر را دارید:
– یک سیستم با توزیع لینوکس اصلی
– یک حساب کاربری با دسترسی sudo یا root
مقادیر نمادین و عددی umask
جدول زیر ارتباط بین مقادیر نمادین و عددی (اعشاری) umask را توضیح میدهد و نشان میدهد که هر تنظیم چگونه بر مجوزها تأثیر میگذارد.
اینجا:
مقدار اعشاری: این مقدار عددی است که برای تنظیم مجوزها به umask ارائه میدهید. هر رقم میتواند از ۰ تا ۷ متغیر باشد و نشان دهنده مجوزهایی است که برای کاربر، گروه و دیگران کم میشود.
مقدار نمادین: این از کاراکترها برای نمایش مجوزها استفاده میکند:
– U برای کاربر (مالک)
– G برای گروه
– O برای دیگران
– = مجوزهای خاصی را اختصاص میدهد
– + مجوزها را اضافه میکند
– – مجوزها را حذف میکند
مجوزهای حذف شده: این ستون نشان میدهد که کدام مجوزها توسط تنظیم umask مسدود میشوند.
مجوزهای حاصل برای فایلها: فایلهای جدید پس از اعمال umask چه مجوزهایی خواهند داشت.
مجوزهای حاصل برای دایرکتوریها: دایرکتوریهای جدید پس از اعمال umask چه مجوزهایی خواهند داشت.
محاسبه مقادیر نمادین umask
مقادیر نمادین umask سادهتر هستند و شامل مشخص کردن مجوزهایی است که باید حذف شوند:
– از u برای کاربر، g برای گروه و o برای دیگران استفاده کنید.
– از – به همراه حروف مجوز (r، w، x) برای نشان دادن مجوزهایی که باید حذف شوند، استفاده کنید.
به عنوان مثال، برای دستیابی به مجوزهای فایل ۶۴۴ (rw-r–r–):
مجوز نوشتن (w) را برای گروه و دیگران حذف کنید:
مقدار نمادین umask: u=rwx, g=rx, o=rx
این به معنی حذف مجوز نوشتن برای گروه و دیگران است.
مثال عملی
فرض کنید میخواهید umask را به گونهای تنظیم کنید که فایلهای جدید با مجوزهای ۶۴۰ (rw-r—–) و دایرکتوریها با مجوزهای ۷۵۰ (rwxr-x—) ایجاد شوند.
اینجا نحوه محاسبه مقادیر مورد نیاز را میبینید:
برای فایلها:
مجوزهای مورد نظر: ۶۴۰ (rw-r—–)
کم کردن از مقدار پیشفرض (۶۶۶): ۰۲۶ (حذف مجوز نوشتن و خواندن برای دیگران)
برای دایرکتوریها:
مجوزهای مورد نظر: ۷۵۰ (rwxr-x—)
کم کردن از مقدار پیشفرض (۷۷۷): ۰۲۷ (حذف مجوز نوشتن و اجرا برای دیگران)
این رویکرد به شما امکان میدهد با تنظیم مناسب مقادیر umask، کنترل دقیقی بر مجوزهای فایل و دایرکتوری داشته باشید.
تنظیم و بهروزرسانی مقدار umask پیشفرض
حالا که درک روشنی از نحوه تنظیم مجوزهای فعلی فایلها و دایرکتوریها توسط umask دارید، بیایید ببینیم این دستور در عمل چگونه کار میکند.
مثال تنظیم umask با مقادیر عددی
برای اعمال یک مقدار umask جدید، از نحوه استفاده دستوری زیر استفاده کنید:
umask [new_value]
که در آن [new_value] نماینده مقدار umask است که میخواهید تنظیم کنید، که به صورت اعشاری یا نمادین بیان میشود. این دستور مجوزهای پیشفرض برای فایلها و دایرکتوریهای جدید ایجاد شده در طول نشست فعلی را تنظیم میکند.
مثال تنظیم umask با مقادیر نمادین
فرض کنید میخواهید umask را به گونهای تنظیم کنید که کاربر همه مجوزها را حفظ کند، گروه مجوزهای خواندن و اجرا را حفظ کند، و دیگران هیچ مجوزی نداشته باشند. از دستور زیر استفاده خواهید کرد:
umask u=rwx,g=rx,o=
این دستور مجوز نوشتن را برای گروه و همه مجوزها را برای دیگران حذف میکند، تضمین میکند که فایلهای ایجاد شده فقط توسط کاربر قابل تغییر هستند، و دایرکتوریهای ایجاد شده توسط گروه قابل خواندن و ورود هستند اما برای دیگران غیرقابل دسترس هستند.
به خاطر داشته باشید که تغییرات ایجاد شده با استفاده از دستور umask در یک نشست ترمینال موقتی هستند و پس از پایان نشست برمیگردند، مگر اینکه دستور را در یک فایل راهاندازی مانند .bashrc یا .profile برای ماندگاری اضافه کنید.
مقایسه umask و chmod در لینوکس
در لینوکس، هم umask و هم chmod ابزارهای مورد استفاده برای مدیریت مجوزهای فایل هستند. با این حال، از نظر عملیاتی، هدف متمایزی دارند و در بافتهای بسیار متفاوتی عمل میکنند. درک تفاوتهای این دو دستور برای مدیریت موثر سیستم فایل حیاتی است.
umask
هدف: umask ماسک مجوز پیشفرض را تنظیم میکند که مجوزهای فایلها و دایرکتوریها را هنگام ایجاد آنها تعیین میکند. بر فایلها و دایرکتوریهای موجود تأثیر نمیگذارد.
عملکرد: هنگامی که یک فایل یا دایرکتوری جدید ایجاد میشود، مجوزهای اختصاص یافته بر اساس مقدار umask فعلی از مجوزهای پیشفرض (معمولاً ۶۶۶ برای فایلها و ۷۷۷ برای دایرکتوریها) کم میشوند. به عنوان مثال، umask 022 از داشتن دسترسی نوشتن برای گروه و دیگران در فایلهای جدید جلوگیری میکند.
دامنه: تنظیمات umask بر همه ایجاد فایلها و دایرکتوریهای بعدی در نشست یا در صورت پیکربندی در فایلهای پروفایل سراسری، به طور جهانی اعمال میشوند.
استفاده از دستور: معمولاً در ابتدای یک نشست یا در پروفایلهای کاربری یا سراسری اسکریپت میشود تا مجوزهای ایجاد پیشفرض را در سراسر سیستم اعمال کند.
chmod
هدف: chmod (تغییر حالت) برای تغییر مجوزهای فایلها و دایرکتوریهای موجود استفاده میشود. بر مجوزهای فایلها و دایرکتوریهایی که در آینده ایجاد خواهند شد، تأثیری ندارد.
عملکرد: chmod مجوزهای خواندن، نوشتن و اجرا را برای کاربر، گروه و دیگران در فایلها یا دایرکتوریهای مشخص شده تغییر میدهد. مجوزها میتوانند با استفاده از نوتاسیون نمادین (مانند rwx) یا عددی (مانند ۷۵۵) تنظیم شوند.
دامنه: chmod فقط بر فایلها یا دایرکتوریهای مشخص شده تأثیر میگذارد و بر هیچ فایل دیگری یا فایلهای آینده تأثیری ندارد.
استفاده از دستور: در صورت نیاز برای اصلاح یا تغییر مجوزهای فایلها و دایرکتوریهای خاص پس از ایجاد آنها اجرا میشود.
نتیجهگیری
درک و استفاده از umask در لینوکس برای هر کسی که مدیریت امنیت فایل و مدیریت سیستم را بر عهده دارد، ضروری است.
umask، یا حالت ایجاد فایل کاربر، به عنوان ابزار مهمی عمل میکند که به تعریف مجموعه پیشفرض مجوزها از طریق کم کردن مقادیر مشخص شده از مجوزهای پایه کمک میکند. این تضمین میکند که فایلهای جدید ایجاد شده، یا فایلهای معمولی با مجوزهای امن و محدود شروع میشوند که سپس میتوان آنها را با استفاده از دستور chmod برای نیازهای خاص تنظیم کرد.
مهم است توجه داشته باشید که تنظیمات umask نمیتوانند مجوزهای اجرا را برای دایرکتوریها به طور مستقیم تنظیم کنند، زیرا آنها عمدتاً بر فرآیند ایجاد فایل تأثیر میگذارند. در عوض، این ابزار یک خط پایه مجوز را برقرار میکند که برای همه کلاسهای کاربر – مالک، گروه و دیگران – اعمال میشود.
با استفاده از نوتاسیون نمادین یا دستور umask، کاربران میتوانند به راحتی umask را برای سناریوهای مختلف تغییر دهند، که مدیریت و امنیت مجوزهای فایل لینوکس را آسانتر میکند.