أنظمة الملفات والصلاحيات
معرفة نظام الملفات تفرق بين المرشح المبتدئ والخبير. دعنا نغطي ما يتوقع المقابلون أن تعرفه.
مفاهيم نظام الملفات
الأينود
الأينود يخزن البيانات الوصفية عن الملف:
# عرض معلومات الأينود
ls -li /path/to/file
stat /path/to/file
# محتويات الأينود:
# - نوع الملف والصلاحيات
# - المالك (UID) والمجموعة (GID)
# - الحجم والطوابع الزمنية
# - مؤشرات إلى كتل البيانات
# - عدد الروابط
# ملاحظة: لا يحتوي على اسم الملف!
سؤال مقابلة: "القرص يُظهر مساحة متاحة لكن لا يمكنك إنشاء ملفات. ماذا حدث؟"
الجواب: نظام الملفات نفدت منه الأينودات. تحقق بـ
df -i. كل ملف/مجلد يستهلك أينود واحد. شائع مع العديد من الملفات الصغيرة. الحلول: احذف ملفات، أو أعد التنسيق بمزيد من الأينودات.
الروابط الصلبة مقابل الروابط الرمزية
| الميزة | الرابط الصلب | الرابط الرمزي |
|---|---|---|
| الأينود | نفس الأصل | أينود مختلف |
| عبر نظام الملفات | لا | نعم |
| حذف الهدف | يعمل | رابط معطل |
| المجلدات | لا (باستثناء . و ..) | نعم |
# إنشاء رابط صلب
ln original hardlink
# إنشاء رابط رمزي
ln -s original symlink
# تحقق من عدد الروابط (العمود الثاني)
ls -l
أنظمة الملفات الشائعة
| نظام الملفات | حالة الاستخدام | الميزة الرئيسية |
|---|---|---|
| ext4 | Linux العام | Journaling، ناضج |
| XFS | ملفات كبيرة، افتراضي RHEL | قابل للتوسع، I/O متوازي |
| Btrfs | اللقطات، RAID | النسخ عند الكتابة |
| tmpfs | مدعوم بـ RAM | سريع، متطاير |
| NFS | مشاركات الشبكة | موزع |
| overlay | الحاويات | طبقات (Docker) |
صلاحيات Linux
الصلاحيات الأساسية (rwx)
# سلسلة الصلاحيات: -rwxr-xr-x
# النوع: - (ملف)، d (مجلد)، l (رابط)
# المالك: rwx (قراءة، كتابة، تنفيذ)
# المجموعة: r-x (قراءة، تنفيذ)
# الآخرون: r-x (قراءة، تنفيذ)
# رقمياً: 755
# r=4, w=2, x=1
# rwx = 4+2+1 = 7
# r-x = 4+0+1 = 5
الصلاحيات الخاصة
| الصلاحية | الرمز | الثماني | التأثير |
|---|---|---|---|
| SUID | s (x المستخدم) | 4000 | التنفيذ كمالك الملف |
| SGID | s (x المجموعة) | 2000 | التنفيذ كمجموعة / وراثة المجموعة |
| Sticky | t (x الآخرون) | 1000 | فقط المالك يمكنه الحذف |
# ضبط SUID (تشغيل كـ root)
chmod u+s /path/to/file
chmod 4755 /path/to/file
# ضبط sticky bit على /tmp (فقط المالك يمكنه الحذف)
chmod +t /tmp
chmod 1777 /tmp
سؤال مقابلة: "ما هو SUID ومتى يكون خطيراً؟"
الجواب: SUID يسمح للبرنامج بالعمل بصلاحيات المالك. خطير عند ضبطه على ملفات مملوكة لـ root—إذا استُغل، المهاجمون يحصلون على root. مثال كلاسيكي: ثغرة SUID تؤدي إلى تصعيد الامتيازات. ابحث عن ملفات SUID:
find / -perm -4000 2>/dev/null
أوامر إدارة القرص
الأوامر الأساسية
# استخدام القرص حسب المجلد
du -sh /var/*
# أكبر الملفات
find /var -type f -exec du -h {} + | sort -rh | head -20
# مساحة القرص
df -h
# إحصائيات I/O القرص
iostat -x 1
# تحقق من صحة القرص
smartctl -a /dev/sda
أساسيات LVM
إدارة الحجم المنطقي تسمح بإدارة مرنة للقرص:
الحجوم الفيزيائية (PV) → مجموعات الحجوم (VG) → الحجوم المنطقية (LV)
# توسيع حجم منطقي
lvextend -L +10G /dev/vg0/lv_root
resize2fs /dev/vg0/lv_root # لـ ext4
xfs_growfs /dev/vg0/lv_root # لـ XFS
سيناريوهات المقابلة
س: "مطور يقول أنه لا يستطيع الكتابة في /var/log/app. كيف تستكشف الأخطاء؟"
# تحقق من الصلاحيات
ls -la /var/log/app
# تحقق من الملكية
stat /var/log/app
# تحقق من مساحة القرص
df -h /var/log
# تحقق من الأينودات
df -i /var/log
# تحقق إذا كان نظام الملفات للقراءة فقط
mount | grep /var
# تحقق من SELinux (إذا كان مفعلاً)
ls -Z /var/log/app
getenforce
س: "القرص عند 100% لكن du -sh / يُظهر فقط 60% مستخدم. لماذا؟"
الأسباب المحتملة:
- ملفات محذوفة لا تزال مفتوحة:
lsof +L1يُظهر الملفات المحذوفة لكن لا تزال محجوزة - مساحة محجوزة: ext4 يحجز 5% لـ root افتراضياً
- نقاط تركيب مختلفة:
duقد لا يعبر حدود التركيب
# ابحث عن الملفات المحذوفة لا تزال مفتوحة
lsof +L1
# تحقق من المساحة المحجوزة
tune2fs -l /dev/sda1 | grep "Reserved block count"
التالي، سنغوص في الشبكات—TCP/IP وDNS ضروريات المقابلة. :::