پاسخ به:دستورات لینوکس
چهارشنبه 8 شهریور 1391 1:56 AM
دستور chmod
دسترسی به هر فایل یا دایرکتوری توسط ۹بیت اطلاعات اضافهای که به فایل یا دایرکتوری چسبانده میشود برای ۳ کلاس ۳ بیتی کاربر, گروه کاربر و سایر کاربران , تعیین میشود که به ترتیب با کدهای u(کاربر) , g(گروه) و o(سایرین) مشخص میشوند. 0 یا 1 بودن بیت اول تعیین کننده دسترسی خواندن (Read)برای صاحب فایل ( کاربر), بیت دوم امکان نوشتن (Write) و ایجاد تغییر در فایل یا دایرکتوری مورد نظر و بالاخره بیت سوم امکان اجرای(eXecute) فایلهای اجرایی را مشخص میکند. سه بیت دوم این دسترسیها را برای کلاس گروه کاربر و سه بیت آخر دسترسیها را برای سایر کاربران مشخص میکند. در صورتی که یک مجوز به کاربری داده نشده باشد به جای مجوز مورد نظر(یکی از حروف R,W یاX ) هنگام نمایش مجوزها، علامت دش (-) دیده میشود. آنچه در زیر دیده میشود مجوز دسترسی کامل به یک فایل است. یعنی همه کاربران امکان خواندن، نوشتن و اجرای فایل را دارند :
کد:
rwxrwxrwx
یا در حالتی که صاحب فایل دسترسی کامل، گروهش امکان خواندن و اجرا و سایرین هیچگونه دسترسی به فایل مورد نظر نداشته باشند این مجوزها به صورت زیر خواهد بود:
کد:
rwxr-x---
نمونهای از این مجوزها را میتوانید با اجرای فرمان ls -l مشاهده نمایید. توجه کنید که علاوه بر ۹بیت ذکر شده، یک کاراکتر اضافه نیز در ابتدای این رشته وجود دارد که تعیین کننده نوع فایل است که برای فایلهای عادی بصورت دش (-) و برای دایرکتوری ها بصورت d دیده میشود:
کد:
drwxr-xr-x
کد:
-rwxr-xr-x
نکته:
مجوز پیش فرض برای فایلهای جدید بصورت زیر است:
کد:
rw-r- - r--
و در صورتی که فایلی توسط یکی از کامپایلرهای موجود اجرایی شده باشد x (یا امکان اجرا کردن) به دسترسیها اضافه میگردد. مجوز پیش فرض دسترسی به یک دایرکتوری جدید نیز مشابه همین حالت است:
کد:
rwxr-xr-x
در صورتی که بخواهید مجوزهای پیش فرض را برای نشست جاری خود تغییر دهید میتوانید از دستور umask استفاده کنید.
برای تغییر مجوزهای یک فایل یا دایرکتوری کاربری که این اختیار را دارد (کاربر ریشه یا صاحب فایل یا دایرکتوری) میتواند با دستور chmod این کار رابوسیله یکی از دو روش زیر انجام دهد.
-در روش نخست پس از دستور chmod میتوان با علامت های "+" یا "–" یک یا چند مجوز را به کلاس ها افزود و یا از آنها گرفت. در این حالت کلاس ها با کدهایی که در بالا ذکر شد تعیین می شوند.مثلا:
کد:
#chmod go-rx anything
این دستور تعیین می کند که مجوز خواندن و اجرای فایلی به نام anything از کلاس گروه کاربر(u) و سایرین(o) گرفته شود و برعکس آن به صورت زیر است:
کد:
#chmod go+rx anything
-در روش دوم مجموع سه سطح دسترسی(خواندن,نوشتن و اجرا) به صورت یک عدد بین صفر تا هفت برای 3 کلاس کاربر, گروهش و سایرین به صورت زیر تعیین می شود و پس از دستور chmod می آید. برای خواندن عدد چهار, برای نوشتن عدد دو و برای اجرا عدد یک منظور می شود. یعنی هفت(1+2+4) نشان دهنده دسترسی کامل است در نتیجه مثلا 777 نشان دهنده اعطای دسترسی کامل به همه کاربران است.مثلا:
کد:
#chmod 750 anything
این دستور نیز تعیین می کند که مجوزها بصورت زیر تغییر کنند:
کد:
rwxr-x---
** دارالولایه **