دستور umask در لینوکس
در این بخش به بررسی دستور umask در لینوکس می پردازیم، در سیستمعاملهای مبتنی بر یونیکس و لینوکس، دسترسی به فایلها و دایرکتوریها یکی از اجزای اساسی مدیریت سیستم بهشمار میرود. دسترسیهای کاربران و گروهها به فایلها و دایرکتوریها، مشخص میکند چه کسی میتواند فایلها را بخواند، بنویسد یا اجرا کند. برای این منظور، هر فایل و دایرکتوری دارای یک سری پرچمهای دسترسی (permissions) است که کنترل میکنند کاربران چه نوع عملیاتی را میتوانند روی آن فایل انجام دهند.
یکی از مفاهیم مهم مرتبط با دسترسیها در لینوکس، دستور umask است. این دستور به شما امکان میدهد تا پیشفرض دسترسیها (permissions) را هنگام ایجاد فایلها و پوشهها تعیین کنید. به عبارت دیگر، umask مشخص میکند که دسترسیهای کدام قسمتها به طور خودکار حذف شوند تا فایلها و دایرکتوریها با سطح امنیتی مناسب ایجاد شوند. در این مقاله قصد داریم بهطور کامل دستور umask را بررسی کنیم، نحوه عملکرد آن را توضیح دهیم و مثالهایی برای درک بهتر ارائه دهیم.
مفهوم umask در لینوکس و نحوه عملکرد آن
umask (user file creation mask) یک ماسک است که بهصورت یک مقدار هشتهشتی (octal) تعیین میشود و برای تنظیم دسترسیهای پیشفرض هنگام ایجاد فایل یا پوشه به کار میرود. بهطور کلی، لینوکس برای فایلها و پوشهها، دسترسیهای پیشفرضی دارد که توسط umask محدود یا تعدیل میشوند. بهصورت پیشفرض، سیستمعامل لینوکس سطوح دسترسی زیر را برای فایلها و پوشهها در نظر میگیرد:
- فایلها: 666 (قابلیت خواندن و نوشتن برای همه)
- پوشهها: 777 (قابلیت خواندن، نوشتن و اجرای برای همه)
umask بر این دسترسیها تأثیر میگذارد تا برخی از آنها را از بین ببرد. به عنوان مثال، اگر مقدار umask شما 022 باشد، این مقدار باعث میشود که دسترسی نوشتن برای “گروه” و “دیگران” حذف شود.
نحوه محاسبه umask
برای درک بهتر نحوه محاسبه umask، ابتدا لازم است که دسترسیهای فایلها و پوشهها را درک کنیم. دسترسیها به سه دسته تقسیم میشوند:
- مالک فایل (Owner)
- گروه (Group)
- دیگر کاربران (Others)
هر کدام از این دستهها سه نوع دسترسی دارند:
- خواندن (Read): مقدار عددی 4
- نوشتن (Write): مقدار عددی 2
- اجرا کردن (Execute): مقدار عددی 1
به عنوان مثال، اگر فایلی دسترسیهای rwxr-xr-- داشته باشد، به معنای آن است که:
- مالک فایل میتواند آن را بخواند، بنویسد و اجرا کند (7 = 4 + 2 + 1)
- اعضای گروه میتوانند فایل را بخوانند و اجرا کنند ولی نمیتوانند بنویسند (5 = 4 + 1)
- دیگر کاربران فقط میتوانند فایل را بخوانند (4)
هنگامی که از umask استفاده میکنیم، این ماسک از دسترسیهای پیشفرض کسر میشود. به عنوان مثال:
- اگر دسترسی پیشفرض برای فایلها 666 باشد و مقدار umask شما 022 باشد، دسترسی نهایی فایل ایجاد شده 644 خواهد بود (خواندن و نوشتن برای مالک، خواندن برای گروه و دیگر کاربران).
- اگر مقدار umask برای پوشهها 022 باشد، دسترسی پیشفرض 755 خواهد شد (مالک همه دسترسیها، گروه و دیگر کاربران فقط میتوانند بخوانند و اجرا کنند).
مثال عملی
تغییر موقت و دائمی umask
تغییر موقت
تنظیم مقدار umask بهصورت موقت میتواند بهسادگی با اجرای دستور umask انجام شود. این تغییر تا زمانی که جلسهی ترمینال جاری فعال است، معتبر خواهد بود. به محض بستن ترمینال یا خروج از آن، تنظیمات umask به مقدار پیشفرض باز خواهد گشت.
برای تغییر مقدار umask بهصورت موقت، کافی است در خط فرمان دستور زیر را وارد کنید:
umask 027این تنظیم به این معناست که فایلهایی که ایجاد میکنید، فقط برای مالک دسترسی خواندن و نوشتن دارند و گروه تنها دسترسی خواندن خواهد داشت. کاربران دیگر هیچگونه دسترسی نخواهند داشت.
تغییر دائمی
برای اعمال تغییرات دائمی در مقدار umask، باید این مقدار را در فایلهای پیکربندی مربوط به محیط پوسته (shell) مانند .bashrc یا .profile تنظیم کنید. برای این کار، کافی است دستور umask را به انتهای فایل موردنظر اضافه کنید.
به عنوان مثال، برای تغییر مقدار umask به 027 در تمام جلسات ترمینال، میتوانید این دستور را به فایل .bashrc خود اضافه کنید:
echo 'umask 027' >> ~/.bashrcسپس با اجرای دستور source، تغییرات را اعمال کنید:
source ~/.bashrcاز این به بعد، هر بار که ترمینال جدید باز کنید، مقدار umask بهطور پیشفرض 027 خواهد بود.
بررسی umask در اسکریپتها و برنامهها
یکی دیگر از کاربردهای مهم دستور umask در لینوکس، استفاده از آن در اسکریپتهای شل یا برنامههای اجرایی است. زمانی که اسکریپتی نوشته میشود که در آن فایلها و دایرکتوریهای جدید ایجاد میشوند، تنظیم دقیق دسترسیها اهمیت بسیاری دارد. برای مثال، فرض کنید میخواهید اسکریپتی بنویسید که دایرکتوریای با دسترسیهای خاص ایجاد کند. در این صورت، میتوانید از umask استفاده کنید تا مطمئن شوید دایرکتوریهای ایجاد شده دارای دسترسیهای مناسب هستند.
در کد زیر، یک نمونه از استفاده umask در اسکریپت شل را میبینید:
#!/bin/bash
# تنظیم مقدار umask
umask 077
# ایجاد دایرکتوری جدید
mkdir secure_dir
# نمایش دسترسیهای دایرکتوری
ls -ld secure_dirدر این مثال، ابتدا مقدار umask به 077 تنظیم شده است که به معنای آن است که فقط مالک میتواند به دایرکتوری دسترسی داشته باشد. سپس دایرکتوری جدیدی به نام secure_dir ایجاد میشود. با اجرای دستور ls -ld مشاهده خواهید کرد که دسترسیها بهدرستی اعمال شدهاند.
دستور umask یکی از ابزارهای اساسی و ضروری برای تنظیم دسترسیهای پیشفرض فایلها و دایرکتوریها در سیستمعامل لینوکس است. با استفاده صحیح از این دستور، میتوان اطمینان حاصل کرد که فایلها و دایرکتوریهای جدید با سطح امنیتی مناسب ایجاد میشوند. در این مقاله، مفهوم umask را بررسی کردیم، نحوه عملکرد آن را توضیح دادیم و مثالهایی عملی برای درک بهتر ارائه کردیم. با یادگیری و استفاده صحیح از umask، میتوانید دسترسیهای فایلها و دایرکتوریهای خود را بهطور دقیق کنترل کنید.
منابع
- Linux man page for umask
- Understanding Linux File Permissions
- Bash umask command
آیا این مطلب برای شما مفید بود ؟




