انتقل إلى المحتوى الرئيسي

المختبر 3.5 - إدارة الأذونات

الأهداف​

في نهاية هذا المختبر، ستكون قادرًا على:

  • فهم أهمية الأذونات في نظام Linux
  • إنشاء مستخدمين وتكوين ملفات مشتركة
  • تطبيق الأذونات المناسبة باستخدام chmod و chown
  • استخدام الرموز الرمزية لـ chmod (u, g, o, a)
  • التحقق من الأذونات واختبارها
  • فهم الفروق بين useradd و adduser

المتطلبات الأساسية​

  • تثبيت Ubuntu 24.04 وتشغيله
  • وصول root أو sudo
  • فتح الطرفية

تذكير حول إدارة الأذونات​

إدارة الأذونات هي جانب أساسي من إدارة أنظمة Linux. فهي تسمح بالتحكم في من يمكنه الوصول إلى الملفات والمجلدات أو تعديلها أو تنفيذها. يمكن أن يؤدي تكوين الأذونات بشكل غير صحيح إلى ثغرات أمنية كبيرة، مما يهدد سرية البيانات وسلامتها وتوافرها.

في هذا القسم، سنستكشف الخطوات المختلفة اللازمة لإنشاء مستخدمين، وتكوين الملفات والمجلدات المشتركة، وتطبيق الأذونات المناسبة لضمان الوصول المتحكم به. سنرى أيضًا كيفية التحقق من هذه الأذونات للتأكد من تطبيقها بشكل صحيح.

ستساعد التمارين المقدمة في فهم كيفية استخدام أوامر chown و chmod و su لإدارة الوصول بشكل فعال، وكذلك المخاطر المحتملة المرتبطة بتكوين غير صحيح.


التمرين 1: التكوين الأولي للأذونات​

الخطوة 1: تسجيل الدخول كمستخدم متميز​

# على Ubuntu 24.04، استخدم sudo بدلاً من su
sudo su
# أو استخدم sudo مباشرة لكل أمر

الخطوة 2: إنشاء المستخدمين​

# على Ubuntu 24.04، استخدم adduser (أكثر سهولة) أو useradd
sudo adduser albert
sudo adduser bernard
sudo adduser claude
sudo adduser danielle

# إذا لم يكن adduser متاحًا، استخدم useradd مع -m لإنشاء home
# sudo useradd -m albert
# sudo passwd albert # تعيين كلمة المرور

ملاحظة: على Ubuntu 24.04، يفضل adduser لأنه تفاعلي ويقوم بتكوين دليل المنزل والمعلمات الأخرى تلقائيًا.

الخطوة 3: إنشاء المجلد والملفات​

# إنشاء المجلد shared_data والمجلدات الفرعية/الملفات اللازمة
sudo mkdir -p /home/shared_data
sudo mkdir -p /home/shared_data/dossier1

sudo touch /home/shared_data/file1.txt
sudo touch /home/shared_data/file2.txt
sudo touch /home/shared_data/dossier1/script1.sh
sudo touch /home/shared_data/dossier1/script2.sh

# إضافة محتوى إلى السكربتات للاختبارات
echo '#!/bin/bash
echo "Script 1 exécuté"' | sudo tee /home/shared_data/dossier1/script1.sh

echo '#!/bin/bash
echo "Script 2 exécuté"' | sudo tee /home/shared_data/dossier1/script2.sh

الخطوة 4: تعيين المالكين والأذونات​

# التكوين الأولي للأذونات والمالكين

# Albert - مالك file1.txt مع أذونات 644 (rw-r--r--)
sudo chown albert:albert /home/shared_data/file1.txt
sudo chmod 644 /home/shared_data/file1.txt

# Albert - مالك file2.txt مع أذونات 444 (r--r--r--) - للقراءة فقط
sudo chown albert:albert /home/shared_data/file2.txt
sudo chmod 444 /home/shared_data/file2.txt

# Bernard - مالك file2.txt مع أذونات 664 (rw-rw-r--)
sudo chown bernard:bernard /home/shared_data/file2.txt
sudo chmod 664 /home/shared_data/file2.txt

# Bernard - مالك script1.sh مع أذونات 751 (rwxr-x--x)
sudo chown bernard:bernard /home/shared_data/dossier1/script1.sh
sudo chmod 751 /home/shared_data/dossier1/script1.sh

# Claude - مالك متكرر لـ dossier1 مع أذونات 766 (rwxrw-rw-)
sudo chown -R claude:claude /home/shared_data/dossier1
sudo chmod 766 /home/shared_data/dossier1
sudo chmod 666 /home/shared_data/dossier1/script1.sh
sudo chmod 666 /home/shared_data/dossier1/script2.sh

# Danielle - مالك متكرر لـ shared_data مع أذونات 777 (rwxrwxrwx) - جميع الحقوق
sudo chown -R danielle:danielle /home/shared_data
sudo chmod -R 777 /home/shared_data

الخطوة 5: التحقق من مجلدات المستخدمين الرئيسية​

# تحقق من أن مجلدات المستخدمين تم تكوينها بشكل صحيح
ls -l /home

# تحقق من أذونات المجلد shared_data
ls -lR /home/shared_data

التمرين 2: اختبارات الأذونات​

جدول اختبارات الأذونات​

إليك جدول يصف الإجراءات التي سيحاول كل مستخدم تنفيذها والنتائج المتوقعة بناءً على الأذونات المحددة:

الإجراء/الاختبارالمستخدمالأمرالنتيجة المتوقعة
قراءة file1.txtAlbertcat /home/shared_data/file1.txtنجاح
الكتابة في file1.txtAlbertecho "Test" >> /home/shared_data/file1.txtنجاح
قراءة file2.txtAlbertcat /home/shared_data/file2.txtنجاح
الكتابة في file2.txtAlbertecho "Test" >> /home/shared_data/file2.txtفشل (تم رفض الإذن)
القراءة والكتابة في file2.txtBernardecho "Bernard" >> /home/shared_data/file2.txtنجاح
تنفيذ script1.sh في dossier1Bernardbash /home/shared_data/dossier1/script1.shنجاح
القراءة والكتابة في dossier1Claudeecho "Claude" >> /home/shared_data/dossier1/test.txtنجاح
تنفيذ script1.sh في dossier1Claudebash /home/shared_data/dossier1/script1.shفشل (تم رفض الإذن)
تنفيذ جميع الإجراءات على جميع الملفات/المجلداتDanielleecho "Danielle" >> /home/shared_data/file1.txtنجاح (وصول كامل)

تنفيذ الاختبارات​

# تنفيذ الاختبارات للتحقق من الأذونات

# الاختبار 1: Albert يقرأ file1.txt
sudo su albert -c 'cat /home/shared_data/file1.txt'

# الاختبار 2: Albert يكتب في file1.txt
sudo su albert -c 'echo "Test Albert" >> /home/shared_data/file1.txt'

# الاختبار 3: Albert يقرأ file2.txt
sudo su albert -c 'cat /home/shared_data/file2.txt'

# الاختبار 4: Albert يحاول الكتابة في file2.txt (يجب أن يفشل)
sudo su albert -c 'echo "Test" >> /home/shared_data/file2.txt' || echo "Échec attendu: Permission refusée"

# الاختبار 5: Bernard يكتب في file2.txt
sudo su bernard -c 'echo "Bernard" >> /home/shared_data/file2.txt'

# الاختبار 6: Bernard ينفذ script1.sh
sudo su bernard -c 'bash /home/shared_data/dossier1/script1.sh'

# الاختبار 7: Claude يكتب في dossier1
sudo su claude -c 'echo "Claude" >> /home/shared_data/dossier1/test.txt'

# الاختبار 8: Claude يحاول تنفيذ script1.sh (يجب أن يفشل)
sudo su claude -c 'bash /home/shared_data/dossier1/script1.sh' || echo "Échec attendu: Permission refusée"

# الاختبار 9: Danielle تكتب في file1.txt (وصول كامل)
sudo su danielle -c 'echo "Danielle" >> /home/shared_data/file1.txt'

# التحقق من النتائج
cat /home/shared_data/file1.txt
cat /home/shared_data/file2.txt
ls -l /home/shared_data/dossier1/

التمرين 3: الرموز الرمزية مع chmod​

في هذا التمرين، ستستكشف أذونات التنفيذ وكيفية منحها للمستخدمين والمجموعات والآخرين باستخدام الرموز الرمزية لـ chmod.

الأهداف التعليمية​

  • فهم الرموز الرمزية (u, g, o, a) مع chmod
  • إضافة إذن التنفيذ ديناميكيًا دون تعديل الحقوق الأخرى
  • التحقق من التأثيرات باستخدام ls -l

الخطوة 1: إنشاء ملف سكربت بسيط​

# إنشاء سكربت اختبار
touch mon_script.sh
echo -e "#!/bin/bash\necho 'Script lancé !'" > mon_script.sh

# التحقق من المحتوى
cat mon_script.sh

الخطوة 2: عرض الأذونات الحالية​

ls -l mon_script.sh

تحقق من أن الملف غير قابل للتنفيذ (لا يوجد x في الأذونات).

الخطوة 3: إضافة إذن التنفيذ للمستخدم (المالك)​

chmod u+x mon_script.sh
ls -l mon_script.sh

ثم حاول تنفيذ السكربت باستخدام:

./mon_script.sh

الخطوة 4: إضافة إذن التنفيذ للمجموعة​

chmod g+x mon_script.sh
ls -l mon_script.sh

الخطوة 5: إضافة إذن التنفيذ لجميع المستخدمين (a = all)​

chmod a+x mon_script.sh
ls -l mon_script.sh

الخطوة 6: إزالة جميع أذونات التنفيذ​

chmod a-x mon_script.sh
ls -l mon_script.sh

ملخص الأوامر المستخدمة​

الأمرالإجراء
chmod u+x fichierيضيف إذن التنفيذ للمستخدم
chmod g+x fichierيضيف إذن التنفيذ للمجموعة
chmod o+x fichierيضيف إذن التنفيذ للمستخدمين الآخرين
chmod a+x fichierيضيف إذن التنفيذ للجميع
chmod a-x fichierيزيل إذن التنفيذ للجميع

أسئلة للتفكير​

  1. لماذا نستخدم أحيانًا u+x بدلاً من chmod 744؟
  2. هل من الممكن إضافة إذن دون المساس بالآخرين؟ اشرح.
  3. ما الفرق بين chmod a+x و chmod 755؟

الملحق 1: useradd مقابل adduser​

إنشاء المستخدمين باستخدام useradd و adduser​

إدارة المستخدمين هي مهمة أساسية في إدارة النظام تحت Linux. هناك أمران رئيسيان يستخدمان بشكل شائع لإنشاء المستخدمين: useradd و adduser. على الرغم من أن أسمائهما متشابهة، إلا أنهما يعملان بشكل مختلف.

useradd : الأمر الأساسي​

الأمر useradd هو أداة قياسية متاحة على جميع توزيعات Linux. يسمح بإنشاء مستخدم جديد دون تفاعل بشري، مما يجعله مثاليًا لسكربتات الأتمتة. ومع ذلك، لا يطلب useradd كلمة مرور أو معلومات إضافية بشكل افتراضي.

# إنشاء مستخدم بدون كلمة مرور
sudo useradd -m albert

بعد إنشاء المستخدم، يجب عليك تعيين كلمة مرور يدويًا باستخدام الأمر passwd:

# إضافة كلمة مرور للمستخدم
sudo passwd albert

adduser : النسخة السهلة​

على بعض توزيعات Linux، مثل Debian و Ubuntu، adduser هو أمر أكثر سهولة، وهو في الواقع سكربت Perl يغلف useradd. هذا الأمر يرشد المسؤول خلال عملية تفاعلية حيث يمكنه تكوين عدة جوانب من حساب المستخدم، بما في ذلك كلمة المرور، الاسم الكامل، ومعلومات أخرى اختيارية.

# إنشاء مستخدم بعملية تفاعلية
sudo adduser albert

سيطرح النظام سلسلة من الأسئلة:

  1. كلمة المرور: سيطلب منك إدخال وتأكيد كلمة مرور المستخدم.
  2. الاسم الكامل: يمكنك تقديم اسم كامل للمستخدم (اختياري).
  3. رقم الغرفة، هاتف العمل، الهاتف الشخصي، معلومات أخرى: هذه الحقول اختيارية ويمكن تركها فارغة بالضغط على Enter.
  4. التأكيد: ستحتاج إلى تأكيد المعلومات قبل إنشاء المستخدم.

متى تستخدم useradd أو adduser؟​

  • useradd: استخدم هذا الأمر عندما تحتاج إلى إنشاء مستخدمين عبر سكربت أو عندما لا ترغب في أن يُطلب منك إدخال معلومات إضافية.
  • adduser: استخدم هذا الأمر عندما تفضل عملية تفاعلية وترغب في تكوين عدة تفاصيل لحساب المستخدم في خطوة واحدة.

الملحق 2: إدارة كلمات المرور​

إضافة كلمة مرور بعد الإنشاء باستخدام useradd​

عند استخدام الأمر useradd، بشكل افتراضي، لا يطلب إنشاء كلمة مرور للمستخدم. لإضافة كلمة مرور فورًا بعد إنشاء مستخدم، يمكنك استخدام الأمر passwd.

# إنشاء المستخدمين
sudo useradd -m pierre
sudo useradd -m marie
sudo useradd -m luc
sudo useradd -m sophie

# إضافة كلمة مرور لكل مستخدم
sudo passwd pierre
sudo passwd marie
sudo passwd luc
sudo passwd sophie

مع كل أمر passwd، سيطلب منك النظام إدخال كلمة مرور للمستخدم المحدد. تأكد من أن كلمة المرور تتوافق مع قواعد أمان النظام (مثل الطول الأدنى، التعقيد، إلخ).

تغيير كلمة مرور مستخدم​

لتغيير كلمة مرور المستخدم luc، يمكنك استخدام الأمر التالي:

sudo passwd luc

بعد تنفيذ هذا الأمر، سيطلب منك النظام إدخال كلمة مرور جديدة للمستخدم luc، ثم تأكيدها بإدخالها مرة ثانية.


أسئلة للتفكير​

الهدف​

فهم أفضل لإدارة الأذونات في Linux وتأثير هذه التكوينات على الأمان العام للنظام.

  1. اشرح أهمية الأذونات في نظام Linux. كيف يمكن أن تؤثر الأذونات غير الصحيحة على أمان النظام؟

    • تهدف هذه السؤال إلى جعلك تفكر في الآثار الأمنية وإدارة الوصول في بيئة Linux.
  2. ما هي الفروق بين أذونات القراءة والكتابة والتنفيذ؟ لماذا من الضروري تكوين هذه الأذونات بشكل صحيح في بيئة متعددة المستخدمين؟

    • تم تصميم هذا السؤال لمساعدتك على فهم وشرح أهمية كل نوع من الأذونات في أمان ووظيفة النظام.
  3. ما هو دور ملف sudoers في إدارة أذونات النظام؟ كيف يمكن أن تؤدي تكوين غير صحيح لهذا الملف إلى تعريض نظام Linux للخطر؟

    • يشجعك هذا السؤال على استكشاف الدور الحاسم لملف sudoers في إدارة امتيازات الإدارة والمخاطر المرتبطة بإدارته السيئة.
  4. لماذا من المهم تقييد أذونات التنفيذ على بعض الملفات أو السكربتات؟ أعط مثالًا حيث يمكن أن تمنع هذه القيود ثغرة أمنية.

    • يتيح لك هذا السؤال مناقشة أهمية تقييد أذونات التنفيذ والتفكير في السيناريوهات التي تكون فيها هذه القيود ضرورية للأمان.
  5. كيف تؤثر أوامر chmod و chown على أمان الملفات والمجلدات على خادم Linux؟ ما هي الممارسات الجيدة لاستخدامها؟

    • يطلب منك هذا السؤال وصف كيفية تأثير هذه الأوامر على أمان الملفات والمجلدات والتفكير في أفضل الممارسات لاستخدامها بشكل فعال وآمن.
  6. افحص سيناريو حيث حصل مستخدم عن طريق الخطأ على أذونات زائدة على ملفات حساسة. ما هي العواقب المحتملة وكيف يمكن حل هذه المشكلة؟

    • يهدف هذا السؤال إلى جعلك تفكر في التأثيرات المحتملة لمنح الأذونات الزائدة والإجراءات التصحيحية الممكنة.
  7. ما هو "sticky bit" وكيف يمكن استخدامه لتحسين أمان المجلدات المشتركة؟

    • يشجعك هذا السؤال على استكشاف مفهوم sticky bit، وفائدته، وتطبيقه في تأمين البيئات التي يصل فيها عدة مستخدمين إلى نفس المجلدات.
  8. ناقش أهمية فصل حقوق المستخدم والإداري على نظام Linux. كيف يؤثر ذلك على الأمان العام للنظام؟

    • يتيح لك هذا السؤال التفكير في أهمية فصل الامتيازات في منع إساءة استخدام الحقوق والأخطاء العرضية.

الملخص​

في هذا المختبر، تعلمت:

  • إنشاء مستخدمين باستخدام adduser و useradd
  • تكوين الملفات والمجلدات المشتركة
  • تطبيق الأذونات باستخدام chmod (الترميز الرقمي والرمزي)
  • تغيير المالكين باستخدام chown
  • اختبار الأذونات والتحقق منها
  • فهم أهمية أمان الأذونات

الخطوات التالية​

  • المختبر 3.2: إدارة الأذونات (المفاهيم الأساسية)
  • الوحدة 5: المستخدمون والأذونات (التعمق)
  • الوحدة 9: أمان النظام (التأمين المتقدم)

تم إنشاء المختبر في: ديسمبر 2024