أساسيات إدارة الأذونات في لينكس وكيفية استخدام Umask
تُعتبر إدارة الأذونات (Permissions) في نظام لينكس من الركائز الأساسية التي تضمن أمان النظام واستقراره، إذ تساعد في التحكم بمن يستطيع الوصول إلى الملفات والمجلدات وتنفيذ عمليات معينة عليها. بدون فهم دقيق لكيفية عمل الأذونات في لينكس، يصبح النظام عرضة للمخاطر الأمنية، سواء من جهة المستخدمين المحليين أو عبر الشبكات. في هذا المقال، سنقدم شرحًا مفصلًا وموسعًا عن أساسيات إدارة الأذونات في لينكس، وسنتناول بشكل خاص دور قيمة Umask في ضبط الأذونات الافتراضية عند إنشاء الملفات والمجلدات، مع أمثلة عملية توضح ذلك.
1. مقدمة حول نظام الأذونات في لينكس
لينكس يعتمد على نظام أذونات متقدم يسمح بالتحكم الدقيق في الوصول إلى الموارد المختلفة داخل النظام. عند إنشاء ملف أو مجلد جديد، يكون له أذونات محددة تسمح أو تمنع المستخدمين من قراءة أو كتابة أو تنفيذ هذا الملف.
1.1 مكونات الأذونات الأساسية
لكل ملف أو مجلد في لينكس ثلاث فئات رئيسية من الأذونات:
-
المالك (Owner): المستخدم الذي يملك الملف.
-
المجموعة (Group): مجموعة المستخدمين التي ينتمي إليها المالك أو تم تعيينها للملف.
-
الآخرون (Others): كل المستخدمين الآخرين غير المالكين أو أعضاء المجموعة.
لكل فئة من هذه الفئات ثلاث أذونات رئيسية:
-
القراءة (Read – r): السماح بقراءة محتوى الملف أو عرض محتويات المجلد.
-
الكتابة (Write – w): السماح بتعديل محتوى الملف أو إضافة وحذف الملفات داخل المجلد.
-
التنفيذ (Execute – x): السماح بتنفيذ الملف كبرنامج أو الدخول إلى المجلد.
1.2 تمثيل الأذونات
يمكن تمثيل الأذونات بطريقتين:
-
النصية: سلسلة مكونة من 10 أحرف، مثل
-rwxr-xr--. حيث يشير الحرف الأول إلى نوع الملف (مثل-للملف العادي،dللمجلد)، والحروف التسعة التالية موزعة على ثلاث مجموعات (مالك، مجموعة، آخرون) بثلاثة أحرف لكل منها. -
العددية (Octal): تمثيل الأذونات بواسطة رقم ثماني يتكون من ثلاث خانات، كل خانة تعبر عن أذونات فئة معينة.
-
قيمة 4 تعني “قراءة”
-
قيمة 2 تعني “كتابة”
-
قيمة 1 تعني “تنفيذ”
-
مثال:
rwx = 4 + 2 + 1 = 7
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
2. عرض وتغيير الأذونات
2.1 عرض الأذونات
لعرض الأذونات الخاصة بالملفات والمجلدات في مجلد معين، يُستخدم الأمر:
bashls -l
الناتج يظهر تفاصيل مثل:
csharp-rwxr-xr-- 1 user group 1234 May 20 12:34 example.sh
-
-rwxr-xr--: الأذونات -
1: عدد الروابط -
user: المالك -
group: المجموعة -
1234: حجم الملف بالبايت -
May 20 12:34: تاريخ ووقت آخر تعديل -
example.sh: اسم الملف
2.2 تغيير الأذونات (chmod)
لتغيير الأذونات، يتم استخدام الأمر chmod والذي يدعم الصيغ النصية والعددية.
مثال باستخدام الصيغة العددية:
bashchmod 755 script.sh
هذا يعني:
-
المالك لديه أذونات كاملة (7 = rwx)
-
المجموعة والآخرون لديهم أذونات قراءة وتنفيذ (5 = r-x)
مثال باستخدام الصيغة النصية:
bashchmod u=rwx,g=rx,o=r file.txt
-
u: المالك -
g: المجموعة -
o: الآخرون -
=: تعيين الأذونات بشكل مباشر -
rwxوrxوr: مجموعات الأذونات المختلفة
2.3 تغيير المالك والمجموعة (chown و chgrp)
-
لتغيير مالك الملف:
bashchown newowner file.txt
-
لتغيير مجموعة الملف:
bashchgrp newgroup file.txt
3. فهم Umask: التحكم في الأذونات الافتراضية
3.1 ما هي Umask؟
Umask (اختصار لـ User File Creation Mask) هي قيمة تحدد الأذونات التي يتم “حجبها” (أي لا يتم منحها) بشكل افتراضي عند إنشاء ملفات أو مجلدات جديدة. بمعنى آخر، تحدد Umask الأذونات التي تُخصم من الأذونات الافتراضية للملفات والمجلدات.
في لينكس، عند إنشاء ملف أو مجلد جديد، يتم تعيين أذونات مبدئية افتراضية، ثم تُطرح منها قيمة الـ Umask لإعطاء الأذونات النهائية.
3.2 القيم الافتراضية للأذونات
-
الملفات: عادة ما يتم إنشاؤها بأذونات افتراضية 666 (rw-rw-rw-)
-
المجلدات: عادة ما يتم إنشاؤها بأذونات افتراضية 777 (rwxrwxrwx)
لكن هذه القيم تُخصم منها قيمة Umask لتعطي النتيجة النهائية.
3.3 كيف تعمل Umask؟
Umask هي قيمة ثمانية (octal) مكونة من ثلاث خانات، كل خانة تمثل فئة معينة من المستخدمين (مالك، مجموعة، آخرون).
-
كل خانة تمثل الأذونات التي يجب أن تُمنع (لا تُعطى).
-
تُطرح هذه القيم من الأذونات الافتراضية لإنشاء الملفات والمجلدات.
مثال:
-
إذا كانت Umask = 022
-
الأذونات الافتراضية للملف = 666
-
إذن أذونات الملف النهائية = 666 – 022 = 644 (rw-r–r–)
وبالمثل للمجلد:
-
الأذونات الافتراضية = 777
-
أذونات المجلد النهائية = 777 – 022 = 755 (rwxr-xr-x)
3.4 عرض قيمة Umask الحالية
يمكن عرض قيمة Umask الحالية باستخدام الأمر:
bashumask
عادة تظهر القيم في صيغة ثمانية، مثل:
yaml0022
3.5 تغيير قيمة Umask
يمكن تغيير قيمة Umask مؤقتًا في جلسة الطرفية باستخدام:
bashumask 027
هذا يعني:
-
منع أذونات الكتابة للمجموعة (2)
-
منع كل الأذونات للآخرين (7)
لجعل التغيير دائمًا، يتم تعديل ملف تهيئة shell مثل ~/.bashrc أو ~/.profile بإضافة السطر:
bashumask 027
4. تطبيقات عملية لفهم Umask والأذونات
4.1 مثال تفصيلي لإنشاء ملف ومجلد باستخدام Umask
إذا كانت قيمة Umask هي 0022:
-
إنشاء ملف جديد باستخدام:
bashtouch newfile.txt
-
تحقق من الأذونات:
bashls -l newfile.txt
ستكون الأذونات عادة:
csharp-rw-r--r-- 1 user group 0 May 20 13:00 newfile.txt
وذلك لأن:
-
الأذونات الافتراضية للملف 666
-
تم طرح Umask 022
-
666 – 022 = 644 (rw-r–r–)
4.2 إنشاء مجلد جديد:
bashmkdir newdir
ls -ld newdir
الأذونات ستكون:
sqldrwxr-xr-x 2 user group 4096 May 20 13:05 newdir
حيث:
-
الأذونات الافتراضية للمجلد 777
-
طرح Umask 022
-
777 – 022 = 755 (rwxr-xr-x)
4.3 تأثير تغيير Umask على الأمان
-
إذا كانت Umask منخفضة جدًا مثل 0000، فإن الملفات والمجلدات الجديدة ستكون مفتوحة للجميع (777 للمجلدات و666 للملفات) وهذا يشكل خطراً أمنياً.
-
إذا كانت Umask مرتفعة جدًا مثل 077، فإن الملفات ستكون فقط متاحة للمالك فقط (700 للمجلدات و600 للملفات)، وهذا قد يعيق مشاركة الملفات مع المستخدمين الآخرين.
5. جدول مقارنة لأشهر قيم Umask وتأثيرها على الأذونات
| قيمة Umask | أذونات الملفات الناتجة | أذونات المجلدات الناتجة | الوصف العام |
|---|---|---|---|
| 0000 | 666 (rw-rw-rw-) | 777 (rwxrwxrwx) | فتح تام للجميع، غير آمن |
| 0022 | 644 (rw-r–r–) | 755 (rwxr-xr-x) | الإعداد الافتراضي الشائع، أمان متوسط |
| 0002 | 664 (rw-rw-r–) | 775 (rwxrwxr-x) | يسمح للمجموعة بالكتابة، مفيد للفرق |
| 0077 | 600 (rw——-) | 700 (rwx——) | حماية كاملة للمالك فقط، لا يسمح بالوصول للآخرين |
| 0027 | 640 (rw-r—–) | 750 (rwxr-x—) | يسمح للمجموعة بالقراءة والتنفيذ فقط، آمن أكثر |
6. نصائح وإرشادات لإدارة الأذونات وUmask
-
اختيار Umask المناسب: بناءً على بيئة العمل ونوعية المستخدمين، يجب اختيار Umask يحافظ على التوازن بين الأمان والسهولة في الوصول.
-
مراجعة الأذونات بشكل دوري: استخدام أوامر مثل
ls -lوfindللبحث عن الملفات ذات الأذونات المفتوحة بشكل غير آمن. -
تجنب منح أذونات تنفيذ للملفات غير التنفيذية: عادةً لا يحتاج ملف نصي عادي إلى أذونات تنفيذ.
-
استخدام المجموعات بشكل فعال: لتسهيل إدارة الوصول بين المستخدمين، يمكن إنشاء مجموعات ومشاركة الملفات ضمنها مع أذونات مناسبة.
-
تكوين Umask في ملفات التهيئة: لضمان الاتساق في الأذونات عبر جلسات الطرفية المختلفة.
7. الخلاصة
إدارة الأذونات في لينكس هي جزء لا يتجزأ من الحفاظ على أمان النظام وخصوصية البيانات. الأذونات تحدد بشكل واضح من يستطيع قراءة، تعديل، أو تنفيذ الملفات والمجلدات، مما يساعد على منع الوصول غير المصرح به. الأداة الأساسية لضبط هذه الأذونات عند إنشاء الملفات هي قيمة Umask، التي تسمح للمسؤولين والمستخدمين بتحديد الأذونات الافتراضية المناسبة وفقًا لاحتياجاتهم الأمنية والوظيفية. من خلال فهم كيفية عمل الأذونات وقيمة Umask، يمكن للمستخدمين إدارة ملفاتهم وأنظمتهم بشكل أكثر فعالية وأمانًا.
مصادر ومراجع
-
Linux Documentation Project: https://tldp.org/LDP/intro-linux/html/sect_03_01.html
-
GNU Coreutils Manual (chmod, umask): https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html

