فرمان umask در لینوکس

فرمان umask دسترسیهای پیشفرضی که هنگام ایجاد یک فایل به آن داده میشود را تعیین میکند. این فرمان از نشانگذاری اوکتال برای نمایش یک mask از دسترسیهایی که بایستی از مشخصههای فایل حذف شود استفاده میکند.
فرمان umask
به مثال زیر توجه کنید:
1 2 3 4 5 6 |
[me@linuxbox ~]$ rm -f foo.txt [me@linuxbox ~]$ umask 0002 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-r-- 1 me me 0 2012-03-06 14:53 foo.txt |
در اینجا ما ابتدا فایل foo.txt را با استفاده از فرمان rm حذف کردیم تا مطمئن شویم دسترسیها از اول داده میشود. حالا با استفاده از فرمان umask، ماسک پیشفرض را مشاهده میکنیم. عدد ۰۰۰۲ معمولا این عدد به صورت پیشفرض برای umask داده میشود (در برخی موارد هم به صورت پیشفرض از ۰۰۲۲ استفاده خواهد شد).
هر فایل جدیدی که ما در سیستم ایجاد میکنیم را نمیتوانیم به صورت دستی با آن دسترسی بدهیم! کار طاقتفرسایی خواهد بود. در نتیجه سیستمعامل یک مقداری به صورت پیشفرض دارد که با استفاده از آن هر فایل جدیدی که ایجاد میشود به آن دسترسی میدهد. ولی این جمله اشتباه است که «به فایلهای جدید ایجاد شده دسترسی میدهد.» بهتر است بگوییم از فایلهای جدید ایجاد شده دسترسی میگیرد. در واقع هر مقداری که در umask موجود باشد، از دسترسیهای موجود در فایل کم خواهد کرد.
حال به مثال برمیگردیم. برای ایجاد یک فایل جدید از فرمان > foo.txt استفاده میکنیم. اکنون که فایل را ایجاد کردهایم با استفاده از فرمان ls -l foo.txt دسترسیهای آن را مشاهده خواهیم کرد.
همانطور که گفتیم هر مقداری که در umask موجود باشد از دسترسیهای فایل کم خواهد شد. دسترسی پیشفرض فایل —rw-rw-rw- میباشد. یعنی کاربر، گروه و همگان دسترسی خواندن و نوشتن را خواهند داشت. حال اگر ۰۰۰۲ را به مقدار باینری تبدیل کنیم میشود ۰۰۰۰۰۰۰۰۰۰۱۰ یعنی umask دسترسی همگان را ۰۱۰ از وضعیت خواندن و نوشتن به وضعیت فقط خواندنی محدود میکند.
یک راه دیگر برای مشاهده دسترسی اورجینال فایل این است که مقدار umask را صفر کنیم تا مطمئن شویم هنگام ایجاد فایل جدید umask هیچ تاثیری روی دسترسیهای اصلی فایل نخواهد گذاشت.
به مثال زیر توجه کنید:
1 2 3 4 5 |
[me@linuxbox ~]$ rm foo.txt [me@linuxbox ~]$ umask 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt -rw-rw-rw- 1 me me 0 2012-03-06 14:58 foo.txt |
همانطور که میبینید با فرمان rm foo.txt فایل قبلی را حذف کردیم با فرمان umask 0000 مقدار umask را به صفر تبدیل کردیم تا مطمئن شویم که تاثیری بر دسترسیهای اورجینال فایل نخواهد گذاشت. سپس با فرمان >foo.txt دوباره فایل foo.txtرا ایجاد کردیم و با فرمان ls -l foo.txt دسترسیها را مشاهده کردیم:
همانطور که میبینیم دسترسیهای پیشفرض خواندن و نوشتن برای همه حالتها میباشد rw-
بیشتر اوقات شما نیازی به تغییر مقدار پیشفرض umask ندارید به این دلیل که مقدار تعریف شده توسط توزی لینوکس شما کفایت میکند. هر چند در برخی وضعیتهایی که میخواهیم امنیت بالا ایجاد کنیم تغییر آن به مقداری سختگیرانهتر خالی از لطف نیست.