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

أساسيات لينكس

مقدمة​

لينكس هو نظام تشغيل مفتوح المصدر مبني على يونكس. فهم لينكس ضروري في الأمن السيبراني لأن:

  • معظم خوادم الويب تستخدم لينكس
  • أدوات الأمان غالبًا ما تُطور للينكس
  • WSL يسمح باستخدام لينكس تحت ويندوز

مقارنة بين ويندوز ولينكس​

هيكل نظام الملفات​

الجانبويندوزلينكس
الجذرC:\/
الفاصل\/
حساسية الحالةلانعم
المستخدمونC:\Users\nom/home/nom
البرامجC:\Program Files/usr/bin, /opt
التكوينالسجلملفات نصية (/etc)

شجرة لينكس​

/
├── bin/ # الثنائيات الأساسية
├── boot/ # ملفات التمهيد
├── dev/ # الأجهزة
├── etc/ # تكوين النظام
├── home/ # أدلة المستخدمين
├── lib/ # المكتبات
├── media/ # نقاط تركيب الوسائط
├── mnt/ # نقاط تركيب مؤقتة
├── opt/ # البرامج الاختيارية
├── proc/ # العمليات (افتراضي)
├── root/ # المنزل للمستخدم الجذر
├── sbin/ # الثنائيات النظامية
├── tmp/ # الملفات المؤقتة
├── usr/ # برامج المستخدم
└── var/ # البيانات المتغيرة (السجلات، البريد)

الأوامر الأساسية​

التنقل​

# الدليل الحالي
pwd

# سرد الملفات
ls
ls -la # تفاصيل + ملفات مخفية
ls -lh # أحجام قابلة للقراءة

# تغيير الدليل
cd /chemin
cd ~ # المنزل
cd - # السابق
cd .. # الأصل

الملفات والمجلدات​

# إنشاء
mkdir dossier
touch fichier

# نسخ
cp source destination
cp -r dossier/ destination/

# نقل/إعادة تسمية
mv source destination

# حذف
rm fichier
rm -r dossier/
rm -rf dossier/ # إجباري (خطر!)

# عرض المحتوى
cat fichier
less fichier # تقسيم الصفحات
head -n 10 fichier
tail -n 10 fichier
tail -f fichier # متابعة في الوقت الحقيقي

البحث​

# العثور على الملفات
find /chemin -name "*.txt"
find / -type f -name "password*"
find / -perm -4000 # SUID

# البحث في الملفات
grep "motif" fichier
grep -r "motif" /chemin/
grep -i "motif" fichier # غير حساس للحالة

الأذونات​

# عرض الأذونات
ls -l fichier

# التنسيق: -rwxrwxrwx
# │└┬┘└┬┘└┬┘
# │ │ │ └── الآخرين (o)
# │ │ └───── المجموعة (g)
# │ └──────── المالك (u)
# └────────── النوع (- ملف، d مجلد)

# تعديل الأذونات
chmod 755 fichier # rwxr-xr-x
chmod u+x fichier # إضافة تنفيذ للمستخدم
chmod go-w fichier # إزالة الكتابة للمجموعة/الآخرين

# تعديل المالك
chown user:group fichier

قيم chmod​

القيمةالإذن
7rwx (قراءة + كتابة + تنفيذ)
6rw- (قراءة + كتابة)
5r-x (قراءة + تنفيذ)
4r-- (قراءة فقط)
0--- (لا شيء)

المستخدمون والمجموعات​

الملفات المهمة​

الملفالمحتوى
/etc/passwdقائمة المستخدمين
/etc/shadowكلمات المرور المشفرة
/etc/groupقائمة المجموعات
/etc/sudoersتكوين sudo

أوامر المستخدمين​

# المستخدم الحالي
whoami
id

# تغيير المستخدم
su - username
su - # تصبح الجذر

# تنفيذ كجذر
sudo commande
sudo -i # شل الجذر

# إدارة المستخدمين
useradd username
passwd username
userdel username

العمليات​

الأوامر​

# سرد العمليات
ps aux
ps -ef

# شجرة العمليات
pstree

# الوقت الحقيقي
top
htop # نسخة محسنة

# قتل عملية
kill PID
kill -9 PID # إجباري
killall nom

# الخلفية
commande &
jobs
fg %1
bg %1

الإشارات الشائعة​

الإشارةالرقمالوصف
SIGTERM15إنهاء بشكل نظيف
SIGKILL9قتل فورًا
SIGINT2مقاطعة (Ctrl+C)
SIGHUP1قطع الاتصال

الشبكة​

الأوامر​

# تكوين IP
ip addr
ifconfig # قديم

# الاتصالات
netstat -tulpn
ss -tulpn # حديث

# اختبار الاتصال
ping adresse
traceroute adresse

# DNS
nslookup domaine
dig domaine

# النقل
wget url
curl url
curl -o fichier url

# الاتصال عن بعد
ssh user@serveur
scp fichier user@serveur:/chemin/

الخدمات والعمليات الخلفية​

systemd (حديث)​

# الحالة
systemctl status service

# بدء/إيقاف
systemctl start service
systemctl stop service
systemctl restart service

# تفعيل/تعطيل عند الإقلاع
systemctl enable service
systemctl disable service

# سرد الخدمات
systemctl list-units --type=service

SysVinit (قديم)​

service nom start
service nom stop
service nom status

الملفات المهمة للأمان​

التكوين​

الملفالوصف
/etc/passwdحسابات المستخدمين
/etc/shadowتجزئة كلمات المرور
/etc/sudoersامتيازات sudo
/etc/ssh/sshd_configتكوين SSH
/etc/crontabالمهام المجدولة للنظام

السجلات​

الملفالوصف
/var/log/auth.logالمصادقة (Debian)
/var/log/secureالمصادقة (RedHat)
/var/log/syslogسجلات النظام
/var/log/messagesرسائل عامة
/var/log/apache2/سجلات Apache

استعراض السجلات​

# Journalctl (systemd)
journalctl
journalctl -u service
journalctl -f # الوقت الحقيقي
journalctl --since today

# الملفات
tail -f /var/log/auth.log
grep "Failed" /var/log/auth.log

البتات الخاصة (الأمان)​

SUID (تعيين معرف المستخدم)​

يسمح بتنفيذ برنامج بامتيازات المالك.

# العثور على الملفات SUID
find / -perm -4000 2>/dev/null

# مثال: passwd لديه SUID root لتعديل /etc/shadow
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd

SGID (تعيين معرف المجموعة)​

مماثل ولكن للمجموعة.

find / -perm -2000 2>/dev/null

Sticky Bit​

يمنع حذف الملفات من قبل غير المالكين.

ls -ld /tmp
# drwxrwxrwt ... /tmp
# يشير 't' إلى sticky bit

البرمجة النصية الأساسية في Bash​

أول برنامج نصي​

#!/bin/bash
# برنامجي النصي الأول

echo "مرحبًا، $USER!"
echo "اليوم هو $(date)"
echo "أنت في $(pwd)"

المتغيرات والشروط​

#!/bin/bash

# المتغيرات
nom="Linux"
version=5

# الشرط
if [ $version -gt 4 ]; then
echo "$nom الإصدار $version حديث"
else
echo "إصدار قديم"
fi

# الحلقة
for i in 1 2 3 4 5; do
echo "التكرار $i"
done

برنامج نصي مفيد - تعداد أساسي​

#!/bin/bash
# تعداد النظام الأساسي

echo "=== معلومات النظام ==="
echo "اسم المضيف: $(hostname)"
echo "النواة: $(uname -a)"
echo "المستخدم: $(whoami)"
echo "المعرف: $(id)"

echo -e "\n=== المستخدمون ==="
cat /etc/passwd | cut -d: -f1

echo -e "\n=== ملفات SUID ==="
find / -perm -4000 2>/dev/null

echo -e "\n=== المهام المجدولة ==="
cat /etc/crontab

echo -e "\n=== اتصالات الشبكة ==="
ss -tulpn

WSL (النظام الفرعي لويندوز للينكس)​

التثبيت​

# PowerShell (Admin)
wsl --install

# اختيار توزيعة
wsl --install -d Ubuntu

أوامر WSL​

# سرد التوزيعات
wsl --list --verbose

# بدء
wsl

# الوصول إلى ملفات ويندوز
cd /mnt/c/Users/

# من ويندوز، الوصول إلى لينكس
\\wsl$\Ubuntu\home\user\

التمارين​

  1. تنقل في نظام الملفات وسرد الملفات في /etc
  2. أنشئ ملفًا وعدل أذوناته إلى 644
  3. اعثر على جميع ملفات SUID في النظام
  4. اكتب برنامجًا نصيًا يعرض معلومات النظام
  5. استعرض سجلات المصادقة

المراجع​