در سیستم عامل لینوکس و یونیکس، هر چیزی یک فایل است و همه چیز در قالب فایل‌ها و دایرکتوری‌ها سازماندهی شده‌اند.

همانطور که می‌دانید 7 نوع فایل در لینوکس وجود دارد که در 3 دسته عمده در دسترس هستند.

همه فایل‌های یک سیستم دارای مجوزهایی هستند که تعیین می‌نماید هر فرد اجازه مشاهده، اصلاح یا اجرای چه فایل‌هایی را دارد.

 

از آنجایی که لینوکس یک سیستم عامل چند کاربره است؛ بنابراین، دارای امنیت مجوز فایل قوی است؛ به طوریکه تنها به کاربران مجاز اجازه دسترسی به یک فایل خاص را می‌دهد.

هر فایل در لینوکس متعلق به یک کاربر و گروه است. کاربر مالک فایل است و گروه فایل، گروهی است که کاربر فایل به آن تعلق دارد.

برخی از گروه‌ها ممکن است بیش از یک کاربر داشته باشند و همه کاربران یک گروه می‌توانند به فایل‌هایی که به آن گروه تعلق دارند، دسترسی داشته باشند.

 

مالکیت فایل‌های لینوکس

سه نوع مالکیت برای فایل‌ها در لینوکس وجود دارد که هر فایل و دایرکتوری به آن‌ها اختصاص داده می‌شود.

کاربر: کاربر مالک فایل است؛ به عبارت دیگر شخصی که فایلی را ایجاد می‌کند، صاحب آن می‌شود.

گروه: گروه‌های لینوکس برای مدیریت مجموعه‌ای از کاربران سیستم لینوکس در نظر گرفته شده‌اند. همه افراد یک گروه دارای مجوزهای دسترسی یکسان به یک فایل هستند. این، پایه و اساس امنیت و دسترسی لینوکس است.

سایر موارد: سایر مجوزها برای همه کاربران دیگر در سیستم اعمال می‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: دستور Chown در لینوکس (مالکیت فایل)

 

مجوزهای فایل

هر فایل و دایرکتوری در سیستم لینوکس دارای سه مجوز زیر است.

Read (خواندن): مجوز خواندن، به کاربران اجازه باز کردن و خواندن یک فایل را می‌دهد. مجوز خواندن، در یک دایرکتوری به کاربران امکان می‌دهد، محتوای آن را مشاهده کنند.

Write (نوشتن): مجوز نوشتن، به کاربران اجازه تغییر محتوای یک فایل را می‌دهد. مجوز نوشتن، در یک دایرکتوری به کاربران این امکان را می‌دهد که فایل‌های موجود در آن را اضافه، حذف و تغییر نام دهند.

Execute (اجرا): این مجوز به کاربران اجازه اجرای یک فایل و دریافت نتیجه را می‌دهد. این یک نوع فایل اسکریپت bash است. مجوز اجرا در یک دایرکتوری به کاربران اجازه می‌دهد تا به داخل آن دایرکتوری بروند.

+------------+--------+---------------+
| Permission | Action | chmod Options |
+------------+--------+---------------+
|     read   |  View  |     r or 4    |
|    write   |  Edit  |     w or 2    |
|  execute   |Execute |     x or 1    |
+------------+--------+---------------+

از دستو ls می‌توانید برای بررسی مجوزهای یک فایل یا پوشه استفاده کنید.

$ ls -lh

total 244K
drwxr-xr-x 3 daygeek daygeek 4.0K Apr 23 20:50 install-gnome-themes
drwxr-xr-x 2 daygeek daygeek 4.0K Jul  8 11:38 nagios-4.4.3
-rwxr-xr-x 1 daygeek daygeek   98 Jan 11  2019 passwd-up1.sh*
-rwxr-xr-x 1 daygeek daygeek  159 Jan 11  2019 passwd-up.sh*
-rwxr-xr-x 1 daygeek daygeek   41 Jan 15  2019 ovh.sh*
-rw-r--r-- 1 daygeek daygeek   99 Jan 19 23:46 file-copy.sh
-rwxr-xr-x 1 daygeek daygeek 1.4K Feb  9 04:22 cpu-mem-check.sh*
-rwxr-xr-x 1 daygeek daygeek   82 Mar  1 13:24 pass-gen.sh*
-rwxr-xr-x 1 daygeek daygeek  214 Mar 10 22:15 user-add.sh*
-rwxr-xr-x 1 daygeek daygeek  151 Mar 16 02:10 pass-up.sh*
-rwxr-xr-x 1 daygeek daygeek  274 Mar 16 03:14 pass-multi-user.sh*
-rwxr-xr-x 1 daygeek daygeek   76 Mar 17 12:14 port_scan.sh*

مجوزهای فایل در لینوکس از چهار قسمت تشکیل شده است که در ادامه توضیح داده می‌شود.

+----------------+----------------+
|File Permission | -|rw-|r--|r--  |
|Part            | S  A   B   C   |
+----------------+----------------+

مجوزهای فایل لینوکس به طور کلی دارای 13 تا “-” است. اولین آن‌ها که نقش اصلی را بازی می‌کند، نوع فایل را بیان می‌کند و 12تای باقی مانده، برای مجوزهای فایل استفاده می‌شوند.

+-------+--------------------------------------------+
|Part-S | Special - Filesystem object types          |
|Part-A | User (u): A user is the owner of the file. |
|Part-B | Group (g): Users who are in a group        |
|Part-C | Other (o): Everyone else                   |
+-------+--------------------------------------------+

مثال زیر، مجوزهای کامل فایل را با جزئیات نشان می‌دهد. در شکل زیر، Part-5 تعداد پیوندهای سخت را به فایل یا دایرکتوری نشان می‌دهد. برای فایل‌ها معمولاً این تعداد، 1 خواهد بود؛ مگر این که پیوندهای سخت اضافی ایجاد کنید. ولیکن، برای دایرکتوری‌ها این تعداد، "تعداد زیردایرکتوری‌ها+2" است.

$ ls -ld nagios-4.4.3

+--------------------------------------------------------------------+
|d|rwx|r-x|r-x| 2 |daygeek| daygeek| 4.0K| Jul  8 11:38| nagios-4.4.3|
|1| 2 | 3 | 4 | 5 |   6   |    7   |  8  |      9      |       10    |
+--------------------------------------------------------------------+

Part-1 (d) : It indicates a File Type (d - is denote a directory).
Part-2 (rwx) : It indicates a User/Owner permissions. The Owner is having (Read (r), Write (w) and Execute (x) permissions).
part-3 (r-x) : It indicates a Group permissions. The Group is having (Read (r) and Execute (x) permissions).
part-4 (r-x) : It indicates an Others permissions. The Others is having the (Read (r) and Execute (x) permissions).
part-5 (2) : It indicates a level of directories.
part-6 (daygeek) : It indicates a Owner of the file.
part-7 (daygeek) : It indicates a Group name which is belongs to the file.
part-8 (4.0K) : It indicates a File size.
part-9 (Jul 8 11:38) : It indicates a file created or modified Date & Time.
part-10 (nagios-4.4.3) : It indicates a file name.

 

انواع فایل‌ها در لینوکس:

  • فایل منظم
  • فایل دایرکتوری
  • فایل‌های ویژه (این گروه دارای پنج نوع فایل است)
  • فایل پیوند
  • فایل Character Device
  • فایل سوکت
  • فایل Named Pipe
  • فایل block

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

+--------+--------------------------------------------------------------------+
| Symbol |	                            Meaning                           |
+--------+--------------------------------------------------------------------+
|   –    | Regular File. It starts with underscore “_”.                       |
|   d    | Directory File. It starts with English alphabet letter “d”.        |
|   l    | Link File. It starts with English alphabet letter “l”.             |
|   c    | Character Device File. It starts with English alphabet letter “c”. |
|   s    | Socket File. It starts with English alphabet letter “s”.           |
|   p    | Named Pipe File. It starts with English alphabet letter “p”.       |
|   b    | Block File. It starts with English alphabet letter “b”.            |
+--------+--------------------------------------------------------------------+

برای استفاده از این دستور در جهت تنظیم مجوزهای فایل در لینوکس، دو روش وجود دارد:

  • حالت مطلق
  • حالت نمادین

جزئیات هر روش به شرح زیر است:

 

این مطلب نیز ممکن است برای شما مفید باشد: دستور Ls در لینوکس (لیست کردن فایل ها و دایرکتوری ها)

 

حالت مطلق (عددی)

در این حالت، از یک عدد اکتال سه رقمی برای تنظیم مجوزهای فایل استفاده می‌شود.

+--------------+--------+-------------------------+
| Octal Number | Symbol |     Permission Type     |
+--------------+--------+-------------------------+
|       0      |   ---  |  No Permission          |
|       1      |   --x  |  Execute                |
|       2      |   -w-  |  Write                  |
|       3      |   -wx  |  Write + Execute        |
|       4      |   r--  |  Read                   |
|       5      |   r-x  |  Read + Execute         |
|       6      |   rw-  |  Read + Write           |
|       7      |   rwx  |  Read + Write + Execute |
+--------------+--------+-------------------------+

 

حالت نمادین

در این حالت، از نمادها (ugoa و rxw) برای تنظیم مجوزهای فایل استفاده می‌شود.

+---------+------------------------------------------+
|Operator |                 Description              |
+---------+------------------------------------------+
|    +    | Adds a permission to a file or directory |
|    -    | Removes the permission                   |
|    =    | Sets the permission                      |
+---------+------------------------------------------+

انوع مالک‌های فایل به صورت زیر نشان داده می‌شوند.

+------------------+--------------+
| User Denotations | chmod Option |
+------------------+--------------+
|    user/owner    |      u       |
|       group      |      g       |
|       other      |      o       |
|        all       |      a       |
+------------------+--------------+

 

UMASK در لینوکس چیست؟

UMask یا به عبارت دیگر User file creation mode mask، یک مجوز پیش‌فرض است که مجوز دسترسی فایل‌ها و دایرکتوری‌هایی که جدیداً ساخته شده‌اند را تعیین می‌کند. به عبارت دیگر، بواسطه UMask می‌توان مجوز دسترسی فایل‌های جدید را شناسایی کرد.

  • Umask پیش فرض 002 برای کاربر عادی استفاده می‌شود.
  • Umask پیش فرض 022 برای کاربر root استفاده می‌شود.

این دو مقدار در فایل زیر قابل مشاهده است.

# cat /etc/profile | grep -i umask
# By default, we want umask to get set. This sets it for login shell
    umask 002
    umask 022

با اجرای این دستور در حساب کاربری نیز می‌توان به همین مقدار رسید.

خروجی umask کاربر عادی.

# umask
0022

خروجی umask کاربر root.

$ umask
0002

 

SUID چیست؟

SUID نوع خاصی از مجوزهای فایل است که برای ارائه امتیازات بالاتر، به طور موقت هنگام اجرا به یک فایل داده می‌شود.

SUID، مجوزهای مالک فایل را تنها هنگام اجرای برنامه یا اسکریپت به ارث می‌برد. به عنوان مثال، دستور passwd به همه کاربران اجازه می‌دهد که رمز عبور خود را تغییر دهند، حتی اگر مجوز نوشتن در فایل etc/shadow/ را نداشته باشند.

$ ls -lh /bin/passwd
-rwsr-xr-x 1 root root 55K Apr  4 02:03 /bin/passwd*

 

SGID چیست؟

SGID نوع خاصی از مجوزهای فایل است که برای ارائه امتیازات بالاتر، به طور موقت هنگام اجرا به یک فایل داده می‌شود.

SGID، مجوزهای گروه فایل را تنها هنگام اجرای برنامه یا اسکریپت به ارث می‌برد. به عنوان مثال، دستور passwd به همه کاربران امکان می‌دهد، رمز عبور خود را تغییر دهند؛ حتی اگر مجوز نوشتن در فایل etc/shadow/ را نداشته باشند.

SGID مشابه SUID است و تنها تفاوت بین آن‌ها، این است که اسکریپت و فایل به جای SUID، دارای SGID هستند.

 

این مطلب نیز ممکن است برای شما مفید باشد: دستورmkdir ایجاد دایرکتوری از طریق خط فرمان لینوکس

 

Sticky Bit  چیست؟

Sticky Bit در درجه اول در دایرکتوری‌های به اشتراک گذاشته شده استفاده می‌شود. Sticky Bit به کاربران اجازه می‌دهد تا فایل‌های خود را ایجاد کرده و فایل‌های متعلق به سایر کاربران را بخوانند، بنویسند و اجرا کنند؛ اما آن‌ها مجاز به حذف فایل‌های متعلق به سایر کاربران نیستند.

 

تغییر و تنظیم مجوزهای مربوط به فایل‌ها در لینوکس چگونه با استفاده از دستور chmod

برای تنظیم مجوزهای یک فایل دو روش وجود دارد.

با استفاده از حالت مطلق:

در مثال زیر، مجوز 755 برای دایرکتوری daygeek تعیین شده است.

$ chmod 755 /home/daygeek/

$ ls -ld /home/daygeek/
drwxr-xr-x 27 daygeek daygeek 4096 Jul 12 22:47

در مثال زیر، مجوز 664 برای فایل magesh.txt  تعیین شده است.

$ chmod 664 magesh.txt

$ ls -lh magesh.txt 
-rw-rw-r-- 1 daygeek daygeek 18 Jul 18 06:09 magesh.txt

با استفاده از حالت نمادین:

در مثال زیر، مجوز 775 برای دایرکتوری daygeek تعیین شده است.

$ chmod ug+rwx,o+rx /home/daygeek/
$ chmod u+rwx,g+rwx,o+rx /home/daygeek/

$ ls -ld /home/daygeek/
drwxrwxr-x 27 daygeek daygeek 4096 Jul 18 06:09 /home/daygeek/

در مثال زیر، مجوز 641 برای فایل magesh.txt تعیین شده است.

$ chmod u+rw,g=r,o=x magesh.txt

$ ls -lh magesh.txt 
-rw-r----x 1 daygeek daygeek 18 Jul 18 06:09 magesh.txt

 

تغییر و تنظیم مالکیت یک کاربر یا گروه برای یک فایل در لینوکس

chown مالکیت کاربر و یا گروه هر فایل را تغییر می‌دهد.

chown به شما امکان تغییر مجوز کاربر، مجوز گروه و یا هر دو را می‌دهد. جزئیات در مثال‌های زیر شرح داده شده است.

چگونه تنها مجوز کاربر را تغییر دهیم؟

$ sudo chown u1 magesh.txt 

$ ls -lh magesh.txt 
-rw-r----x 1 u1 daygeek 18 Jul 18 06:09 magesh.txt

چگونه تنها مجوز گروه را تغییر دهیم؟

$ sudo chown :u1 magesh.txt 

$ ls -lh magesh.txt 
-rw-r----x 1 u1 u1 18 Jul 18 06:09 magesh.txt

چگونه هر دو مجوز (کاربر و گروه) تغییر دهیم؟

$ sudo chown daygeek:daygeek magesh.txt 

$ ls -lh magesh.txt 
-rw-r----x 1 daygeek daygeek 18 Jul 18 06:09 magesh.txt

اگر می‌خواهید مجوز را بطور بازگشتی تغییر دهید، از گزینه -R استفاده کنید.

$ sudo chown -R daygeek:daygeek 2gadmin 

 

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

دستور chgrp، مالکیت گروه فایل را تغییر می‌دهد.

جزئیات در مثال‌های زیر شرح داده شده است.

$ sudo chgrp 2gadmin magesh.txt

$ ls -lh magesh.txt 

اگر می‌خواهید مجوز را بطور بازگشتی تغییر دهید، از گزینه R- استفاده کنید.

$ sudo chgrp -R 2gadmin daygeek

 

 

منبع:

2daygeek