دستور chmod برای تغییر مجوز ها در لینوکس (و دیگر یونیکس ها)

در مطلب “مجوز ها در یونیکس – بخش اول” مفهوم مجوز ها گفته شد، همچنین چگونگی “تنظیم SUID“، “تنظیم SGID” و “تنظیم Sticky Bit” نیز توضیح داده شده است. در لینوکس و دیگر سیستم عامل های شبه یونیکس (مانند مکینتاش، سولاریس و توزیع های مبتنی بر BSD مانند FreeBSD و غیره) از دستور chmod برای تنظیم و تغییر مجوز های مربوط به یک فایل یا دایرکتوری استفاده می شود. مجوز هر فایل/دایرکتوری شامل یک مالک، یک گروه مالک و دیگر کاربران است که به ازای هر کدام سه مجوز معمول read,write و execute داده می شود.مطابق با شکل زیر عدد 4 مربوط به مجوز read، عدد 2 مربوط به مجوز write و عدد 1 مربوط به مجوز execute است (اعداد در مبنای 8 یا اکتال هستند).

به طور مثال مجوز عددی 750 یعنی مالک سه مجوز read,write,execute را دارد (جمع سه عدد 1+2+4) و گروه مالک دو مجوز read,execute را دارد (جمع دو عدد 1+4) و دیگر کاربران هیچ مجوزی ندارند (به خاطر عدد 0). پس برای اعطای مجوز عددی 750 به یک فایل/دایرکتوری از دستور chmod به صورت زیر استفاده کنید.

chmod 750 /path/to/file_ordirctory

در این مطالب “چگونگی اعطای مجوز execute را برای اجرای یک شل اسکریپت” توضیح داده شده است، یعنی هر شخصی (چه مالک، چه گروه مالک و یا دیگر کاربران) حتمن باید مجوز execute را داشته باشند. به طور مثال اگر بخواهیم مالک تمامی مجوز ها، گروه مالک مجوز های read,exexute و دیگر کاربران نیز مجوز read,execute را داشته باشند باید دستور زیر را بر روی شل اسکریپت اجرا کنیم.

chmod 755 /path/to/shell_script.sh

می توانیم از نماد های حرفی نیز استفاده کنیم. g , u و o به ترتیب معرف user یا مالک فایل، group یا گروه مالک فایل و other به معنی دیگر کاربران است. از عبارت های + و – نیز به ترتیب برای اعطا و گرفتن مجوز از هر کدام از مالک، گروه و دیگر کاربران استفاده می کنیم. همچنین سه نماد r برای read و w برای write و x برای execute است. به طور مثال برای اعطای مجوز w به مالک از دستور زیر استفاده کنید.

chmod w+u /path/to/file_or_directory

و برای گرفتن write از مالک دستور زیر را استفاده کنید.

chmod w-u /path/to/file_directory

برای اعطا و گرفتن مجوز w به و از گروه مالک فایل دستور های زیر را اجرا کنید.

chmod w+g /path/to/file_or_directory

chmod w-g /path/to/file_or_directory

 و برای اعطای مجوز اجرایی (مجوز x) به دیگر کاربران بر روی فایل و یا گرفتن آن از دیگر کاربران بر روی فایل، از دستور های زیر استفاده کنید.

chmod o+x /path/to/file

chmod o-x /path/to/file

البته نماد دیگر a به معنی همه یا all که شامل user یا کاربر و مالک فایل، g یا گروه مالک و o یا other و دیگر کاربران می شود. به طور مثال برای اینکه به تمامی کاربران مجوز اجرایی را بدهید باید دستور زیر را اجرا کنید.

chmod a+x /path/to/file

و اگر می خواهید همزمان از چندین نماد عددی برای اعطای یا گرفتن مجوز استفاده کنید باید آنها را با یک کاما (,) از هم جدا کنید. به طور مثال دستور زیر مجوز x را به همگی اعطا و w را از گروه مالک می گیرد.

chmod a+x,g-w /path/to/file