مبادئ أذونات الملفات (File Permissions) على لينكس، نظام الصلاحيات، الأنماط، التمثيل العددي، إدارة الوصول، مستخدمون، مجموعات، أمان، chmod، chown، umask، ملفات النظام
مقدمة
يعد نظام إدارة الأذونات في نظام التشغيل لينكس من أبرز ركائز الأمان وضبط الوصول إلى الموارد. فهو لا يحمي الملفات والمجلدات فقط من الاستخدام غير المصرح به، بل يوفّر أيضًا بيئة متعددة المستخدمين فعالة، حيث يمكن لكل مستخدم أن يمتلك ملفاته الخاصة، مع السماح أو منع الآخرين من الوصول إليها. تأتي قوة نظام لينكس من دقة وتفصيلية نظام الأذونات فيه، والذي يعتمد على عدة مفاهيم رئيسية تشمل المستخدمين، المجموعات، والأنماط المختلفة للأذونات.
هذا المقال يُعد مرجعاً شاملاً لمبادئ أذونات الملفات على نظام لينكس، ويوضّح كيفية عمل هذا النظام، وآليات التحكم فيه، والفرق بين الأنماط المختلفة للأذونات، بالإضافة إلى أدوات التحكم كـ chmod, chown, umask وغيرها. كما يستعرض التمثيل العددي والرمزي للأذونات، ويشرح كيف يمكن للمستخدمين ومسؤولي الأنظمة إدارة الوصول إلى الملفات بكفاءة وأمان.
مفاهيم أساسية: المستخدمون والمجموعات
نظام لينكس صُمم ليكون بيئة متعددة المستخدمين، حيث يمكن لكل مستخدم أن يعمل باستقلالية عن الآخرين، ويُخصّص لكل مستخدم معرّف (UID)، ولكل مجموعة معرّف مجموعة (GID).
-
المستخدم (User): هو صاحب الملف أو مالكه الأصلي. عند إنشاء أي ملف أو مجلد، يتم تلقائيًا ربطه بالمستخدم الذي أنشأه.
-
المجموعة (Group): هي مجموعة من المستخدمين يمكن منحهم صلاحيات مشتركة على الملفات. يمكن لكل ملف أن يكون مرتبطًا بمجموعة واحدة فقط.
-
الآخرون (Others): وهم بقية المستخدمين غير المالك وغير الأعضاء في المجموعة المرتبطة بالملف.
أنواع الأذونات في لينكس
يُحدد كل ملف أو مجلد في لينكس مجموعة من الأذونات تصف ما يُسمح للمستخدمين والمجموعات والآخرين القيام به تجاه الملف. الأذونات الأساسية هي:
-
القراءة (Read – r): تتيح عرض محتوى الملف، أو عرض قائمة الملفات في المجلد.
-
الكتابة (Write – w): تتيح تعديل الملف أو إضافة/حذف ملفات داخل المجلد.
-
التنفيذ (Execute – x): تتيح تشغيل الملف إذا كان ملفًا تنفيذيًا (script أو binary) أو دخول المجلد والتنقل فيه.
الصيغة الرمزية للأذونات
عند تنفيذ أمر مثل ls -l في الطرفية، يظهر مخرَج يحتوي على معلومات الأذونات بصيغة رمزية، كما في المثال التالي:
diff-rwxr-xr--
يتكون هذا السطر من 10 خانات:
| الخانة | المعنى |
|---|---|
| 1 | نوع الملف (- لملف عادي، d لمجلد، l لرابط رمزي) |
| 2-4 | أذونات المالك (user) |
| 5-7 | أذونات المجموعة (group) |
| 8-10 | أذونات الآخرين (others) |
في المثال أعلاه:
-
-يشير إلى ملف عادي. -
rwxتعني أن المالك يمكنه القراءة والكتابة والتنفيذ. -
r-xتعني أن أعضاء المجموعة يمكنهم القراءة والتنفيذ فقط. -
r--تعني أن الآخرين يمكنهم القراءة فقط.
التمثيل العددي للأذونات (Octal Representation)
إضافة إلى التمثيل الرمزي، يستخدم لينكس أيضًا التمثيل العددي الثماني (Octal) لتحديد الأذونات، خاصة عند استخدام أوامر مثل chmod. يُخصّص لكل نوع من الأذونات قيمة عددية:
| الإذن | القيمة |
|---|---|
| r (read) | 4 |
| w (write) | 2 |
| x (execute) | 1 |
يتم جمع القيم للحصول على رقم ثلاثي يمثل الأذونات:
-
rwx= 4+2+1 = 7 -
rw-= 4+2+0 = 6 -
r--= 4+0+0 = 4
وبالتالي، chmod 755 file تعني:
-
المالك:
7=rwx -
المجموعة:
5=r-x -
الآخرون:
5=r-x
أمر chmod: تغيير الأذونات
يُستخدم الأمر chmod لتغيير أذونات الملفات والمجلدات. ويمكن استخدامه بالصيغتين الرمزية والعددية.
مثال باستخدام التمثيل العددي:
bashchmod 644 fichier.txt
مثال باستخدام التمثيل الرمزي:
bashchmod u+x script.sh
chmod g-w fichier.txt
chmod o=r document.txt
الرموز المستخدمة في الصيغة الرمزية:
| الرمز | المعنى |
|---|---|
| u | المستخدم (owner) |
| g | المجموعة |
| o | الآخرون |
| a | الجميع (all) |
| + | إضافة إذن |
| – | إزالة إذن |
| = | تعيين الإذن بدقة |
أمر chown: تغيير المالك أو المجموعة
يُستخدم chown لتغيير مالك الملف أو المجموعة المرتبطة به:
bashchown utilisateur fichier.txt
chown utilisateur:groupe fichier.txt
umask: تعيين الأذونات الافتراضية
عند إنشاء ملفات أو مجلدات جديدة، تُطبّق أذونات افتراضية يتم التحكم بها عبر قيمة umask.
-
الملفات الجديدة تبدأ عادة بأذونات
666(rw-rw-rw-) -
المجلدات الجديدة تبدأ عادة بأذونات
777(rwxrwxrwx)
تُطرح قيمة umask من القيمة الافتراضية لتحديد الأذونات النهائية.
مثال:
إذا كانت umask = 022، فإن:
-
الملفات تُنشأ بـ
644=666 - 022 -
المجلدات تُنشأ بـ
755=777 - 022
للتحقق من قيمة umask الحالية:
bashumask
الأذونات الخاصة (Special Permissions)
يوفر لينكس بعض الأذونات الخاصة التي تُستخدم في حالات معينة، مثل:
Setuid (s)
عند تفعيل هذا الإذن على ملف تنفيذي، يُنفذ بامتيازات المالك الأصلي وليس المستخدم الذي شغّله.
مثال:
bashchmod u+s fichier
Setgid (s)
عند تفعيله على ملف، يُنفذ بامتيازات المجموعة. وعند تفعيله على مجلد، تُرث الملفات الجديدة داخل المجلد نفس المجموعة.
bashchmod g+s dossier
Sticky Bit (t)
عند تفعيله على مجلد، يُمكن فقط للمالك أو المستخدم الجذر حذف أو تعديل الملفات بداخله، حتى لو كانت الأذونات تسمح لغيرهم بذلك. يُستخدم غالبًا في مجلدات مثل /tmp.
bashchmod +t /tmp
جدول توضيحي لأذونات الملفات
| التمثيل الرمزي | التمثيل العددي | الأذونات المفصّلة |
|---|---|---|
| rwxr-xr-x | 755 | المالك: قراءة، كتابة، تنفيذ المجموعة: قراءة، تنفيذ الآخرون: قراءة، تنفيذ |
| rw-r–r– | 644 | المالك: قراءة، كتابة المجموعة: قراءة الآخرون: قراءة |
| rwxrwxrwx | 777 | الجميع: قراءة، كتابة، تنفيذ |
| rwxr-x— | 750 | المالك: قراءة، كتابة، تنفيذ المجموعة: قراءة، تنفيذ الآخرون: لا شيء |
| rwxr-sr-x | 2755 | تم تفعيل setgid على الملف |
إدارة الأذونات في بيئة متعددة المستخدمين
في بيئات السيرفرات أو الشبكات المشتركة، يُعدّ التحكم في الأذونات أمرًا حاسمًا لضمان أمان النظام. بعض التوصيات تشمل:
-
إنشاء مجموعات مخصصة لكل مشروع أو قسم.
-
استخدام setgid على المجلدات لضمان وراثة المجموعة.
-
تفعيل sticky bit في مجلدات العمل المشترك.
-
منع الوصول إلى ملفات النظام عبر تقييد صلاحيات القراءة والتنفيذ.
-
استخدام ACLs (Access Control Lists) لمنح صلاحيات دقيقة في الحالات المتقدمة.
قوائم التحكم في الوصول (ACLs)
تُستخدم ACLs لمنح أذونات مفصلة تتجاوز النموذج الثلاثي الأساسي (user, group, others). يمكن عبر ACLs تحديد أذونات لمستخدمين أو مجموعات متعددة لكل ملف أو مجلد.
أوامر مفيدة:
-
getfacl fichier: لعرض الأذونات الحالية. -
setfacl -m u:alice:rw fichier: لمنح “alice” صلاحيات قراءة وكتابة. -
setfacl -x u:alice fichier: لحذف أذونات “alice”.
الخلاصة
تُعدّ إدارة أذونات الملفات في لينكس حجر الأساس في تحقيق الأمن والمرونة في بيئة متعددة المستخدمين. من خلال فهم طريقة عمل هذه الأذونات، والتعرف على أدوات الإدارة مثل chmod, chown, umask, وACLs، يمكن لمسؤولي الأنظمة والمستخدمين المتقدمين حماية بياناتهم، وضمان تشغيل النظام بطريقة منظمة وآمنة. يُعتمد هذا النظام على البنية البسيطة المتمثلة في القراءة، الكتابة، والتنفيذ، ولكن مرونته تفتح آفاقًا واسعة للتحكم الدقيق في صلاحيات الوصول.
المراجع:

