Logo

معمل أنظمة التشغيل - الأسبوع الثالث

12 دقيقة قراءة
شرائح الدرس
1 / 15

معمل نظم التشغيل - الأسبوع الثالث

الملكية، والصلاحيات، والأرشفة، والضغط، وأوامر معلومات النظام

المقرر: CS211P - نظام التشغيل (1)
الكلية: كلية الحاسبات والمعلومات - جامعة المنصورة
الفصل الدراسي: خريف 2024-2025
الفرقة: الثانية


جدول المحتويات

  1. أمرا echo و cat
  2. ملكية ملفات Linux
  3. صلاحيات الملفات
  4. الأرشفة والضغط
  5. أوامر معلومات النظام
  6. تمارين المعمل

1. أمرا echo و cat

1.1 أمر echo

يُستخدم أمر echo لعرض نص أو سلسلة حروف على الطرفية.

الصياغة الأساسية:

echo string

مثال:

echo "Hello, Operating Systems!"

الناتج: Hello, Operating Systems!

1.2 إعادة توجيه الناتج إلى ملف

بدلًا من عرض الناتج على الطرفية، يمكنك إعادة توجيهه إلى ملف باستخدام المُعامل >> (إلحاق) أو المُعامل > (استبدال كامل).

الإلحاق بملف:

echo "This is a new line" >> fileName.txt

استبدال محتوى ملف بالكامل:

echo "This will replace all content" > fileName.txt

ملاحظة:

  • > يُنشئ ملفًا جديدًا أو يستبدل المحتوى الموجود بالكامل
  • >> يُلحق النص بنهاية الملف الموجود، أو يُنشئ ملفًا جديدًا إن لم يكن موجودًا

1.3 أمر cat

يُستخدم أمر cat (اختصار concatenate) لقراءة محتوى الملفات وعرضه.

الصياغة الأساسية:

cat fileName

مثال:

cat myfile.txt

1.4 استخدامات متقدمة لأمر cat

عرض المحتوى مع ترقيم الأسطر:

cat -n fileName

مثال:

cat -n script.sh

الناتج:

     1  #!/bin/bash
     2  echo "Hello World"
     3  # This is a comment

عرض محتوى عدة ملفات معًا:

cat fileName1 fileName2

مثال:

cat file1.txt file2.txt

2. ملكية ملفات Linux

في Linux، لكل ملف ومجلد ثلاثة أنواع من الملكية:

2.1 المالك (User - u)

  • المستخدم الذي أنشأ الملف
  • يمتلك التحكم الأساسي في الملف
  • يستطيع تعديل الصلاحيات

2.2 المجموعة (Group - g)

  • يمكن أن تضم المجموعة عدة مستخدمين
  • يشترك جميع مستخدمي المجموعة في نفس الصلاحيات على الملف
  • مفيدة في العمل الجماعي

2.3 الآخرون (Others - o)

  • يمثلون كل من عداهم على النظام
  • المستخدمون الذين ليسوا المالك ولا ينتمون إلى المجموعة
  • عادةً ما يملكون أضيق صلاحيات وصول

مثال:

ls -l myfile.txt

الناتج:

-rw-r--r-- 1 mahmoud students 1234 Oct 12 10:30 myfile.txt
  • المالك: mahmoud
  • المجموعة: students
  • الآخرون: كل المستخدمين الآخرين

3. صلاحيات الملفات

يستخدم Linux نظام صلاحيات للتحكم في الوصول إلى الملفات والمجلدات. توجد ثلاثة أنواع من الصلاحيات:

3.1 أنواع الصلاحيات

الصلاحيةالرمزالقيمة الرقميةللملفاتللمجلدات
القراءةr4فتح الملف وقراءتهعرض محتويات المجلد
الكتابةw2تعديل محتوى الملفإنشاء الملفات وحذفها وإعادة تسميتها داخل المجلد
التنفيذx1التشغيل كبرنامجالدخول إلى المجلد (cd)
بلا صلاحية-0لا يوجد وصوللا يوجد وصول

3.2 بنية الصلاحيات

تُعرَض الصلاحيات بالصيغة التالية:

-rwxrwxrwx

تفصيل الصيغة:

- rwx rwx rwx
│  │   │   │
│  │   │   └─── صلاحيات الآخرين
│  │   └─────── صلاحيات المجموعة
│  └─────────── صلاحيات المالك
└────────────── نوع الملف (- لملف عادي، d لمجلد)

مثال:

-rw-r--r--
  • المالك: قراءة + كتابة (rw-)
  • المجموعة: قراءة فقط (r--)
  • الآخرون: قراءة فقط (r--)

3.3 حساب الصلاحيات بالنظام الرقمي

يمكن التعبير عن الصلاحيات كرقم ثماني (Octal) من ثلاثة أرقام:

الصلاحيةالحسابالقيمة
rwx4 + 2 + 17
rw-4 + 2 + 06
r-x4 + 0 + 15
r--4 + 0 + 04
-wx0 + 2 + 13
-w-0 + 2 + 02
--x0 + 0 + 11
---0 + 0 + 00

مثال:

  • الأمر chmod 755 يعني:
    • المالك: rwx (7)
    • المجموعة: r-x (5)
    • الآخرون: r-x (5)

3.4 تغيير الصلاحيات باستخدام chmod

يُعدِّل أمر chmod (اختصار change mode) صلاحيات الملفات.

الطريقة الأولى: الطريقة الرمزية (Symbolic)

الصياغة:

chmod [who][operation][permission] filename

من (who):

  • u = المستخدم (المالك)
  • g = المجموعة
  • o = الآخرون
  • a = الجميع (المستخدم والمجموعة والآخرون)

العملية (operation):

  • + = إضافة صلاحية
  • - = إزالة صلاحية
  • = = تحديد الصلاحية بدقة

أمثلة:

# إضافة صلاحية التنفيذ للمالك
chmod u+x script.sh
 
# إزالة صلاحية الكتابة من المجموعة
chmod g-w file.txt
 
# إضافة القراءة والكتابة للجميع
chmod a+rw document.txt
 
# إزالة صلاحية التنفيذ من الآخرين
chmod o-x program
 
# تحديد الصلاحيات بدقة: المالك=rw، المجموعة=r، الآخرون=بلا صلاحية
chmod u=rw,g=r,o= file.txt

الطريقة الثانية: الطريقة الرقمية (الثمانية - Octal)

الصياغة:

chmod [number] filename

أمثلة:

# المالك: rwx، المجموعة: ---، الآخرون: r--
chmod 704 file.txt
 
# المالك: rw-، المجموعة: r--، الآخرون: r--
chmod 644 document.txt
 
# المالك: rwx، المجموعة: r-x، الآخرون: r-x
chmod 755 script.sh
 
# المالك: rw-، المجموعة: rw-، الآخرون: ---
chmod 660 private.txt

أنماط الصلاحيات الشائعة:

  • 644 - الصلاحيات القياسية للملفات (المالك يقرأ ويكتب، الآخرون يقرؤون فقط)
  • 755 - الصلاحيات القياسية للملفات التنفيذية والمجلدات
  • 700 - ملف/مجلد خاص (المالك وحده يملك حق الوصول)
  • 777 - جميع الصلاحيات للجميع (نادرًا ما يُنصح باستخدامه)

4. الأرشفة والضغط

4.1 الأرشفة مقابل الضغط

الأرشفة (Archiving):

  • تجمع عدة ملفات ومجلدات في ملف واحد
  • لا تُقلِّل من حجم الملفات
  • تستخدم الامتداد .tar
  • مفيدة لتنظيم الملفات المتعددة ونقلها

الضغط (Compression):

  • يُقلِّل من حجم الملفات
  • يوفِّر مساحة القرص وعرض النطاق الترددي
  • يستخدم امتدادات مثل .gz و.zip
  • مفيد لتخزين الملفات الكبيرة ونقلها

4.2 أمر tar (الأرشفة)

tar اختصار لـ"Tape Archive"، ويُستخدم لإنشاء ملفات الأرشيف.

إنشاء أرشيف

الصياغة:

tar cvf archive_name.tar file1 file2 directory_name

الخيارات:

  • c = إنشاء أرشيف جديد
  • v = وضع مُفصَّل (verbose)، لعرض التقدم
  • f = تحديد اسم الملف

مثال:

tar cvf backup.tar file1.txt file2.txt documents/

استخراج أرشيف

الصياغة:

tar xvf archive_name.tar

الخيارات:

  • x = استخراج الملفات من الأرشيف
  • v = وضع مُفصَّل
  • f = تحديد اسم الملف

مثال:

tar xvf backup.tar

عرض محتويات الأرشيف

الصياغة:

tar tvf archive_name.tar

الخيارات:

  • t = عرض قائمة المحتويات
  • v = وضع مُفصَّل
  • f = تحديد اسم الملف

مثال:

tar tvf backup.tar

4.3 أمر gzip (الضغط)

يقوم gzip بضغط ملف واحد ويضيف له الامتداد .gz.

ضغط ملف

الصياغة:

gzip filename

مثال:

gzip largefile.txt
# ينشئ: largefile.txt.gz (ويُحذف الملف الأصلي)

ملاحظة: بشكل افتراضي، يحذف gzip الملف الأصلي بعد ضغطه.

فك ضغط ملف

الصياغة:

gzip -d filename.gz
# أو
gunzip filename.gz

مثال:

gzip -d largefile.txt.gz
# يستعيد: largefile.txt

الجمع بين tar و gzip

يمكنك إنشاء أرشيفات مضغوطة باستخدام الأمرين معًا:

الطريقة الأولى: خطوتان منفصلتان

tar cvf archive.tar files/
gzip archive.tar
# ينشئ: archive.tar.gz

الطريقة الثانية: أمر واحد

tar czf archive.tar.gz files/
# c = إنشاء، z = الضغط باستخدام gzip، f = اسم الملف

استخراج أرشيف tar مضغوط:

tar xzf archive.tar.gz
# x = استخراج، z = فك الضغط باستخدام gzip، f = اسم الملف

4.4 أمر zip (الضغط)

يقوم zip بضغط الملفات والمجلدات في أرشيف بامتداد .zip (متوافق مع Windows).

إنشاء أرشيف zip

الصياغة:

zip -r archive_name.zip file1 file2 directory_name

الخيارات:

  • -r = تكراري (recursive)، لتضمين المجلدات

مثال:

zip -r backup.zip file1.txt file2.txt documents/

استخراج أرشيف zip

الصياغة:

unzip archive_name.zip

مثال:

unzip backup.zip

الاستخراج إلى مجلد محدد:

unzip backup.zip -d /path/to/destination/

عرض المحتويات دون استخراج:

unzip -l backup.zip

5. أوامر معلومات النظام

5.1 أوامر مساحة القرص

df - استخدام نظام ملفات القرص

يعرض مساحة القرص المستخدمة لجميع أنظمة الملفات المُركَّبة (Mounted).

الصياغة:

df -h

الخيارات:

  • -h = صيغة مقروءة للإنسان (KB، MB، GB)

مثال على الناتج:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       50G   20G   28G  42% /
/dev/sda2       100G  75G   20G  79% /home

du - استخدام المجلد

يعرض مساحة القرص التي تستخدمها المجلدات.

الصياغة:

du -hs directory_name

الخيارات:

  • -h = صيغة مقروءة للإنسان
  • -s = ملخص (الحجم الإجمالي فقط)

مثال:

du -hs /home/mahmoud/documents/
# الناتج: 2.3G    /home/mahmoud/documents/

5.2 استخدام الذاكرة

free - استخدام الذاكرة ومساحة الـ Swap

يعرض استخدام الذاكرة (RAM) ومساحة الـ Swap.

الصياغة:

free
# أو للصيغة المقروءة للإنسان
free -h

مثال على الناتج:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        256M        2.4G        5.1G
Swap:          2.0G          0B        2.0G

5.3 أوامر معلومات النظام

اسم الجهاز والشبكة

# عرض اسم الجهاز
hostname
 
# عرض عنوان IP
hostname -I

التاريخ والوقت

# عرض التاريخ والوقت الحاليين
date
 
# عرض تقويم الشهر الحالي
cal
 
# عرض تقويم سنة محددة
cal 2025

معلومات المستخدم

# عرض اسم المستخدم الحالي (الطريقة الأولى)
echo $USER
 
# عرض اسم المستخدم الحالي (الطريقة الثانية)
whoami
 
# عرض معرِّف المستخدم والمجموعات
id

مثال على الناتج:

$ whoami
mahmoud
 
$ id
uid=1000(mahmoud) gid=1000(mahmoud) groups=1000(mahmoud),27(sudo),999(docker)

5.4 سجل الأوامر (History)

# عرض الأوامر المستخدمة مؤخرًا
history
 
# حفظ السجل في ملف
history > commands.txt
 
# تنفيذ أمر محدد من السجل
!123    # ينفذ الأمر رقم 123
 
# تنفيذ آخر أمر
!!
 
# البحث في سجل الأوامر
history | grep "chmod"

5.5 اختبار الشبكة

ping - فحص اتصال الشبكة

يختبر الاتصال بخادم أو عنوان IP.

الصياغة:

ping server_name
# أو
ping IP_address

مثال:

ping google.com
ping 8.8.8.8

إيقاف ping بالضغط على: Ctrl + C

تحديد عدد مرات الإرسال:

ping -c 5 google.com
# يرسل 5 حزم ping فقط

5.6 الخروج من الطرفية

exit
# أو اضغط Ctrl + D

6. تمارين المعمل

تمرين 1: أمرا echo و cat

  1. أنشئ ملفًا باسم greeting.txt يحتوي على النص "Hello from FCIS" باستخدام echo
  2. اعرض محتوى greeting.txt باستخدام cat
  3. ألحق عبارة "Mansoura University" بالملف
  4. اعرض الملف مع ترقيم الأسطر
  5. أنشئ ملفًا آخر info.txt يحتوي على اسمك ورقمك الجامعي
  6. اعرض الملفين معًا باستخدام أمر cat واحد

الحل:

echo "Hello from FCIS" > greeting.txt
cat greeting.txt
echo "Mansoura University" >> greeting.txt
cat -n greeting.txt
echo "Name: Mahmoud Abas" > info.txt
echo "Student ID: 12345" >> info.txt
cat greeting.txt info.txt

تمرين 2: صلاحيات الملفات

  1. أنشئ ملفًا باسم script.sh يحتوي على بعض النصوص
  2. تحقق من صلاحياته الحالية باستخدام ls -l
  3. أعطِ المالك صلاحية التنفيذ باستخدام الطريقة الرمزية
  4. أزِل صلاحية الكتابة من المجموعة باستخدام الطريقة الرمزية
  5. اضبط الصلاحيات على 755 باستخدام الطريقة الرقمية
  6. أنشئ مجلدًا واضبط صلاحياته على 700

الحل:

echo "#!/bin/bash" > script.sh
echo "echo 'Test script'" >> script.sh
ls -l script.sh
chmod u+x script.sh
chmod g-w script.sh
chmod 755 script.sh
mkdir mydir
chmod 700 mydir
ls -ld mydir

تمرين 3: الأرشفة والضغط

  1. أنشئ ثلاثة ملفات نصية بمحتوى مختلف
  2. أنشئ أرشيف tar يحتوي على الملفات الثلاثة
  3. اعرض قائمة محتويات الأرشيف
  4. استخرج الأرشيف للتحقق
  5. اضغط أحد الملفات باستخدام gzip
  6. أنشئ أرشيف zip يضم جميع الملفات
  7. قارن الفرق في الحجم بين الملفات الأصلية والمضغوطة

الحل:

echo "File 1 content" > file1.txt
echo "File 2 content" > file2.txt
echo "File 3 content" > file3.txt
 
tar cvf myarchive.tar file1.txt file2.txt file3.txt
tar tvf myarchive.tar
tar xvf myarchive.tar
 
gzip file1.txt
ls -lh
 
zip myfiles.zip file2.txt file3.txt file1.txt.gz
ls -lh

تمرين 4: معلومات النظام

  1. اعرض اسم جهازك
  2. اعرض عنوان IP الخاص بك
  3. اعرض التاريخ والوقت الحاليين
  4. اعرض تقويم هذا الشهر
  5. تحقق من استخدام مساحة القرص بصيغة مقروءة للإنسان
  6. تحقق من حجم مجلدك الرئيسي (Home Directory)
  7. اعرض استخدام الذاكرة
  8. اعرض اسم المستخدم الخاص بك بثلاث طرق مختلفة
  9. أرسل ping إلى google.com خمس مرات

الحل:

hostname
hostname -I
date
cal
df -h
du -hs ~
free -h
echo $USER
whoami
id
ping -c 5 google.com

تمرين 5: تحدٍّ شامل

أنشئ سكريبت يقوم بما يلي:

  1. إنشاء مجلد باسم "lab3_project"
  2. إنشاء ثلاثة مجلدات فرعية بداخله: "docs" و"scripts" و"data"
  3. إنشاء ملفات نموذجية داخل كل مجلد
  4. ضبط الصلاحيات المناسبة (755 للمجلدات، 644 للملفات)
  5. إنشاء أرشيف tar مضغوط للمشروع بالكامل
  6. عرض مقارنة الحجم بين المجلد والأرشيف

الحل:

# إنشاء بنية المجلدات
mkdir -p lab3_project/{docs,scripts,data}
 
# إنشاء ملفات نموذجية
echo "Documentation file" > lab3_project/docs/readme.txt
echo "#!/bin/bash" > lab3_project/scripts/run.sh
echo "echo 'Running script'" >> lab3_project/scripts/run.sh
echo "Sample data: 1,2,3,4,5" > lab3_project/data/data.csv
 
# ضبط الصلاحيات
chmod 755 lab3_project lab3_project/*
chmod 644 lab3_project/docs/* lab3_project/data/*
chmod 755 lab3_project/scripts/*
 
# إنشاء أرشيف مضغوط
tar czf lab3_project.tar.gz lab3_project/
 
# عرض مقارنة الحجم
echo "Directory size:"
du -hs lab3_project/
echo "Archive size:"
ls -lh lab3_project.tar.gz

ملخص

في هذا المعمل، تعلمت:

أمرا echo و cat: عرض النصوص وقراءة محتوى الملفات
ملكية الملفات: فهم المالك والمجموعة والآخرين
صلاحيات الملفات: القراءة والكتابة والتنفيذ باستخدام الطريقتين الرمزية والرقمية
الأرشفة: استخدام tar لتجميع الملفات معًا
الضغط: تقليل حجم الملفات باستخدام gzip وzip
أوامر النظام: فحص مساحة القرص والذاكرة واتصال الشبكة ومعلومات المستخدم


مصادر إضافية


نصائح للنجاح

  1. تدرَّب بانتظام - تصبح أوامر Linux أسهل مع التكرار
  2. استخدم الإكمال التلقائي - اضغط Tab لإكمال أسماء الملفات والأوامر تلقائيًا
  3. اقرأ رسائل الخطأ - عادةً ما تخبرك بما حدث خطأ
  4. استخدم صفحات man - تحتوي على معلومات تفصيلية عن الأوامر
  5. كن حذرًا مع الصلاحيات - الصلاحيات الخاطئة قد تجعل الملفات غير قابلة للوصول
  6. انسخ ملفاتك احتياطيًا قبل الضغط - احتفظ دائمًا بنسخة من الملفات المهمة

نهاية المعمل 03