ديف أوبس

إدارة أذونات لينكس وUmask

أساسيات إدارة الأذونات في لينكس وكيفية استخدام 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 عرض الأذونات

لعرض الأذونات الخاصة بالملفات والمجلدات في مجلد معين، يُستخدم الأمر:

bash
ls -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 والذي يدعم الصيغ النصية والعددية.

مثال باستخدام الصيغة العددية:

bash
chmod 755 script.sh

هذا يعني:

  • المالك لديه أذونات كاملة (7 = rwx)

  • المجموعة والآخرون لديهم أذونات قراءة وتنفيذ (5 = r-x)

مثال باستخدام الصيغة النصية:

bash
chmod u=rwx,g=rx,o=r file.txt
  • u: المالك

  • g: المجموعة

  • o: الآخرون

  • =: تعيين الأذونات بشكل مباشر

  • rwx و rx و r: مجموعات الأذونات المختلفة

2.3 تغيير المالك والمجموعة (chown و chgrp)

  • لتغيير مالك الملف:

bash
chown newowner file.txt
  • لتغيير مجموعة الملف:

bash
chgrp 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 الحالية باستخدام الأمر:

bash
umask

عادة تظهر القيم في صيغة ثمانية، مثل:

yaml
0022

3.5 تغيير قيمة Umask

يمكن تغيير قيمة Umask مؤقتًا في جلسة الطرفية باستخدام:

bash
umask 027

هذا يعني:

  • منع أذونات الكتابة للمجموعة (2)

  • منع كل الأذونات للآخرين (7)

لجعل التغيير دائمًا، يتم تعديل ملف تهيئة shell مثل ~/.bashrc أو ~/.profile بإضافة السطر:

bash
umask 027

4. تطبيقات عملية لفهم Umask والأذونات

4.1 مثال تفصيلي لإنشاء ملف ومجلد باستخدام Umask

إذا كانت قيمة Umask هي 0022:

  • إنشاء ملف جديد باستخدام:

bash
touch newfile.txt
  • تحقق من الأذونات:

bash
ls -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 إنشاء مجلد جديد:

bash
mkdir newdir ls -ld newdir

الأذونات ستكون:

sql
drwxr-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، يمكن للمستخدمين إدارة ملفاتهم وأنظمتهم بشكل أكثر فعالية وأمانًا.


مصادر ومراجع