فایلها وقتی که ساخته میشن، نمیتونند به طور پیشفرض دسترسی اجرایی (x) داشته باشند، خودتون باید دستی با chmod اون دسترسی رو بدید.
پس فایلهای معمولی که ساخته میشن، حداکثر میتونند این دسترسی رو داشته باشند -rw-rw-rw برای شما، این دسترسی میتونه این باشه: -----rw-r یعنی خود صاحب فایل میتونه اون رو بخونه و تغییر بده، گروهی که فایل متعلق به اون هست، بتونه فایل رو فقط بخونه و بقیه نتونند هیچ کاری با فایل انجام بدن.
البته برای دایرکتوریها این طور نیست و دایرکتوریها میتونند دسترسی اجرایی داشته باشند. این دسترسی اجرایی روی دایرکتوری باعث میشه که بقیه بتونند محتوای دایرکتوری رو ببینند یا به عبارتی دستور ls محتوای اون دایرکتوری رو نشون بده. پس دسترسی ---rwxr-x میتونه به طور پیشفرض برای یه دایرکتوری وجود داشته باشه.
این باعث میشه که صاحب دایرکتوری بتونه داخل اون دایرکتوری فایل ایجاد کنه، اون دایدکتوری رو بخونه و محتوای اون رو ببینه، گروهی که اون دایرکتوری متعلق بهش هست، میتونه اون دایرکتوری رو بخونه و محتوای اون رو ببینه اما نمیتونه چیزی داخل اون دایرکتوری ایجاد کنه، بقیه هم هسچ کاری نمیتونند با اون دایرکتوری انجام بدند.
برای اینکه اون دسترسیها به طور پیشفرض اعمال بشه، همونطور کهگفتند، باید از دستور umask استفاده کنید. با توجه به چیزهایی که گفتید، بهتره مقدار umask رو برابر 0027 قرار بدید.
کرنل لینوکس به طور پیشفرض، به فایلهای جدید ساخته شده دسترسی 0666 میده. که همون -rw-rw-rw هست، (اون 0 اول رو نادیده بگیرید، مربوط به دسترسیهای خاص هست که اینجا ما کاری بهش نداریم.) وقتی که umask وجود داره، دسترسی فایل ایجاد شده میشه 0666 منهای umask. (عدد منفی نداریم، اگه منفی شد، همون 0 در نظر بگیرید) پس اگه umask برابر 0027 باشه، دسترسی فایل 0640 میشه یا همون -----rw-r
برای دایرکتوریها، دسترسی پیشفرض 0777 هست که اگه umask وجود داشته باشه، نتیجه مثل بالا میشه. یعنی اگه umask برابر 0027 بود، دسترسی دایرکتوری ساخته شده، میشه 0750 یا همون ---rwxr-x
برای اینکه umask فعلی رو ببینید، همینطور دستور umask رو توی ترمینال وارد کنید، umask به طور عددی نمایش داده میشه. اگه از آپشن S- استفاده کنید، مقدار umask بر اساس rwx نمایش داده میشه.
برای تغییر مقدار umask، مقدار جدید رو جلوی اون بنویسید یعنی اینجوری
umask 0027
الان داخل همین ترمینالی که هستید، umask همونی شده که وارد کردید، ولی اگه یه ترمینال جدید باز کنید، umask همون قبلی هست. برای اینکه هربار umask چیزی بشه که شما میخواهید، اون رو توی فایل bashrc. قرار بدید (اگه از bash استفاده میکنید) . اول فایل bashrc. رو باز کنید و بعد umask 0027 رو آخر فایل بنویسید و خارج بشید. از این به بعد هر بار که bash با کاربر شما شروع به کار میکنه، umask اون چیزی هست که تنظیم کردید.
اگه میخواهید برای همه کاربرها umask پیشفرض رو تغییر بدید، umask رو توی فایل زیر تعریف کنید.
/etc/profile
هرچند بهتره که یه فایل با پسوند sh. توی دایرکتوری زیر بسازید و بعد اون رو اونجا اضافه کنید تا فایل profile دست نخورده باقی بمونه.
/etc/profile.d
مثلا اسم فایل رو بذارید umask.sh و بعد داخلش umask 0027 رو بنویسید. دقت کنید بعد از اینکه فایل رو توی دایرکتوری بالا ساختید، صاحب و گروه اون رو به root تغییر بدید
sudo chown root:root /etc/profile.d/umask.sh
بعدش هم دسترسیها اون رو درست کنید.
sudo chmod 0755 /etc/profile.d/umask.sh
اقااااااااا دمت گرم خیلی خوب بود
من umask رو 0077 تنظیم کردم بنظر شما مشکلی به وجود میاد؟؟
چون میخوام افراد داخل گروهم قادر به نوشتن ، اجرا و دیدن نباشن
و اینم بگم که درمورد profile.d چیزی نمیدونستم برای همین از
etc/login.defs/ این کارو کردم ولی حتما از پروفایل هم تست میکنمش
باز ممنون خیلی لطف کردی دمت گرم خدایی