المختبر 3.2 - إدارة الأذونات
الأهداف
في نهاية هذا المختبر، ستكون قادرًا على:
- فهم أذونات لينكس (rwx)
- تعديل الأذونات باستخدام chmod
- تغيير الملكية باستخدام chown
- فهم الأذونات الخاصة (SUID، SGID، sticky bit)
- استخدام قوائم التحكم في الوصول (ACLs)
المتطلبات الأساسية
- تثبيت أوبونتو 24.04
- فتح الطرفية
- وصول المستخدم مع sudo
التمرين 1: فهم الأذونات
الخطوة 1: عرض الأذونات
# إنشاء ملفات اختبار
mkdir ~/test-permissions
cd ~/test-permissions
touch fichier1.txt fichier2.txt fichier3.txt
mkdir dir1 dir2
# عرض الأذونات
ls -l
# الصيغة: -rw-r--r-- 1 user group 0 date fichier
# النوع | المالك | المجموعة | الآخرون
الخطوة 2: تفسير الأذونات
# تحليل كل جزء
ls -l fichier1.txt
# مثال: -rw-r--r--
# - = ملف عادي (d = مجلد، l = رابط)
# rw- = المالك: قراءة، كتابة، لا تنفيذ
# r-- = المجموعة: قراءة فقط
# r-- = الآخرون: قراءة فقط
التمرين 2: تعديل الأذونات (chmod)
الخطوة 1: الوضع الرمزي
# إضافة تنفيذ للمالك
chmod u+x fichier1.txt
# إضافة قراءة للمجموعة
chmod g+r fichier2.txt
# إزالة الكتابة للآخرين
chmod o-w fichier3.txt
# التراكيب
chmod u+x,g+r,o-r fichier1.txt
# التحقق
ls -l
الخطوة 2: الوضع الثماني
# 755 = rwxr-xr-x
chmod 755 fichier1.txt
# 644 = rw-r--r--
chmod 644 fichier2.txt
# 700 = rwx------
chmod 700 fichier3.txt
# 777 = rwxrwxrwx (خطر!)
chmod 777 fichier1.txt # يُفضل تجنبه في الإنتاج
الخطوة 3: أذونات المجلدات
# مجلد قابل للتنفيذ = حق الدخول
chmod 755 dir1
# مجلد بدون تنفيذ = لا يمكن الدخول
chmod 644 dir1 # ❌ لن يعمل بشكل صحيح
ls -ld dir1
# التصحيح
chmod 755 dir1
التمرين 3: الملكية (chown)
الخطوة 1: تغيير المالك
# إنشاء ملف
sudo touch /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# تغيير المالك
sudo chown $USER /tmp/fichier-root.txt
ls -l /tmp/fichier-root.txt
# تغيير المالك والمجموعة
sudo chown $USER:$USER /tmp/fichier-root.txt
الخطوة 2: تغيير المجموعة (chgrp)
# عرض المجموعات
groups
# تغيير المجموعة
sudo chgrp sudo fichier1.txt
ls -l fichier1.txt
# أو باستخدام chown
sudo chown :sudo fichier2.txt
التمرين 4: الأذونات الخاصة
الخطوة 1: SUID (Set User ID)
# إنشاء سكربت
cat > ~/test-suid.sh << 'EOF'
#!/bin/bash
whoami
id
EOF
chmod +x ~/test-suid.sh
# إضافة SUID
chmod u+s ~/test-suid.sh
ls -l ~/test-suid.sh # لاحظ 's' بدلاً من 'x'
# الاختبار
./test-suid.sh
الخطوة 2: SGID (Set Group ID)
# إنشاء مجلد مشترك
mkdir ~/shared
chmod 2775 ~/shared # 2 = SGID
ls -ld ~/shared # لاحظ 's' في المجموعة
# الملفات الجديدة سترث المجموعة
touch ~/shared/fichier.txt
ls -l ~/shared/fichier.txt
الخطوة 3: Sticky Bit
# /tmp يستخدم sticky bit
ls -ld /tmp
# إنشاء مجلد مع sticky bit
mkdir ~/sticky-dir
chmod 1777 ~/sticky-dir
ls -ld ~/sticky-dir # لاحظ 't'
# فقط المالك يمكنه حذف ملفاته
التمرين 5: قوائم التحكم في الوصول (ACLs)
الخطوة 1: تثبيت ACLs
# التحقق إذا كان مثبتًا
which setfacl
# التثبيت إذا لزم الأمر
sudo apt update
sudo apt install acl
الخطوة 2: استخدام ACLs
# إنشاء ملف
touch fichier-acl.txt
# عرض ACLs الحالية
getfacl fichier-acl.txt
# إعطاء إذن لمستخدم محدد
sudo setfacl -m u:autre-user:rw fichier-acl.txt
# إعطاء إذن لمجموعة
sudo setfacl -m g:developers:rx fichier-acl.txt
# عرض ACLs
getfacl fichier-acl.txt
الخطوة 3: ACLs الافتراضية
# تعيين ACL افتراضي لمجلد
sudo setfacl -m d:u:autre-user:rw dir1
# الملفات الجديدة سترث هذه ACL
touch dir1/nouveau.txt
getfacl dir1/nouveau.txt
التمرين 6: umask
الخطوة 1: فهم umask
# عرض umask الحالي
umask
# umask = الأذونات المرفوضة
# 022 = يرفض الكتابة للمجموعة والآخرين
# لذا: 666 - 022 = 644 للملفات
# 777 - 022 = 755 للمجلدات
الخطوة 2: تغيير umask
# umask أكثر تقييدًا (027)
umask 027
# إنشاء ملف
touch fichier-umask.txt
ls -l fichier-umask.txt # يجب أن يكون 640
# إعادة umask إلى الافتراضي
umask 022
التمرين 7: ممارسة شاملة
الخطوة 1: سيناريو حقيقي
# إنشاء هيكل مشروع
mkdir -p ~/projet/{src,bin,docs}
touch ~/projet/src/{script1.sh,script2.sh}
touch ~/projet/docs/{readme.txt,guide.txt}
# سكربتات قابلة للتنفيذ للمالك والمجموعة
chmod 750 ~/projet/src/*.sh
# مستندات للقراءة فقط للجميع
chmod 644 ~/projet/docs/*.txt
# مجلد bin: قابل للتنفيذ للجميع
chmod 755 ~/projet/bin
# التحقق
ls -lR ~/projet
الخطوة 2: التأمين
# ملف حساس: للقراءة فقط للمالك
touch ~/projet/config-secret.txt
chmod 600 ~/projet/config-secret.txt
# سكربت نظام: SUID root (بحذر!)
sudo chown root:root ~/projet/src/script1.sh
sudo chmod 4750 ~/projet/src/script1.sh
ls -l ~/projet/src/script1.sh
التحقق
قائمة التحقق
تحقق من أنك تستطيع:
- قراءة وتفسير الأذونات (ls -l)
- تعديل الأذونات باستخدام chmod (رمزي وثماني)
- تغيير المالك باستخدام chown
- تغيير المجموعة باستخدام chgrp
- استخدام SUID، SGID، sticky bit
- تكوين ACLs
- فهم واستخدام umask
أسئلة للتفكير
-
ما الفرق بين 755 و 644؟
- 755: قابل للتنفيذ (للسكربتات/المجلدات)
- 644: للقراءة فقط (للملفات العادية)
-
متى تستخدم ACLs مقابل chmod؟
- ACLs: أذونات دقيقة للمستخدمين/المجموعات المحددة
- chmod: أذونات قياسية (المالك/المجموعة/الآخرون)
-
لماذا يعتبر sticky bit مهمًا لـ /tmp؟
- يمنع المستخدمين من حذف ملفات الآخرين
- أمان في المجلدات المشتركة
الخطوات التالية
- المختبر 3.3: البحث والروابط
- المختبر 3.4: ممارسة شاملة
- الفصل 3.5: أذونات الملفات
تم إنشاء المختبر في: ديسمبر 2024 - تم اختباره على أوبونتو 24.04