Linux. Red Team

Day 3 Linux ( Process+Package+Devices) Management

7/25/2025

Day 3 Linux ( Process+Package+Devices) Management

⚙️Linux Process Management

1. ما هي العمليات؟

العملية (Process) في لينكس هي ببساطة "برنامج قيد التشغيل".

عند تشغيل أي برنامج (مثل bash أو nmap أو firefox)، فإن نواة النظام (Kernel) تنشئ له عملية مستقلة وتخصص لها معرّف فريد يُسمى PID - Process ID.

مثال:

sh
ps

الناتج:

sh
PID     TTY      STAT   TIME   CMD
41230   pts/4    Ss     00:00  bash
51224   pts/4    R+     00:00  ps

2. فهم الطرفيات (TTY vs PTS)

الطرفية (Terminal) هي الواجهة التي من خلالها يُدخل المستخدم الأوامر.

إذاً:

3. كيف تُنشأ العمليات؟

كل عملية في لينكس تنشأ عن طريق عملية موجودة مسبقًا (الأب).

النظام يعمل كالتالي:

تتبع العمليات:

sh
ps -l

ستجد عمودًا اسمه PPID يمثل Parent PID، أي رقم العملية الأب.

مثال تطبيقي:

أهم عملية في النظام:

4. إنهاء العمليات (Termination)

عند انتهاء العملية، ترسل للنواة كود خروج (exit code):

الانتظار على العملية الأب:

5. العمليات اليتيمة (Orphan) والزومبي (Zombie)

النوع الوصف Zombie عملية انتهت ولكن لم تُجمع معلومات خروجها بواسطة الأب Orphan عملية لا تملك أبًا، فتتبناها العملية init

6. الإشارات (Signals)

الإشارة هي وسيلة للتواصل مع العمليات:

الإشارة الرقم المعنى SIGHUP 1 قطع الاتصال (مثلاً غلق الطرفية) SIGINT 2 إيقاف مؤقت (Ctrl+C) SIGKILL 9 قتل قاطع لا يمكن تجاهله SIGTERM 15 قتل آمن SIGSTOP إيقاف مؤقت (Ctrl+Z)

إرسال الإشارات:

sh
kill -SIGTERM 1234      # إنهاء آمن
kill -9 1234            # قتل غشيم

7. nice و renice (تحديد أولوية العمليات)

الأمر الوصف nice -n 10 command تشغيل أمر بأولوية منخفضة renice 5 -p 1234 تعديل أولوية عملية حالية

عرض القيم:

sh
top

ابحث عن عمود NI.

8. حالات العمليات (Process States)

الرمز المعنى R Running أو Runnable S Sleeping (يمكن مقاطعته) D Sleeping (لا يمكن مقاطعته) Z Zombie T Stopped (موقوف مؤقتًا)

sh
ps aux

راقب عمود STAT.

9. نظام ملفات /proc

كل عملية في لينكس يتم تمثيلها داخل مجلد /proc/PID/

sh
ls /proc/1234/
cat /proc/1234/status

من هنا يمكنك استخراج معلومات العمليات بدقة:

هذا مفيد جدًا في الفحص الجنائي والتحقيق في الأنظمة المتعرضة لهجمات.

10. التحكم في الوظائف (Job Control)

عند تشغيل أمر يستغرق وقتًا طويلًا، يمكنك:

مثال:

sh
sleep 1000 &     # تشغيل في الخلفية
jobs             # عرض جميع الخلفيات
fg %1            # إعادة الوظيفة الأولى

-----------------------------------------------------------------------------

📦 Linux Package Management

1️⃣ ما هي الحزم (Packages)؟

الحزم هي ببساطة تجميع لعدد كبير من الملفات الضرورية لتشغيل برنامج معين. مثلًا متصفح Chrome أو برنامج VLC هما عبارة عن حزم. هذه الحزم تحتوي على ملفات تنفيذية، مكتبات، ملفات تكوين، وأحيانًا سكريبتات مساعدة.

أنواع الحزم:

2️⃣ من يصنع الحزم وكيف تُوزع؟

🔹 Upstream Developers

هم المطورون الذين يكتبون الكود الأساسي للبرنامج.

🔹 Package Maintainers

هم الذين يأخذون هذا الكود ويقومون بتغليفه في حزمة مناسبة (DEB أو RPM) ويضيفونه إلى مستودعات التوزيعة.

3️⃣ مستودعات الحزم (Repositories)

مستودعات الحزم هي خوادم على الإنترنت تحتوي على آلاف الحزم الجاهزة للتثبيت.

📌 الملف الرئيسي الذي يحتوي على روابط هذه المستودعات في توزيعات ديبيان هو:

sh
/etc/apt/sources.list

يمكنك إضافة مستودعات خارجية من شركات مثل Google أو Discord، ليتمكن نظامك من جلب الحزم منها مباشرة.

4️⃣ الأرشفة والضغط (tar & gzip)

🔸 الضغط باستخدام gzip:

sh
gzip file.txt
gunzip file.txt.gz

🔸 إنشاء أرشيف باستخدام tar:

sh
tar cvf archive.tar file1 file2
tar xvf archive.tar      # لفك الضغط

🔸 ضغط وفك tar.gz في خطوة واحدة:

sh
tar czf archive.tar.gz file1 file2
tar xzf archive.tar.gz

🧠 تذكير: x للفك، z لاستخدام gzip، f لتحديد الملف.

5️⃣ التبعيات (Dependencies)

معظم البرامج لا تعمل وحدها، بل تعتمد على مكتبات أو برامج أخرى. لذلك، عند تثبيت حزمة، يجب أن تُثبت أيضًا تبعياتها. هذا ما يميز مديري الحزم مثل apt و yum عن أدوات مثل dpkg و rpm التي لا تدير التبعيات.

6️⃣ إدارة الحزم يدويًا (dpkg و rpm)

📦 تثبيت حزمة:

sh
dpkg -i package.deb       # ديبيان
rpm -i package.rpm        # ريدهات

❌ إزالة حزمة:

sh
dpkg -r package_name
rpm -e package_name

🔍 عرض الحزم المثبتة:

sh
dpkg -l
rpm -qa

⚠️ ملاحظة: dpkg و rpm لا يتحققان من التبعيات، لذا يمكن أن تفشل بعض التثبيتات أو تبقى غير مكتملة.

7️⃣ مدراء الحزم المتقدمين (apt و yum)

📥 تثبيت حزمة من مستودع:

sh
apt install package
yum install package

❌ إزالة حزمة:

sh
apt remove package
yum erase package


🔄 تحديث النظام:

sh
apt update  # تحديث ال source list 
apt upgrade # تحديث الادوات
yum update 

🔎 معلومات عن حزمة:

sh
apt show package
yum info package

8️⃣ تثبيت البرامج من الكود المصدري (Source Code)

بعض البرامج لا تتوفر كحزمة جاهزة، وتحتاج إلى ترجمتها يدويًا.

✅ تثبيت أدوات الترجمة:

sh
sudo apt install build-essential

🔸 الخطوات العامة:

  1. 1- استخراج الأرشيف:
sh
tar -xzvf program.tar.gz

  1. 2- تشغيل سكريبت التهيئة:
sh
./configure

  1. 3- الترجمة:
sh
make

  1. 4- التثبيت:
sh
sudo make install

  1. 5- إلغاء التثبيت:
sh
sudo make uninstall

⚠️ خطر: make install لا يتتبع كل ما يقوم بتثبيته، مما يجعل إلغاء التثبيت صعبًا.

🛡️ بديل آمن:

sh
sudo checkinstall

سيُنشئ لك ملف .deb لتثبيته وإزالته بسهولة لاحقًا.

------------------------------------------------------------------------

🧩 Linux Devices Management

1️⃣ مجلد /dev

عند توصيل أي جهاز بجهازك (مثل فلاش، قرص صلب، طابعة...) يحتاج النظام لتعريف (driver) لكي يتمكن من استخدامه. هذا التعريف يمكن التفاعل معه عن طريق ملف خاص يُسمى ملف الجهاز (Device File) أو Node.

📁 جميع ملفات الأجهزة تُخزن في مجلد /dev.

📌 مثال:

sh
ls /dev

ستلاحظ وجود الكثير من الملفات، مثل:

في الماضي كانت ملفات /dev تُنشأ يدويًا، لكن مع الوقت أصبحت هذه الطريقة غير عملية، فظهرت آليات حديثة مثل udev للتعامل الديناميكي مع الأجهزة (سنشرحها لاحقًا).

2️⃣ أنواع الأجهزة (Device Types)

عند تنفيذ الأمر ls -l /dev ستلاحظ رموز في بداية كل سطر تحدد نوع الجهاز:

الرمز النوع الوصف c Character Device ترسل وتستقبل البيانات حرفًا بحرف (مثل لوحة المفاتيح، /dev/null) b Block Device ترسل وتستقبل البيانات على شكل كتل (مثل الأقراص الصلبة) p Pipe Device قنوات تواصل بين العمليات (processes) مثل FIFO s Socket Device مشابهة للـ pipe لكن تسمح بالتواصل بين عمليات متعددة (مثل الـ sockets)

🧠 رقم الجهاز (Major & Minor):

كل ملف جهاز له رقمين:

sh
brw-rw---- 1 root disk 8, 0 /dev/sda

3️⃣ أسماء الأجهزة الشائعة

🔹 SCSI Devices (sdX)

🔹 PATA Devices (hdX)

🔹 أجهزة وهمية (Pseudo Devices)

4️⃣ أدوات فحص الأجهزة:

🔹 عرض أجهزة USB:

sh
lsusb

🔹 عرض أجهزة PCI (مثل كروت الشبكة، كروت الشاشة...):

sh
lspci

🔹 عرض أجهزة SCSI (الأقراص):

sh
lsscsi

5️⃣ أداة dd: نسخ وتحويل البيانات

dd :

هي أداة قوية جدًا تُستخدم لنسخ البيانات بين الملفات والأجهزة.

🧪 مثال عملي:

sh
dd if=/home/pete/backup.img of=/dev/sdb bs=1024

⚠️ تحذير:

dd قوية جدًا، خطأ بسيط مثل عكس if و of قد يمسح قرصًا كاملاً.

📝 ملخص