You are on page 1of 461

‫الوحدة األولى‬

‫مقدمة لينكس‬

‫عبدهللا القحطاني‬
‫أهداف االمتحان‬
‫‪ 1.1‬تطور اللينكس وأنظمة التشغيل المشهورة‬
‫• ملخص األهداف‬
‫– معرفة تاريخ اللينكس واليونكس‬
‫– فهم أجزاء نظام التشغيل لينكس‬
‫– معرفة األنظمة مفتوحة المصدر‬
‫– معرفة أين يمكن استخدام اللينكس‬

‫عبدهللا القحطاني‬
‫تطور اللينكس‬

‫عبدهللا القحطاني‬
‫ما هو اللينكس ؟‬
‫• اللينكس هو نواة النظام (‪ )Kernel‬وهي وحدة التحكم‬
‫المسؤولة عن كل ما يحدث في الحاسب‪.‬‬
‫• هناك بعض األدوات المكملة للحصول على نظام تشغيل‬
‫متكامل وهي‬
‫– الشل (‪ )Shell‬وهي الواجهة الكتابية المستخدمة لكتابة األوامر‪.‬‬
‫– أنظمة اإلدارة (مثل‪ :‬اضافة المستخدمين)‬
‫– التطبيقات (مثل‪ :‬البريد االلكتروني‪ ،‬صفحات االنترنت)‬
‫– هذه االجزاء مع بعضها تسمى توزيعة لينكس ( ‪Linux‬‬
‫‪)Distribution‬‬

‫عبدهللا القحطاني‬
‫تاريخ اللينكس‬
‫• اخترع كمشروع لطالب هاوي في عام ‪ 1991‬من قبل لينوس‬
‫تورفالدس عندما كان طالبا في جامعة هلسنكي في فنلندا‪.‬‬
‫• الناس بدأت تساهم في جعل هذا النظام الجديد يعمل مع‬
‫أجهزتهم الشخصية‪.‬‬
‫• قام مشروع جنو (‪ )GNU‬بتقديم مجموعة كبيرة من األدوات‬
‫والبرامج لنظام اللينكس‬

‫عبدهللا القحطاني‬
‫ما هو اليونكس ‪UNIX‬؟‬
‫بدأ اليونكس الذي طور من قبل معامل بيل في عام ‪1970‬م‬ ‫•‬
‫ثم سمح للجامعات بتطويره‪.‬‬
‫يعد اليونكس االن عالمة تجارية لألنظمة المفتوحة المصدر‪.‬‬ ‫•‬
‫لكي يطلق على نظام تشغيل بأنه يونكس البد أن يحصل على‬ ‫•‬
‫مصادقة‬
‫اللينكس ليس مصادق لذلك هو ليس يونكس ولكن يطلق عليه‬ ‫•‬
‫‪UNIX-like‬‬

‫عبدهللا القحطاني‬
‫ما هي وظيفة لينكس (‪)kernel‬؟‬
‫نواة اللينكس (‪ )kernel‬تدير عمليات التطبيق‪.‬‬ ‫•‬
‫تخصيص جزء من الذاكرة للبرامج واستعادته‪.‬‬ ‫•‬
‫يدير عملية الوصول الى القرص أو الوصول للمعالج‪.‬‬ ‫•‬
‫يقوم بتخصيص المكونات المادية ألداء العمليات الخاصة بتطبيق‬ ‫•‬
‫ما وعزله عن البقية‬
‫يوفر الحماية واألمن ويعزل المستخدمين عن بعضهم البعض‪.‬‬ ‫•‬
‫يوفر التبديل بين العمليات المختلفة( ‪preemptive‬‬ ‫•‬
‫‪.) multitasking‬‬

‫عبدهللا القحطاني‬
‫مفتوح المصدر‬
‫البشر يكتبون البرامج على شكل شفرة تسمى كود المصدر‬ ‫•‬
‫‪Source Code‬‬
‫المترجم ‪ Compiler‬يترجم هذه الشفرة الى لغة اآللة‪.‬‬ ‫•‬
‫اذا كنا نملك الشفرة فإننا نستطيع عمل التغيرات عليها‬ ‫•‬
‫وترجمتها لنرى نتائج التغيير‪.‬‬
‫مفتوح المصدر تعني اننا نستطيع فحص وتعديل كود‬ ‫•‬
‫المصدر‬

‫عبدهللا القحطاني‬
‫توزيعات اللينكس‬
‫ تعنى بإنشاء وتخزين وتركيب‬distribution ‫• التوزيعة‬
‫ وتركيب ما تبقى من البرنامج‬،‫النواة‬
Kernel + tools + installation + package •
management = distribution
RedHat RHEL ‫• ريدهات‬
Fedora, CentOS, Scientific Linux –
Debian ‫• ديبيان‬
Ubuntu, many appliance based distributions –

‫عبدهللا القحطاني‬
‫لينكس يعمل على‬
‫• منصات األجهزة التي يعمل عليها نظام اللينكس‬
Big Iron (e.g. IBM Power Systems) –
Enterprise servers (Dell, HP, IBM, etc) –
Desktops –
Laptops –
Single board (Raspberry Pi) –
Custom hardware (TiVo) –
Embedded devices/Phones (Android) –

‫عبدهللا القحطاني‬
‫‪ 1.3‬اختيار نظام التشغيل‬
‫• ملخص األهداف‬
‫– فهم كيفية ادارة دورة حياة توزيعة اللينكس‬
‫– دراسة االختالفات بين أنظمة التشغيل‬

‫عبدهللا القحطاني‬
‫ادارة دورة حياة التوزيعة‬

‫‪Distribution Life Cycle Management‬‬

‫عبدهللا القحطاني‬
‫نقاط القرار‬
‫ماذا سيفعل الجهاز؟‬ ‫•‬
‫ما هي البرامج التي يحتاجها الكمبيوتر ليعمل؟‬ ‫•‬
‫هل تحتاج الى مكونات مادية محددة ام الى نظام تشغيل؟‬ ‫•‬
‫من الذي سيقوم بصيانة الجهاز والنظام؟‬ ‫•‬
‫كم من الوقت يحتاج الجهاز او النظام ليبقى يعمل بكفاءة؟‬ ‫•‬

‫عبدهللا القحطاني‬
‫دورة االطالق ‪Release Cycles‬‬
‫• تحديثات البرامج وأنظمة التشغيل تأتي بشكل دوري ويسمى‬
‫دورة االطالق ‪Release Cycles‬‬
‫• التحديثات ممكن أن تكون رئيسة ‪ major‬أو ثانوية ‪minor‬‬
‫• أمثلة على ذلك‪:‬‬
‫– النسخ الجديدة من ‪ Fedora‬تصدر كل ستة أشهر‪.‬‬
‫– التحديثات الثانوية من ‪ RHEL‬تصدر كل ‪ 12‬الى ‪ 18‬شهر‬
‫– التحديثات الرئيسة من ‪ RHEL‬تصدر كل ‪ 3‬الى ‪ 6‬سنوات‬

‫عبدهللا القحطاني‬
‫دورة الصيانة‬
‫‪Maintenance Cycles‬‬
‫• البرامج عادة تمر بعدة مراحل‬
‫– تطوير نشط ‪Actively developed‬‬
‫– اصالح األخطاء فقط ‪Bug fixes only‬‬
‫– تصحيحات األمان فقط ‪Security fixes only‬‬
‫– عدم وجود تحديثات ‪No updates‬‬
‫• هذا ما يسمى بدورة الصيانة ‪Maintenance Cycles‬‬
‫• دورة الصيانة القصيرة تعني أن التحديثات المتكررة مطلوبة‬

‫عبدهللا القحطاني‬
‫إيجابيات وسلبيات الدورات‬
‫‪Pros and Cons of cycles‬‬
‫اطالق التحديثات بشكل سريع يعني أن أحدث البرمجيات‬ ‫•‬
‫ستكون متوفرة بشكل أسرع‬
‫يعني أيضا أن تطوير البرنامج سيكون أسرع ليبقى يعمل أو‬ ‫•‬
‫سيصبح أقل استقرارا‬
‫دورة صيانة أطول تعني االعتماد على مستويات البرامج‬ ‫•‬
‫الحالية لفترة أطول‬
‫دورة صيانة أطول غالبا تحتاج الى دفع قيمة حزم الدعم‬ ‫•‬

‫عبدهللا القحطاني‬
‫مصطلحات البرنامج‬
‫‪Software Terms‬‬
‫االصدارات الحديثة تقدم للمستخدم على شكل نسخ ‪beta‬‬ ‫•‬
‫نسخ بيتا ‪ beta‬هي إصدار فيه العديد من المميزات الجديدة‬ ‫•‬
‫ولكن لم يتم اختبارها بدقة‪.‬‬
‫يتم طرحها للمستخدمين ليتم اختبارها واكتشاف عيوبها ومن ثم‬ ‫•‬
‫اصالح هذه العيوب‪.‬‬
‫بعد اصالح العيوب وانتهاء مدة االختبار يتم طرح نسخ محدثة‬ ‫•‬
‫تسمى النسخ المستقرة ‪stable‬‬
‫مفهوم التوافق ‪ Backward compatibility‬يعني مقدرة نظام‬ ‫•‬
‫التشغيل الحديث على تشغيل البرامج المصممة لإلصدارات‬
‫السابقة‬

‫عبدهللا القحطاني‬
‫المقارنة بين أنظمة التشغيل‬

‫‪Comparing Operating Systems‬‬

‫عبدهللا القحطاني‬
‫نظام ‪Windows‬‬
‫ينقسم الى نوعين نسخ سطح المكتب ‪ desktop‬ونسخ الخادم‬ ‫•‬
‫‪server‬‬
‫دورة االصدار بطيئة ‪ ،‬ودورة الصيانة طويلة‬ ‫•‬
‫تركيز عالي على التوافق ‪backward compatibility‬‬ ‫•‬
‫يعمل على واجهة المستخدم الرسومية ‪GUI‬‬ ‫•‬
‫تحسين البرمجة والمقدرة االدارية لكي ينافس اللينكس‬ ‫•‬

‫عبدهللا القحطاني‬
‫نظام ‪Apple OS X‬‬
‫يعمل النظام على أجهزة ابل ‪Apple HW‬‬ ‫•‬
‫هو نظام تشغيل ألجهزة سطح المكتب‬ ‫•‬
‫نسخة الخادم ‪ Server‬تضيف حزم مساعدة لنسخ ‪Desktop‬‬ ‫•‬
‫والتي تساعد في عملية االدارة ومشاركة الملفات‬
‫معتمد من قبل يونكس ‪UNIX certified‬‬ ‫•‬
‫التحديثات الرئيسة يتم اصدارها كل ‪ 18‬الى ‪ 24‬شهر‬ ‫•‬

‫عبدهللا القحطاني‬
Unix ‫انواع تجارية أخرى من‬
BSD •
OpenBSD –
FreeBSD –
NetBSD –
GNOME •
KDE •
Oracle Solaris •
IBM AIX •
HP-UX •

‫عبدهللا القحطاني‬
‫نظام ‪Linux‬‬
‫• بعد اختيار نظام ‪ Linux‬البد من اختيار توزيعة‬
‫‪distribution‬‬
‫• اختالف التوزيعات يعتمد على اختالف الغرض من‬
‫االستخدام مثل ‪desktop, server, scientific, network‬‬
‫• بعض التوزيعات تقدم الدعم الفني بمقابل مادي‪ ،‬والغالبية‬
‫يكون الدعم تطوعي‪.‬‬

‫عبدهللا القحطاني‬
‫نظام اندرويد ‪Android‬‬
‫• هو نظام مصمم برعاية جوجل وهو توزيعة لينكس األكثر‬
‫شعبية في العالم‪.‬‬
‫• يستخدم اندرويد ‪( Dalvik‬الجهاز الظاهري ‪virtual‬‬
‫‪ )machine‬مع لينكس‪ ،‬وتوفر منصة قوية لألجهزة‬
‫المحمولة ‪ mobile devices‬مثل الهواتف ‪phones‬‬
‫واألجهزة اللوحية ‪.tablets‬‬

‫عبدهللا القحطاني‬
‫الوحدة الثانية‬
‫التطبيقات مفتوحة المصدر والرخص‬
‫‪Open Source Applications and‬‬
‫‪Licenses‬‬

‫عبدهللا القحطاني‬
‫أهداف االمتحان‬
‫‪ 1.2‬التطبيقات مفتوحة المصدر الرئيسة‬
‫• ملخص األهداف‬
‫– فهم سطح المكتب – الخوادم – تطبيقات الجوال‬
‫– فهم لغات التطوير وأدوات اإلدارة‬

‫عبدهللا القحطاني‬
‫أوجه لينكس‬

‫‪The Many Faces of Linux‬‬

‫عبدهللا القحطاني‬
‫أدوار نظام ‪Linux‬‬
‫• برنامج الخوادم ‪Servers Software‬‬
‫– يعالج البيانات نيابة عن األجهزة األخرى‬
‫– مثل ‪file servers, web servers, mail servers‬‬
‫• برنامج سطح المكتب ‪Desktop Software‬‬
‫– تسمى ببرامج العمالء وهي أكثر تفاعل وعادة تستخدم الواجهات‬
‫الرسومية‬
‫• تطبيقات الجوال ‪Mobile Apllications‬‬
‫– نوعين هاتف ‪ phone‬أو جهاز لوحي ‪tablet‬‬
‫• برامج التطوير ‪Development‬‬
‫– وهي مثل سطح المكتب لكن بسعة أكبر للتطوير‬

‫عبدهللا القحطاني‬
‫خوادم الويب‬
‫‪Web Servers‬‬
‫• يقدم خدمة صفحات الويب الثابتة للعمالء من خالل‬
‫بروتوكول ‪HTTP‬‬
‫• ممكن أيضا أن يخدم المحتوى الديناميكي بإضافة خدمات‬
‫‪ – PHP‬جافا – بيثون – روبي ‪...‬الخ‬
‫• أشهر خوادم الويب هي ‪Apache and Nginx‬‬
‫– ‪ %65‬من مواقع الويب تستخدم ‪Apache and Nginx‬‬

‫عبدهللا القحطاني‬
‫خوادم البريد‬
‫‪Mail Servers‬‬
‫• وكيل نقل البريد )‪Mail Transfer Agents (MTA‬‬
‫– ينقل البريد االلكتروني بين المواقع‬
‫– مثل ‪sendmail, postfix‬‬
‫– يستخدم بروتوكول ‪SMTP‬‬
‫• وكيل تسليم البريد )‪Mail Delivery Agents (MDA‬‬
‫– يقوم بتخزين البريد اإللكتروني ‪ e-mail‬في علبة البريد الخاصة‬
‫بالمستخدم‬
‫– مثل ‪Procmail or custom software‬‬
‫• خوادم ‪IMAP/POP‬‬
‫– تسمح للعميل بالحصول على البريد االلكتروني‬
‫– مثل ‪Dovecot, Cyrus‬‬

‫عبدهللا القحطاني‬
‫خوادم الملفات‬
‫‪File Servers‬‬
‫• نظام ملفات الشبكة )‪Network File System (NFS‬‬
‫– وهو بروتوكول مشاركة الملفات األصلي لنظام ‪Unix‬‬
‫• سامبا ‪Samba‬‬
‫– يسمح ألجهزة ‪ Unix‬بأن تحاكي خوادم وعمالء أنظمة الويندوز‬
‫‪ Windows‬وبالتالي العمل في مجال ويندوز‬
‫• مشروع ‪Netatalk‬‬
‫– يسمح ألجهزة ‪ Unix‬بأن تحاكي خادم ملفات ابل‬

‫عبدهللا القحطاني‬
‫البنية التحتية‬
‫‪Infrastructure‬‬
‫• ‪ISC bind‬‬
‫– وهو خادم نظام أسماء المجال ‪Domain Name System Server‬‬
‫– يقوم بتحويل األسماء الى عناوين‬
‫• ‪OpenLDAP‬‬
‫– وهو خادم بروتوكول الوصول الخفيف إلى الدليل )‪ (LDAP‬يقوم‬
‫بتخزين معلومات المراجع ‪Directories‬‬
‫• ‪ISC DHCP‬‬
‫– يقوم بتهيئة األجهزة ذات العناوين المتغيرة وذلك باستخدام ‪DHCP‬‬

‫عبدهللا القحطاني‬
‫قواعد البيانات‬
‫‪Databases‬‬
‫• خادم قاعدة البيانات يخزن المعلومات ويسمح أيضا‬
‫باسترجاعها واالستعالم عنها بكل سهولة‬
‫• ‪ MySQL and PostgreSQL‬هي أشهر خوادم قواعد‬
‫البيانات المترابطة‬
‫• ‪ SQL‬هي لغة تستخدم لالستعالم عن البيانات الموجودة في‬
‫قواعد البيانات المترابطة‬
‫– مثال ;‪SELECT * FROM users‬‬

‫عبدهللا القحطاني‬
‫واجهة سطح المكتب الرسومية‬
‫‪Graphical Desktop‬‬
‫• نافذة ‪ X‬أو ‪ X-Windows‬هي الواجهة الرسومية لنظام‬
‫لينكس‬
‫– يوفر النوافذ واألدوات األولية الرئيسة‬
‫– يعرف أيضا باسم ‪ X11‬أو ‪X.org‬‬
‫• مدير النوافذ ‪ Window managers‬هو برنامج يقوم‬
‫بإضافة القوائم وإدارة النوافذ (فتح – اغالق – اخفاء) ‪...‬الخ‬
‫• بيئات سطح المكتب ‪ Desktop environment‬يوفر‬
‫برامج مدراء وأدوات النافذة‪.‬‬

‫عبدهللا القحطاني‬
‫‪Window Managers‬‬
‫• برنامج مدير النافذة يحتوي على عدة تطبيقات منها‬
‫– ‪Compiz, FVWM, Enlightenment, Metacity‬‬
‫• يوفر للنوافذ األساسية امكانية التحرك‪ ،‬الفتح‪ ،‬االغالق‪...‬الخ‬
‫• يقوم بالتبديل بين التطبيقات التي قيد التشغيل‬
‫• يمكن المستخدم من اضافة القوائم ونشر التطبيقات‬

‫عبدهللا القحطاني‬
‫‪Desktop Environment‬‬
‫• بيئات سطح المكتب المشهورة هي ‪KDE, GNOME, Unity‬‬
‫• بيئة سطح المكتب تتكون من ‪Window manager +‬‬
‫‪tools‬‬
‫– األدوات األساسية مثل الحاسبة‪ ،‬األلعاب‪ ،‬المفكرة‬
‫– مدير الملفات ‪File manager‬‬
‫– أدوات سير العمل ‪ Workflow tools‬مثل اختصارات البرامج‬
‫والبحث في الجهاز‬

‫عبدهللا القحطاني‬
‫التطبيقات االنتاجية والمكتبية‬
‫‪Office/Productivity‬‬
‫• ‪ LibreOffice‬هو فرع من ‪OpenOffice‬‬
‫• يحتوي على معالج نصوص‪ ،‬جداول بيانات‪ ،‬عارض‬
‫شرائح‪ ،‬وأدوات رسم‬
‫• متوافق بشكل جيد مع مايكروسوفت اوفيس ‪Microsoft‬‬
‫‪ Office‬من حيث الشكل والتنسيق والمميزات‬

‫عبدهللا القحطاني‬
‫‪Web and Email‬‬
‫• جوجل كروم ‪ Chrome‬وفايرفوكس ‪ Firefox‬هما أشهر‬
‫متصفحان مفتوحان المصدر‬
‫– هذه المتصفحات تعمل من خالل منصات مشهورة ومتنوعة‬
‫وتحظى بدعم وتطوير ممتاز‬
‫• ‪ Thunderbird‬و ‪ Evolution‬و ‪ Kmail‬هم أشهر عمالء‬
‫بريد الكتروني‬
‫– جميعها تستخدم بروتوكول ‪ POP/IMAP‬السترجاع البريد‬
‫االلكتروني‬

‫عبدهللا القحطاني‬
‫أدوات وحدة التحكم‬
Console tools
‫ هي الطريقة األساسية للتفاعل والعمل مع نظام‬Shell ‫• الشل‬
‫التشغيل ومن أنواعه‬
Bourne shell family –
C shell family –
Other hybrid shells such as ksh and zsh –
Text editors ‫• محررات النصوص‬
Vi/vim –
Emacs –
Pico/nano –

‫عبدهللا القحطاني‬
‫أدوات التطوير‬
‫‪Development tools‬‬
‫• تصنف لغات البرمجة الى مجموعتين هما الترجمة‬
‫‪ Compiled‬أو التفسير ‪Interpreted‬‬
‫– ‪C, C++, Java are compiled‬‬
‫– ‪PHP, Perl, Ruby, Python are interpreted‬‬
‫• مقايضة انتاجية المبرمج مع موارد الجهاز‬
‫• حزم المكتبات المشتركة ‪library bundles common‬‬
‫تستخدم لتقليل حجم الكود الالزم كتابته‬

‫عبدهللا القحطاني‬
‫رخص البرامج مفتوحة المصدر‬

‫‪Open Source Licensing‬‬

‫عبدهللا القحطاني‬
‫أهداف االمتحان‬
‫‪ 1.3‬فهم البرامج مفتوحة المصدر وتراخيصها‬
‫• ملخص األهداف‬
‫– شرح رخص البرامج المتعددة وأوجه االختالف بينها‬
‫– معرفة المنظمات العاملة في مجال البرامج مفتوحة المصدر‬

‫عبدهللا القحطاني‬
‫رخص البرامج‬
‫‪Software Licenses‬‬
‫• مصمم ومنتج البرنامج هو الذي يملك حقوق المؤلف للبرنامج‬
‫(الحقوق الفكرية أو حقوق الملكية الفكرية)‬
‫• مصمم ومنتج البرنامج يمنح ترخيص البرنامج للناس لكي‬
‫يستخدموا البرنامج‬
‫• بعض الرخص تسلب الحقوق وبعضها تعطي الحقوق‬

‫عبدهللا القحطاني‬
‫مؤسسة البرمجيات الحرة‬
‫)‪Free Software Foundation (FSF‬‬
‫بدأت بواسطة ‪ Richard Stallman‬في عام ‪1985‬م‬ ‫•‬
‫أيضا تشغل مشروع جنو ‪ GNU‬الذي يزود كل من نظام‬ ‫•‬
‫لينكس وبيئات أنظمة يونكس باألدوات‬
‫رخص ‪ GPLv2‬و ‪ GPLv3‬تمكن المستخدم من تعديل‬ ‫•‬
‫البرامج وإعادة اصدارها‬
‫‪ Copyleft‬أو الحقوق المتروكة تجبر المستخدم من توفير‬ ‫•‬
‫ومشاركة كود المصدر للتغيرات التي تم انجازها‬

‫عبدهللا القحطاني‬
‫رخصة ‪GPL‬‬
‫‪GNU Public License‬‬
‫هي رخصة البرمجيات الحرة األكثر شعبية‬ ‫•‬
‫االصدارات المعدلة من البرامج التي تستخدم رخصة ‪GPL‬‬ ‫•‬
‫يجب أن تستخدم رخصة ‪GPL‬‬
‫‪ LGPL‬تسمح بربط المكتبات الغير مجانية برخصة ‪GPL‬‬ ‫•‬
‫‪ GPLv3‬تمنع ”‪“Tivoization‬‬ ‫•‬
‫– استخدام أجهزة خاصة يبطل أحكام رخصة ‪GPL‬‬
‫• المطور قد يتحمل بعض الرسوم الرمزية لتغطية تكاليف‬
‫التوزيعة‬
‫عبدهللا القحطاني‬
‫مبادرة المصدر المفتوح‬
‫‪Open Source Initiative‬‬
‫تأسست هذه المبادرة عام ‪1998‬م من قبل بروس بيرينز‬ ‫•‬
‫‪ Bruce Perens‬وإريك ريموند )‪Eric Raymond (ESR‬‬
‫بنود الحقوق المتروكة متساهلة نوعا ما‬ ‫•‬
‫‪ OSI‬ال يمنح تراخيص فقط يصادق عليها‬ ‫•‬
‫تراخيص ‪ FSF‬مصادق عليها من ‪ OSI‬ولكن العكس ليس‬ ‫•‬
‫ضروري‬

‫عبدهللا القحطاني‬
‫تراخيص البرامج الحرة المتساهلة‬
‫‪Permissive Free Software‬‬
‫• رخص ‪ OSI‬تفرض على المطور ان يكون كود المصدر‬
‫مفتوح‪ ،‬وأن يكون قابل للتعديل وقابل العادة التوزيع وأن‬
‫يسمح ألي شخص أن يستخدم البرنامج ألي غرض‬
‫• رخص ‪ BSD‬و ‪ MIT‬تسمح بأن يتم استخدم التوزيعة الجديدة‬
‫أو أن تأخذ البرامج المرخصة وإدراجها في منتجات‬
‫البرمجيات المغلقة طالما اعطيت اإلسناد الصحيح‬

‫عبدهللا القحطاني‬
‫‪FOSS/FLOSS‬‬
‫• ‪ FOSS‬هي برمجيات حرة مفتوحة المصدر ‪Free and‬‬
‫‪Open Source software‬‬
‫• ‪ FLOSS‬هي البرمجيات المجانية الحرة مفتوحة المصدر‬
‫‪Free/Libre/Open Source Software‬‬

‫عبدهللا القحطاني‬
‫البرامج الغير مرخصة‬
‫‪Non software licensing‬‬
‫• الفنون والمواد المكتوبة يمكن ان ترخص أيضا‬
‫• الملكية العامة ال تحافظ على قوانين حقوق الملكية الفكرية‬
‫• منظمة ‪ Creative Commons‬تملك العديد من الرخص‬
‫لتمكن العامة من استخدام البرامج تحت قيود محددة‬

‫عبدهللا القحطاني‬
‫‪Creative Commons‬‬
‫‪ Attribution‬يجب ابالغ المؤلف‬ ‫•‬
‫‪ Attribution ShareAlike‬تعتمد على الحقوق المتروكة‬ ‫•‬
‫‪ Attribution No-Derivs‬يمكن اعادة توزيع المحتوى لكن ال‬ ‫•‬
‫يمكن تغييره‬
‫‪ Attribution NonCommercial‬ال يستخدم في االغراض‬ ‫•‬
‫التجارية‬
‫يمكن دمج أكثر من رخصة مع بعضها البعض مثل‬ ‫•‬
‫‪Attribution-No-Derivs-NonCommercial‬‬
‫‪ No Rights Reserved‬ملكية عامة‬ ‫•‬

‫عبدهللا القحطاني‬
‫الحصول على المال من البرامج مفتوحة المصدر‬
‫‪Making money with Open Source‬‬
‫بيع الدعم ‪ Support‬والضمان ‪ warranty‬للبرمجيات‬ ‫•‬
‫فرض رسوم على خدمة ‪services‬‬ ‫•‬
‫العمل على الميزات في مقابل المال‬ ‫•‬
‫االستشارات‬ ‫•‬
‫اعطاء حزمة أجهزة ‪ package hardware‬أو إضافة‬ ‫•‬
‫برامج مغلقة المصدر ‪ closed source‬لبيعها جنبا إلى‬
‫جنب مع البرمجيات الحرة ‪free software‬‬

‫عبدهللا القحطاني‬
‫الوحدة الثالثة‬
‫استخدام ‪Linux‬‬

‫عبدهللا القحطاني‬
‫أهداف االمتحان‬
‫‪ 1.4‬مهارات تكنولوجيا المعلومات واالتصاالت والعمل‬
‫مع لينكس‬
‫• الحصول على مهارات سطح المكتب‬
‫• التعرف على موجه األوامر‬
‫• معرفة استخدامات اللينكس في الصناعة‪ ،‬الحوسبة السحابية‪،‬‬
‫والتقنية االفتراضية‬

‫عبدهللا القحطاني‬
‫العمل مع بيئة لينكس‬

‫‪Working with the Linux Environment‬‬

‫عبدهللا القحطاني‬
‫الواجهة الرسومية والغير رسومية‬
‫‪Graphical vs. Non-Graphical‬‬
‫• الواجهة الرسومية يمكن استخدامها لتشغيل الخوادم – لها‬
‫نوافذ – ولها قوائم‬
‫• الواجهة الغير رسومية هي واجهة نصية فقط وتركز على‬
‫الوصول للشل‬
‫• يمكن تشغيل أكثر من واجهة غير رسومية (‪ )Shells‬في‬
‫الواجهة الرسومية كل منها له النافذة الخاصة به‬

‫عبدهللا القحطاني‬
‫عبدهللا القحطاني‬
‫عبدهللا القحطاني‬
‫الوصول الى موجه األوامر‬
‫‪Getting to a terminal‬‬
‫• الوصول الى موجه األوامر يكون عن طريق ‪ xterm‬أو‬
‫‪terminal‬‬
‫– تمكن المستخدم من اجراء عملية البحث في النظام‬
‫– البحث ان مرافق النظام ”‪ “Utilities‬أو قوائم النظام‬
‫• يمكن فتح أكثر من محطة ‪ terminal‬للوصول الى سطر‬
‫األوامر مع بعضها البعض‬
‫• يمكن اجراء عمليات القص واللصق بين التطبيقات المختلفة‬
‫• الشل ‪ Shell‬هو وضع غير رسومي‬

‫عبدهللا القحطاني‬
‫العمل مع اللينكس‬
‫‪Working with Linux‬‬
‫• هناك الكثير من البرامج المتاحة النجاز العمل والقيام به مع‬
‫لينكس‬
‫– ‪ LibreOffice‬يوفر معالج نصوص – جداول بيانات – حزم‬
‫عارض شرائح والمتوافقة مع تطبيقات مايكروسوفت‬
‫– اتصفح مواقع الويب هناك ‪ Firefox‬و ‪Chromium‬‬
‫– التوزيعة أو بيئة سطح المكتب توفر أدوات للبريد االلكتروني كما‬
‫توفر بعض التطبيقات مثل الحاسبة والمفكرة‬

‫عبدهللا القحطاني‬
‫أساسيات األمان في لينكس‬

‫‪Linux Security Basics‬‬

‫عبدهللا القحطاني‬
‫البقاء آمن‬
‫‪Keeping Safe‬‬
‫• المحفوظات او ملفات تعريف االرتباط ‪ Cookies‬هي رموز‬
‫صغيرة ترسل من قبل خادم الويب تخزن بالجهاز ومن ثم‬
‫يقوم متصفحك بإرسالها إلى الموقع األصلي مع كل طلب‬
‫• ملفات تعريف االرتباط هي أكبر منتهكي الخصوصية‬
‫– يستطيع المستخدم تعطيل ملفات تعريف االرتباط تماما‬
‫– أو يستطيع القضاء عليها في نهاية الجلسة‬
‫– تعطيل المحفوظات او ملفات تعريف االرتباط ‪ Cookies‬من‬
‫طرف ثالث‬

‫عبدهللا القحطاني‬
‫كلمات المرور‬
‫‪Passwords‬‬
‫• استخدم كلمات مرور فريدة وقوية في كل البرامج والمواقع‬
‫• برنامج مثل ‪ KeePassX‬يحفظ كلمات المرور الخاصة‬
‫بالمستخدم لذلك ال يحتاج لتذكرها ألكثر من مرة‬
‫• كلمات المرور القوية تكون عشوائية‬
‫– مكونة من ‪ 10‬خانات أو أكثر‬
‫– خليط بين الحروف الكبيرة والصغيرة‬
‫– تحتوي على رموز‬

‫عبدهللا القحطاني‬
‫حماية جهاز الحاسب‬
‫‪Protecting your computer‬‬
‫• استخدام جدار الحماية ‪firewall‬‬
‫– استخدام السياسة االفتراضية ‪ default policy‬يكون فعال جدا‬
‫وهي ”‪“deny incoming; allow outgoing‬‬
‫– ‪ Iptables‬هي مدمجة في نظام جدار الحماية لينكس‬
‫• مواكبة التحديثات‬
‫– التوزيعة يجب أن تكون قادرة على البحث عن التطويرات وتثبيتها‬
‫– التحديثات تصلح مشاكل األمان‬
‫– تحقق دائما من الجهاز أو اجعل الجهاز يقوم بذلك عنك‬

‫عبدهللا القحطاني‬
‫الوحدة الرابعة‬
‫مهارات سطر األوامر‬
‫‪Command Line Skills‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 2.1‬أساسيات استخدام سطر أوامر لينكس‬
‫• ملخص األهداف‬
‫– فهم أساسيات الشل ‪Shell‬‬
‫– فهم طريقة تنسيق األوامر والخيارات‬
‫– معرفة تأثيرات استخدام المتغيرات – أحرف ‪ – Glob‬عالمات‬
‫االقتباس على األوامر‬

‫عبدهللا القحطاني‬
‫سطر األوامر أو الشل الرئيسي‬

‫‪CLI or Basic Shell‬‬

‫عبدهللا القحطاني‬
‫واجهة سطر األوامر‬
‫‪The Command Line Interface‬‬
‫• واجهة نصية‬
‫• الوصول لها من خالل المحطة ‪Terminal‬‬
‫– ‪GUI-based terminals‬‬
‫– ‪Virtual terminals‬‬
‫• األوامر تمرر الى الشل‬
‫• موجه الشل أو المحث‬
‫– ]‪Shell prompt [sysadmin@localhost:~$‬‬

‫عبدهللا القحطاني‬
‫مواصفات الشل‬
‫‪Shell Features‬‬
‫األمر ‪ – history‬المقدرة على استرجاع األوامر السابقة‬ ‫•‬
‫بشكل سريع‬
‫‪ – Scripting‬انشاء برنامج بواسطة وضع أوامر الشل في‬ ‫•‬
‫ملف لكي يتم تنفيذه‬
‫أمر ‪ – Alias‬يستخدم لخلق اختصارات لألوامر الطويلة‬ ‫•‬
‫المتغيرات – تخزن المعلومات التي يمكن استخدامها لتعديل‬ ‫•‬
‫عمل الشل أو األوامر‬

‫عبدهللا القحطاني‬
‫فهم بناء األوامر‬

Understanding Command Structure

‫عبدهللا القحطاني‬
‫تصميم األوامر‬
‫‪Command format‬‬
‫• الشكل الرئيسي‬
‫– ]‪command [options] [arguments‬‬
‫• الخيارات ‪ Options‬تغير سلوك وتنفيذ األمر‬
‫• ‪ Arguments‬تستخدم لتوفير معلومات اضافية لألمر مثل‬
‫اسم الملف أو اسم المستخدم‬
‫– مثال ‪ls /etc/ppp‬‬

‫عبدهللا القحطاني‬
‫خيارات األمر‬
‫‪Command options‬‬
‫• تختلف بناء على األوامر‬
‫• الطريقة القديمة لكتابة الخيار ‪ option‬هي ‪–a‬‬
‫– يمكن جمع الخيارات مع بعضها‬
‫• ‪Can be combined: -abc = -a -b -c‬‬
‫• الشكل الجديد لكتابة الخيارات المصمم من قبل ‪ GNU‬هو‬
‫– ‪--all‬‬

‫عبدهللا القحطاني‬
‫األمر ‪History‬‬
‫‪Command History‬‬
‫لعرض األوامر السابقة نستخدم األمر ‪history‬‬ ‫•‬
‫السترجاع األوامر السابقة نستخدم ‪↑ up arrow‬‬ ‫•‬
‫‪←left arrow‬‬ ‫لتعديل أوامر سابقة نستخدم‬ ‫•‬
‫‪→ right arrow‬‬
‫لتنفيذ األمر السابق من جديد نستخدم األمر >‪!<num‬‬ ‫•‬

‫عبدهللا القحطاني‬
‫األمر ‪History‬‬
‫• بعض األمثلة االضافية على االمر ‪history‬‬
‫المعنى‬ ‫المثال‬
‫يعرض اخر خمس أوامر من قائمة‬
‫‪history 5‬‬
‫األوامر‬
‫ينفذ آخر أمر مرة أخرى‬ ‫!!‬
‫ينفذ األمر الخامس من األسفل في‬
‫‪!-5‬‬
‫قائمة األوامر‬
‫ينفذ آخر أمر من أوامر ‪ls‬‬ ‫‪!ls‬‬

‫عبدهللا القحطاني‬
‫المتغيرات‬

‫‪Variables‬‬

‫عبدهللا القحطاني‬
‫متغيرات الشل‬
‫‪Shell Variables‬‬
‫• تستخدم لتخزين معلومات النظام‬
‫• الستعراض قيمة المتغيرات نستخدم األمر ‪echo‬‬
‫– ‪echo $HISTSIZE‬‬
‫• لتعديل القيم ‪HISTSIZE = 500‬‬
‫• هذا التغيير مؤقت‬
‫• للحصول على تغيير دائم يجب عمل التغيير داخل ملف‬
‫‪~/.bashrc‬‬

‫عبدهللا القحطاني‬
‫المتغير ‪PATH‬‬
‫‪PATH Variable‬‬
‫• يستخدم هذا المتغير للعثور على اماكن األوامر التي تنفذ منها‬
‫• إذا تم تثبيت برامج مخصصة على النظام الخاص بك‪ ،‬قد‬
‫تحتاج إلى تعديل ‪ PATH‬لتسهيل تنفيذ هذه األوامر‬
‫• على سبيل المثال‪:‬‬

‫عبدهللا القحطاني‬
‫األمر ‪Export‬‬
‫‪export Command‬‬
‫• يوجد نوعان من المتغيرات في الباش شل ‪ BASH Shell‬هما‬
‫– متغيرات محلية ‪Local‬‬
‫– متغيرات بيئية ‪environment‬‬
‫• المتغيرات البيئية مثل ‪ PATH‬و ‪ HOME‬تستخدم عندما‬
‫يرغب ‪ BASH‬بمقاطعة تنفيذ األوامر وتنفيذ بعض المهام‬
‫• المتغيرات المحلية تستخدم عادة من قبل المستخدم ألداء‬
‫بعض المهام وعادة تكتب بالحروف الصغيرة‬

‫عبدهللا القحطاني‬
‫• لصنع متغير محلي نقوم بما يلي‬
‫‘‪– sysadmin@localhost:~$ variable1='Something‬‬
‫• لعرض قيمة المتغير المحلي نقوم بالتالي‬
‫‪– sysadmin@localhost:~$ echo $variable1 Something‬‬
‫• لعرض المتغيرات البيئية نستخدم األمر ‪env‬‬
‫• لتحويل المتغير المحلي الى متغير بيئي نستخدم األمر ‪export‬‬
‫• يمكن استخدام األمر ‪ export‬أيضا لصنع متغير بيئي جديد مثل‬
‫'‪– sysadmin@localhost:~$ export variable2='Else‬‬

‫عبدهللا القحطاني‬
which ‫أمر‬
which Command
‫ يقوم بالبحث عن المكان الذي توجد به األوامر‬which ‫• أمر‬
PATH ‫وذلك عن طريق البحث في المتغير‬
– sysadmin@localhost:~$ which date
/bin/date
– sysadmin@localhost:~$ which cal
/usr/bin/cal

‫عبدهللا القحطاني‬
type ‫أمر‬
‫ للحصول على معلومات عن األوامر‬type ‫• يستخدم األمر‬
– sysadmin@localhost:~$ type which
which is hashed (/usr/bin/which)
‫ أو‬BASH ‫• يستخدم أيضا لتحديد األوامر التي تم بناؤها داخل‬
‫في شل آخر‬
– sysadmin@localhost:~$ type echo
echo is a shell builtin

‫عبدهللا القحطاني‬
‫‪Aliases‬‬
‫• تستخدم لعمل اختصارات لألوامر الطويلة‬
‫• لعرض األوامر المختصرة نستخدم األمر ‪alias‬‬
‫• إلنشاء وصناعة أمر مختصر نستخدم الصيغة التالية‬
‫– ‪alias name=command‬‬
‫• االختصار الذي تم انشاؤه هو تغيير مؤقت‬
‫• ليكون تغيير دائم يتم انشاء أمر ‪ alias‬داخل ملف‬
‫‪~/.bashrc‬‬

‫عبدهللا القحطاني‬
‫ يمكن ان نحصل على مسار‬type ‫– لألمر‬a ‫• بإضافة الخيار‬
‫األمر‬
– sysadmin@localhost:~$ type -a echo
echo is a shell builtin
echo is /bin/echo
aliases ‫• يستخدم أيضا لتحديد أوامر التي عمل لها‬
– sysadmin@localhost:~$ type ll
ll is aliased to `ls -alF'
– sysadmin@localhost:~$ type ls
ls is aliased to `ls --color=auto'

‫عبدهللا القحطاني‬
‫هيكلية األوامر االضافية‬

‫‪Additional Command Structure‬‬

‫عبدهللا القحطاني‬
‫‪Globbing‬‬
‫• تستخدم أحرف ‪ Glob‬لمطابقة مجموعة من الملفات موجودة‬
‫في نفس الدليل‬
‫• * يستخدم لمطابقة صفر أو أكثر من األحرف في اسم الملف‬
‫*‪– sysadmin@localhost:~$ echo /etc/t‬‬
‫‪/etc/terminfo /etc/timezone‬‬
‫• ? تستخدم لتطابق تماما حرف واحد‪.‬‬
‫???????‪– sysadmin@localhost:~$ echo /etc/t‬‬
‫‪/etc/terminfo /etc/timezone‬‬

‫عبدهللا القحطاني‬
‫• ] [ تستخدم لمطابقة قائمة أو مجموعة من الحروف بشكل‬
‫تام‬
– sysadmin@localhost:~$ echo /etc/[gu]*
/etc/gai.conf /etc/groff /etc/group /etc/group-
/etc/gshadow /etc/gshadow- /etc/ucf.conf
/etc/udev /etc/ufw /etc/update-motd.d
/etc/updatedb.conf
‫• ! تستخدم مع األقواس الستثناء عرض الملفات التي بعدها‬
– echo [!DP]*

‫عبدهللا القحطاني‬
‫التنصيص‬
‫‪Quoting‬‬
‫• ‪ “ ” Double quotes‬تستخدم لتعطيل معنى بعض‬
‫الحروف مثل أحرف ‪Glob‬‬
‫• ‪ ‘ ’ Single quotes‬تستخدم لتعطيل معنى كل الحروف‬
‫– يمكن استخدام \ لتعطيل الحروف التي تليها فقط‬
‫• ‪ ` Backquotes‬تستخدم للسماح لألمر بان ينفذ ضمن سطر‬
‫أمر آخر‬
‫`‪– sysadmin@localhost:~$ echo Today is `date‬‬
‫‪Today is Mon Nov 2 03:40:04 UTC 2015‬‬

‫عبدهللا القحطاني‬
‫جمل التحكم‬
‫‪Control Statements‬‬
‫• الفاصلة المنقوطة ; تستخدم لفصل األوامر عن بعضها‬
‫البعض في سطر األوامر‬
‫• األحرف && تستخدم لتنفيذ األمر الثاني اذا تم تنفيذ األمر‬
‫األول بنجاح‬
‫• الحرف || تستخدم لتنفيذ األمر الثاني اذا لم يتم تنفيذ األمر‬
‫األول ولكن اذا نفذ األمر األول بنجاح فان األمر الثاني ال‬
‫ينفذ‬

‫عبدهللا القحطاني‬
‫الوحدة الخامسة‬
‫الحصول على المساعدة‬
‫‪Getting Help‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 2.2‬استخدام سطر األوامر للحصول على المساعدة‬
‫• ملخص األهداف‬
‫– االستفادة من أمر ‪ man‬وأمر ‪ info‬للحصول على مزيد من‬
‫المعلومات‬

‫عبدهللا القحطاني‬
man ‫مقدمة ألمر‬

Introduction to the man command

‫عبدهللا القحطاني‬
‫صفحات ‪man‬‬
‫‪man pages‬‬
‫الممارسة تصنع الكمال!‬ ‫• صفحات الدليل ‪ man‬عادة‬
‫متوفرة لكل من األوامر مثلما يتم التدرب على األوامر فإن‬
‫التدرب على قراءة صفحات الدليل‬ ‫والعمليات والملفات‬
‫‪ man‬يساعد المتدرب ليصبح‬
‫مستخدم ذو مقدرة عالية‬
‫متوفرة‬ ‫• صفحات ‪man‬‬
‫على النظام المحلي‬

‫عبدهللا القحطاني‬
‫عرض صفحات ‪man‬‬
‫‪Viewing man pages‬‬
‫• لعرض صفحات ‪ man‬أوال يجب الدخول على المحطة أو‬
‫الشل ثم كتابة ‪ man command‬أو ‪man file‬‬

‫عبدهللا القحطاني‬
‫التحكم في اظهار صفحات ‪man‬‬
‫‪Controlling the man page display‬‬
‫• صفحات ‪ man‬سوف يتم اظهارها من قبل برنامج ‪ pager‬سواء كان‬
‫النوع ‪ less‬أو النوع ‪( more‬عادة يكون ‪) less‬‬
‫• كال النوعين يستخدم ‪ h‬لعرض المساعدة‪ ،‬المسافة للتقدم لألمام‪ / ،‬لبدأ‬
‫البحث و ‪ q‬للخروج من الصفحة‬
‫• أوامر التحرك الخاصة بالنوع ‪less‬‬
‫األمر‬ ‫الوظيفة‬ ‫األمر‬ ‫الوظيفة‬
‫الذهاب الى بداية‬
‫)‪Return (or Enter‬‬ ‫التحرك سطر لألسفل‬ ‫‪1G‬‬
‫الصفحة‬
‫الذهاب الى نهاية‬
‫‪Space‬‬ ‫التحرك صفحة الى األسفل‬ ‫‪G‬‬
‫الصفحة‬
‫‪/‬‬ ‫البحث‬ ‫‪h‬‬ ‫عرض صفحة المساعدة‬
‫الخروج من صفحة‬
‫‪n‬‬ ‫ايجاد عنصر البحث القادم‬ ‫‪q‬‬
‫‪man‬‬

‫عبدهللا القحطاني‬
‫أقسام صفحات الدليل ‪man‬‬
‫‪Man page sections‬‬
‫• لكلمة أقسام ‪ sections‬معنيان مهمان في صفحات ‪man‬‬
‫– كل صفحة ‪ man‬توزع تحت عناوين أقسام مختلفة مثل ‪NAME,‬‬
‫‪SYNOPSIS and DESCRIPTION.‬‬
‫– كل صفحة ‪ man‬يتم تصنيفها الى تصنيف معين ومحدد مثل‬
‫• أوامر المستخدم ‪user commands‬‬
‫• أشكال الملفات ‪file formats‬‬
‫• ادارة النظام ‪system administration‬‬

‫عبدهللا القحطاني‬
‫األقسام المشتركة لصفحات الدليل ‪man‬‬
‫‪Common sections of a man page‬‬
‫الغرض‬ ‫‪Section name‬‬ ‫اسم القسم‬
‫يوضح اسم األمر ووصف مختصر جدا له‬ ‫‪NAME‬‬ ‫االسم‬
‫يشرح كيف سيتم تنفيذ األمر‬ ‫‪SYNOPSIS‬‬ ‫الصيغة أو الموجز‬
‫يوفر معلومات تفصيلية عن األمر‬ ‫‪DESCRIPTION‬‬ ‫الوصف‬
‫يسرد خيارات األمر مع وصف لطريقة استخدامها‬ ‫‪OPTIONS‬‬ ‫الخيارات‬
‫يسرد قائمة الملفات التي لها عالقة باألمر ويعرض وصف‬ ‫‪FILES‬‬ ‫الملفات‬
‫لكل ملف مثل ملفات التهيئة لهذا األمر‬
‫يعرض اسم الشخص الذي قام بإنشاء هذه الصفحة من دليل‬ ‫‪AUTHOR‬‬ ‫المؤلف‬
‫‪ man‬وكيف يتم التواصل معه‬
‫‪ REPORTING BUGS‬يوفر الطريقة لتقديم التقرير عن األخطاء التي تواجه مستخدم‬ ‫تقرير األخطاء‬
‫األمر‬
‫يوفر المعلومات الرئيسة لحقوق الملكية‬ ‫‪COPYRIGHT‬‬ ‫حقوق الملكية‬
‫يوفر المراجع والمعلومات االضافية عن هذا األمر‬ ‫‪SEE ALSO‬‬ ‫أنظر أيضا‬

‫عبدهللا القحطاني‬
‫‪Man pages SYNOPSIS‬‬
‫الصيغة أو الموجز ‪ SYNOPSIS‬هو أحد أهم األقسام في‬ ‫•‬
‫صفحة دليل ‪man‬‬
‫‪ SYNOPSIS‬يوفر وصف موجز لطريقة استخدام األمر‬ ‫•‬
‫األقواس المربعة مثل ]‪ [and‬تستخدم لإلشارة الى عناصر‬ ‫•‬
‫مختارة‬
‫الشريط العامودي )|( يشير الى أو ‪or‬‬ ‫•‬
‫عالمة (‪ )...‬تشير الى واحد أو أكثر‬ ‫•‬

‫عبدهللا القحطاني‬
‫البحث في صفحات الدليل ‪man‬‬
‫‪Searching within a man page‬‬
‫لبدأ البحث في صفحة الدليل ‪ man‬نستخدم الرمز ‪/‬‬ ‫•‬
‫نتبعها بالكلمة التي نريد البحث عنها‬ ‫•‬
‫نضغط ‪ enter‬لعرض أول كلمة مطابقة‬ ‫•‬
‫نضغط الحرف ‪ n‬لالنتقال للكلمة المطابقة التي تليها‬ ‫•‬
‫نضغط الحرف ‪ N‬لالنتقال للكلمة المطابقة السابقة‬ ‫•‬

‫عبدهللا القحطاني‬
‫األقسام واألقسام‬

‫‪Sections and Sections‬‬

‫عبدهللا القحطاني‬
‫ لألقسام‬man ‫تصنيف صفحات‬
man Pages Categorized by Sections
‫ أصناف رئيسة وهي‬9 ‫ هناك‬.‫ تصنف الى أصناف محددة‬man ‫• صفحات‬
‫التصنيف‬ ‫الرقم‬
Executable programs or shell commands ‫برامج قابلة للتنفيذ أو أوامر الشل‬ 1
System calls (functions provided by the kernel) )‫استدعاءات النظام (وظائف النواة‬ 2
Library calls (functions within program libraries) )‫استدعاءات المكتبة )وظائف مكتبة البرامج‬ 3
Special files (usually found in /dev) )/dev ‫ملفات خاصة (عادة توجد في‬ 4
File formats and conventions, e.g. /etc/passwd /etc/passwd ‫صيغ واتفاقيات الملف كمثال‬ 5
Games ‫األلعاب‬ 6
Miscellaneous (including macro packages and
‫متفرقات‬ 7
conventions), e.g. man(7), groff(7)
System administration commands (usually only
‫أوامر إدارة النظام‬ 8
for root)
Kernel routines [Non standard] )‫روتين النواة (غير القياسية‬ 9

‫عبدهللا القحطاني‬
‫تحديد أي قسم‬
‫‪Determining which section‬‬
‫• رقم القسم في الدليل يكون موجود بين قوسين بجانب األمر‬
‫عند استعراض صفحة دليل ‪man‬‬

‫عبدهللا القحطاني‬
‫البحث عن األقسام‬
‫‪Searching the sections‬‬
‫• للحصول على صفحات الدليل ‪ man‬التي يكون لها نفس‬
‫االسم نستخدم الخيار ‪ –f‬مع أمر ‪man‬‬
‫• األمر ‪ whatis‬مشابه لألمر ‪man –f‬‬

‫عبدهللا القحطاني‬
‫‪Searching man pages by keyword‬‬
‫• أمر ‪ man‬يملك الخيار ‪ –k‬الذي يمكنه من استخدام الكلمات‬
‫الرئيسة كمصادر للبحث‬
‫• تنفيذ األمر )‪ man –k (keyword‬سوف يبحث في‬
‫كل أقسام الوصف ‪ descriptions‬الخاصة بصفحات الدليل‬
‫‪ man‬عن الكلمات الرئيسة المطلوبة‬
‫• األمر ‪ apropos‬مشابه لألمر ‪man –k‬‬

‫عبدهللا القحطاني‬
‫تحديد القسم‬
‫‪Specifying a section‬‬
‫• اذا كان األمر أو الملف موجود في أكثر من قسم من أقسام‬
‫دليل ‪ man‬فإنه من الضروري تحديد قسم الدليل الصحيح‬
‫لعرض األمر أو الملف المناسب‬
‫• كمثال‪ passwd ،‬موجود في القسم رقم ‪ 1‬والقسم رقم ‪5‬‬
‫لعرض كال صفحات الدليل ‪ man‬الخاصة بكلمة ‪passwd‬‬
‫نستخدم األوامر التالية‬
‫– ‪man 1 passwd‬‬
‫– ‪man 5 passwd‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪info‬‬

‫‪Using the info command‬‬

‫عبدهللا القحطاني‬
‫األمر ‪info‬‬
‫• األمر ‪ info‬يوفر الوثائق الخاصة باألوامر والملفات مثل‬
‫األمر ‪man‬‬
‫• وثائق ‪ info‬منظمة داخل مستويات مختلفة‪ ،‬كل واحدة منها‬
‫قد تحتوي على واحدة أو أكثر من أصغر وحدة تنظيمية‬
‫والتي تسمى ‪node‬‬
‫• األمر ‪ info‬سيقوم بعرض صفحات الدليل ‪ man‬عندما ال‬
‫توجد صفحات المعلومات ‪info‬‬

‫عبدهللا القحطاني‬
Displaying info documentation for a
command
‫ الخاصة بأمر ما نستخدم األمر‬info ‫• لعرض وثائق‬
info command –

‫عبدهللا القحطاني‬
‫‪Moving around while viewing an info‬‬
‫‪document‬‬
‫• الجدول التالي يشرح أكثر المفاتيح استخداما للتنقل خالل‬
‫وثائق ‪info‬‬
‫الوظيفة‬ ‫األمر‬ ‫الوظيفة‬ ‫األمر‬
‫االنتقال الى الرابط التشعبي التالي‬ ‫‪TAB‬‬ ‫‪ Down arrow‬االنتقال لألسفل سطر واحد‬

‫الذهاب لبداية الصفحة‬ ‫‪HOME‬‬ ‫االنتقال صفحة الى األسفل‬ ‫‪Space‬‬

‫الذهاب الى النهاية‬ ‫‪END‬‬ ‫البحث في الصفحة عن كلمة‬ ‫‪S‬‬

‫عرض المساعدة‬ ‫‪h‬‬ ‫االنتقال الى العقدة السابقة‬ ‫[‬

‫الخروج من صفحة المساعدة‬ ‫‪L‬‬ ‫االنتقال الى العقدة التالية‬ ‫]‬

‫للخروج من األمر ‪info‬‬ ‫‪q‬‬ ‫االنتقال الى مستوى أعلى‬ ‫‪u‬‬

‫عبدهللا القحطاني‬
‫استكشاف وثائق ‪info‬‬
‫‪Exploring info documentation‬‬
‫• على عكس صفحات الدليل ‪ man‬التي أحيانا ليس من السهل‬
‫قراءتها‪ ،‬صفحات المعلومات ‪ info‬صممت للقراءة من قبل‬
‫عامة الناس‬
‫• يعتبر تنفيذ األمر ‪ info‬هو المدخل لتصفح وثائق ‪info‬‬
‫المتاحة‬
‫• األمر ‪ pinfo‬هو نسخة مطورة وملونة وسهلة االستخدام‬
‫من األمر ‪info‬‬

‫عبدهللا القحطاني‬
‫الحصول على مساعدة اضافية‬

‫‪Getting Additional Help‬‬

‫عبدهللا القحطاني‬
‫مصادر اضافية للمساعدة‬
‫‪Additional sources of help‬‬
‫• خيار ‪ GNU‬القياسي للوثائق هو ‪ --help‬والذي يستخدم‬
‫لعرض استخدامات األمر األساسية والتي تشبه صفحات‬
‫الدليل ‪man‬‬
‫• البرنامج عادة يأتي مع حزم وثائق اضافية والتي يمكن ايجاده‬
‫داخل المراجع‬
‫– ‪/usr/doc‬‬
‫– ‪/usr/share/doc‬‬
‫• هذه المراجع الفرعية عادة تحتوي على ملفات قراءة‬
‫‪ README‬ووثائق اضافية اخرى‬

‫عبدهللا القحطاني‬
‫ايجاد الوثائق واألوامر‬
‫‪Finding commands and documentation‬‬
‫• األمر ‪ whereis‬يستخدم لعرض موقع األوامر القابلة‬
‫للتنفيذ باإلضافة الى مصادرها ووثائقها اذا كانت موجودة‬

‫عبدهللا القحطاني‬
‫ايجاد أي ملف أو مرجع‬
‫‪Find any file or directory‬‬
‫• األمر ‪ locate‬له المقدرة على ايجاد أي ملف طالما‬
‫المستخدم يملك االذن والصالحية للوصول الى المراجع التي‬
‫تحويها وذلك بالبحث في قاعدة البيانات عن أسماء الملفات‬
‫في النظام‬
‫• يتم جدولة األمر ‪ updatedb‬ليقوم بتحديث قاعدة بيانات‬
‫المحددة يوميا‪ ،‬ولكن مدير النظام ‪ root‬هو الذي يقوم بتنفيذ‬
‫األمر ‪ updatedb‬مباشرة ليقوم بتحديث قاعدة البيانات‬
‫المحددة‬

‫عبدهللا القحطاني‬
‫األمر ‪locate‬‬
‫‪The locate command‬‬
‫• األمر ‪ locate‬سوف يطابق أي جزأ من اسم الملف لذلك‬
‫األمر ‪ locate readme‬ممكن ان يطابق الملف‬
‫المسمى ‪abcreadme123‬‬
‫• الخيار ‪ –b‬مع األمر ‪ locate‬يمكن من البحث عن‬
‫‪basename‬‬
‫– ‪locate -b readme‬‬
‫• الخيار ‪ –c‬يوفر عدد الملفات التي تم مطابقتها‬
‫– ‪locate -c readme‬‬

‫عبدهللا القحطاني‬
‫الوحدة السادسة‬
‫العمل مع الملفات واألدلة‬
‫‪Working with Files and Directories‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 2.3‬استخدام األدلة وسرد الملفات‬
‫• ملخص األهداف‬
‫– فهم الملفات واألدلة الظاهرة والمخفية‬
‫– الدليل الرئيسي‬
‫– استخدام المسارات المطلقة والنسبية بشكل صحيح‬

‫عبدهللا القحطاني‬
‫فهم األدلة‬

Understanding Directories

‫عبدهللا القحطاني‬
‫الملفات واألدلة‬
‫‪Files and Directories‬‬
‫الملفات تحتوي على البيانات (نصية – رسومية ‪...‬الخ)‬ ‫•‬
‫األدلة تخزن أسماء الملفات‬ ‫•‬
‫الدليل األعلى مستوى هو ‪)AKA, root directory( /‬‬ ‫•‬
‫مثال على هيكلية األدلة‬ ‫•‬

‫عبدهللا القحطاني‬
‫مسار الدليل‬
‫‪Directory path‬‬
‫• هو االتجاهات الى دليل أو ملف‬
‫محدد‬
‫• المسارات المطلقة ‪absolute‬‬
‫هي االتجاهات التي تنطلق من‬
‫الدليل ‪/‬‬
‫• المسارات النسبية ‪relative‬‬
‫هي االتجاهات التي تنطلق من‬
‫الدليل الحالي‬

‫عبدهللا القحطاني‬
‫الدليل الرئيسي‬
‫‪The home directory‬‬
‫• كل مستخدم يملك دليل رئيسي ‪home directory‬‬
‫• الدليل ‪ /home/bob‬هو الدليل الرئيسي لمستخدم اسمه‬
‫‪bob‬‬
‫• تم وضع الدليل الرئيسي لتخزين ملفات المستخدم الخاصة به‬
‫• عادة ال يمكن للمستخدمين الوصول إلى الدليل الرئيسي‬
‫الخاص بالمستخدمين اآلخرين‬
‫• الحرف ~ يرمز للدليل الرئيسي‬

‫عبدهللا القحطاني‬
‫الدليل الحالي‬
‫‪The current directory‬‬
‫• هو الدليل الذي يكون مؤشر الشل ‪ Shell‬موجود فيه حاليا‬
‫• ممكن ان يتم عرض الدليل الحالي باألمر ‪pwd‬‬
‫• يظهر الدليل الحالي أيضا في المحث الخاص بالشل ‪Shell‬‬

‫عبدهللا القحطاني‬
‫تغيير األدلة‬
‫‪Changing directories‬‬
‫تغيير األدلة تعني االنتقال من دليل الى آخر‬ ‫•‬
‫نستخدم األمر ‪ cd‬لتغيير األدلة‬ ‫•‬
‫بدون ‪ arguments‬يقوم األمر ‪ cd‬بنقل المستخدم الى‬ ‫•‬
‫الدليل الرئيسي الخاص به‬
‫يرمز للدليل الرئيسي الخاص بالمستخدم ‪ bob‬بالرمز‬ ‫•‬
‫‪~bob‬‬

‫عبدهللا القحطاني‬
‫المسارات المطلقة والنسبية‬
‫‪Absolute vs relative pathnames‬‬
‫• المسارات المطلقة ‪ absolute‬توفر االتجاهات من الدليل‬
‫)‪root (/‬‬
‫• المسارات النسبية ‪ relative‬دائما توفر االتجاهات من الدليل‬
‫الحالي ‪current directory‬‬
‫• للتراجع إلى دليل واحد أعلى من الدليل الحالي نستخدم الرمز‬
‫‪ ..‬مع األمر ‪cd‬‬
‫– ‪cd ..‬‬
‫• للتراجع إلى دليل الحالي نستخدم الرمز ‪ .‬مع األمر ‪cd‬‬
‫– ‪cd .‬‬

‫عبدهللا القحطاني‬
‫التعامل مع الملفات‬

‫‪Manipulating Files‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 2.4‬انشاء‪ ،‬نقل‪ ،‬وحذف الملفات‬
‫• ملخص األهداف‬
‫– الحساسية لحالة األحرف‬
‫– تبسيط أحرف ‪ glob‬وعالمات التنصيص‬

‫عبدهللا القحطاني‬
‫استعراض الملفات داخل األدلة‬
‫‪Listing files in a directory‬‬
‫• لعرض الملفات نستخدم األمر ‪ls‬‬
‫• هناك عدة أنواع من الملفات وهي‬
‫الوصف‬ ‫النوع‬
‫هو الملف الذي ليس ملف من نوع خاص‬ ‫‪plain file‬‬ ‫ملف عادي‬
‫هو الذي يحتوي على ملفات‬ ‫‪Directory‬‬ ‫ملف دليل‬
‫هو الذي يمكن تشغيله كبرنامج‬ ‫‪executable‬‬ ‫ملف تنفيذي‬
‫هو الذي يقوم بالتأشير لملف آخر‬ ‫‪symbolic link‬‬ ‫ملف ربط‬

‫• لعرض أسماء الملفات باأللوان نستخدم الخيار ‪ --color‬مع‬


‫األمر ‪ls‬‬
‫عبدهللا القحطاني‬
‫خيارات األمر ‪ ls‬الشائعة‬
‫‪Common ls options‬‬
‫• هناك العديد من الخيارات التي يمكن استخدامها مع األمر ‪ls‬‬
‫من ضمنها‪:‬‬
‫الغرض‬ ‫الخيار‬
‫عرض جميع الملفات بما فيها الملفات المخفية‬ ‫‪-a‬‬
‫سرد المخرجات بصيغة ‪long‬‬ ‫‪-l‬‬
‫عرض حجم الملفات بطريقة مقروءة للبشر‬ ‫‪-h‬‬
‫سرد الملفات بشكل عكسي‬ ‫‪-r‬‬
‫ترتيب المخرجات بناء على حجم الملفات‬ ‫‪-S‬‬
‫ترتيب المخرجات بناء على وقت التعديل‬ ‫‪-t‬‬
‫ال تعرض محتويات المجلد‬ ‫‪-d‬‬

‫عبدهللا القحطاني‬
‫نسخ الملفات‬
‫‪Copying files‬‬
‫• يستخدم األمر ‪ cp‬لنسخ الملفات‬
‫– ]‪cp [options] [source] [destination‬‬

‫الغرض‬ ‫الخيار‬

‫يستخدم لعرض مراحل النسخ‬ ‫‪-v‬‬

‫يستخدم لالستبدال السريع للملفات‬ ‫‪-i‬‬

‫لتجنب استبدال الملفات ‪overwrites‬‬ ‫‪-n‬‬

‫لنسخ بنية الدليل‬ ‫‪-r‬‬

‫عبدهللا القحطاني‬
‫انشاء الملفات‬
‫‪Creating files‬‬
‫• محررات النصوص ممكن استخدامها النشاء الملفات‬
‫• يستخدم األمر ‪ touch‬إلنشاء الملفات الفارغة‬
‫• األمر ‪ touch‬أيضا يقوم بتحديث وقت التعديل للمفات‬

‫عبدهللا القحطاني‬
‫حذف الملفات‬
‫‪Removing files‬‬
‫• األمر ‪ rm‬يستخدم لحذف الملفات‬
‫• حذف الملفات يكون بشكل دائم‬
‫• يستخدم الخيار ‪ –i‬لتجنب حذف الملفات عرضيا عند‬
‫استخدام احرف ‪globs‬‬
‫• لحذف األدلة نستخدم احدى الطرق التالية‬
‫– استخدام الخيار ‪ –r‬مع األمر ‪rm‬‬
‫– استخدام األمر ‪rmdir‬‬

‫عبدهللا القحطاني‬
‫نقل الملفات‬
‫‪Moving files‬‬
‫• يستخدم األمر ‪ mv‬لنقل الملفات‬
‫– ]‪mv [options] [source] [destination‬‬
‫• يستخدم األمر ‪ mv‬أيضا إلعادة تسمية الملفات‬
‫الغرض‬ ‫الخيار‬
‫يستخدم لعرض مراحل النقل‬ ‫‪-v‬‬
‫يستخدم لالستبدال السريع للملفات‬ ‫‪-i‬‬
‫لتجنب استبدال الملفات ‪overwrites‬‬ ‫‪-n‬‬

‫عبدهللا القحطاني‬
‫انشاء األدلة‬
‫‪Making directories‬‬
‫• إلنشاء األدلة نستخدم األمر ‪mkdir‬‬

‫عبدهللا القحطاني‬
‫الوحدة السابعة‬
‫األرشفة والضغط‬
‫‪Archiving and Compression‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 3.1‬أرشفة الملفات في سطر األوامر‬
‫• ملخص األهداف‬
‫– استخدام الضغط واألرشفة مع الملفات واألدلة‬

‫عبدهللا القحطاني‬
‫األرشفة والضغط‬

‫‪Archiving and Compression‬‬

‫عبدهللا القحطاني‬
‫األرشفة ضد الضغط‬
‫‪Archiving vs. Compression‬‬
‫• األرشفة هي دمج عدة ملفات في ملف واحد‬
‫– ملفات قليلة أو عدة أدلة‬

‫• الضغط هو جعل الملف أصغر حجما‬


‫– الضغط حذف المعلومات المتكررة‪ ،‬تستبدل بكود أصغر‬
‫– الضغط ممكن أن يطبق على الملفات الفردية‪ ،‬مجموعة من‬
‫الملفات أو كل األدلة في الشجرة‬

‫عبدهللا القحطاني‬
‫استخدامات األرشفة والضغط‬
‫‪Uses of Archiving and Compression‬‬
‫• ادارة ملفات السجل ‪log files‬‬
‫• مشاركة مجموعة من الملفات‬
‫– وثائق المشروع‬
‫– كود المصدر‬
‫• ضغط الملفات مفيد لجعل نقلها أكثر كفاءة‬
‫– أقل بيانات يتم ارسالها عبر االنترنت أو الشبكة‬
‫• يحافظ على ملفات تم تجميعها معا خالل وقت من الزمن‬
‫– النسخ االحتياطي‬

‫عبدهللا القحطاني‬
‫أنواع الضغط‬
‫‪Lossless vs Lossy Compression‬‬
‫‪Lossy‬‬ ‫‪Lossless‬‬
‫الملف المضغوط هو نفس • الملف المضغوط قد يفقد‬ ‫•‬
‫معلومات موجودة في الملف‬ ‫الملف األصلي‬
‫األصلي‬ ‫ال يضغط البيانات مثل ‪lossy‬‬ ‫•‬
‫يستخدم للبيانات المراد الحفاظ • يحذف المعلومات ”الغي مهمة“‬ ‫•‬
‫من الملف لكي يضغط بشكل‬ ‫عليها‬
‫أفضل‬ ‫السجالت – الوثائق – الملفات‬ ‫•‬
‫• الصور – الصوت – الفيديو‬ ‫الثنائية – ملفات التهيئة‬

‫عبدهللا القحطاني‬
‫‪gzip vs bzip2‬‬
‫‪bzip2‬‬ ‫‪gzip‬‬
‫أمران ‪ bzip2‬و ‪bunzip2‬‬ ‫• هناك أمران ‪ gzip‬و ‪• gunzip‬‬
‫‪Burrows-‬‬ ‫يستخدم‬ ‫•‬ ‫• يستخدم ترميز ‪Lempel-Ziv‬‬
‫‪Wheeler block sorting‬‬ ‫• نوووع ضووغط البيانووات ‪Lossless‬‬
‫نوع ضغط البيانات ‪Lossless‬‬ ‫•‬ ‫ذو كفاءة عالية‬
‫أكثر كفاءة من ‪ gzip‬بقليل ولكن‬
‫يتطلب المزيد من ‪CPU‬‬
‫يستخدم بشكل مطابق لألمر‬ ‫•‬
‫‪gzip‬‬

‫عبدهللا القحطاني‬
‫استخدام ‪gzip/gunzip/bzip2/bunzip2‬‬

‫المعنى‬ ‫األمر‬
‫ازالة الملف ‪ foo‬وإنشاء الملف المضغوط ‪foo.gz‬‬ ‫‪gzip foo‬‬
‫ازالة الملف المضغوط ‪foo.gz‬وإنشاء الملف العادي ‪foo‬‬ ‫‪gunzip foo.gz‬‬
‫عرض االحصائيات عن ‪foo.gz‬‬ ‫‪gunzip –l foo.gz‬‬

‫المعنى‬ ‫األمر‬
‫ازالة الملف ‪ foo‬وإنشاء الملف المضغوط ‪foo.bz2‬‬ ‫‪bzip2 foo‬‬
‫ازالة الملف المضغوط ‪ foo.bz2‬وإنشاء الملف العادي ‪foo‬‬ ‫‪bunzip2 foo.gz‬‬
‫غير موجود‬ ‫‪bunzip2 –l foo.gz‬‬

‫عبدهللا القحطاني‬
‫‪Tape Archive - TAR‬‬

‫عبدهللا القحطاني‬
‫الوحدة الثامنة‬
‫أوامر الوصل ‪ – Pipes‬اعادة التوجيه ‪-‬‬
‫‪REGEX‬‬
‫‪Pipes, Redirection and REGEX‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 3.2‬البحث واستخراج البيانات من الملفات‬
‫• ملخص األهداف‬
‫– اعادة التوجيه ووصل البيانات ‪Piping‬‬
‫– التعرف على واجهة نظام التشغيل يونكس المحمولة الجزئية‬
‫‪Partial POSIX‬‬

‫عبدهللا القحطاني‬
‫سطر األوامر وإعادة التوجيه‬

‫‪Command Line and Redirection‬‬

‫عبدهللا القحطاني‬
‫وصل سطر األوامر‬
‫‪Command Line Pipes‬‬
‫• الحرف ‪ Pipe‬الذي له الرمز ( | ) يمكن أن يستخدم بين‬
‫أمرين وذلك إلرسال مخرجات األمر األول لتكون مدخالت‬
‫لألمر الثاني‬
‫– ‪ls /etc | head‬‬
‫• مخرجات األمر ‪ ls /etc‬ترسل لملف ‪head‬‬
‫كمدخالت‬

‫عبدهللا القحطاني‬
‫سلسة وصل سطر األوامر‬
‫‪Command Line Pipelines‬‬
‫• أوامر متعددة يمكن أن تدمج مع بعضها لتشكل سلسلة وصل‪ .‬ترتيب‬
‫األوامر المضافة إلى سلسلة الوصل يمكن أن يؤثر على المخرجات‬

‫عبدهللا القحطاني‬
‫اعادة توجيه المدخالت والمخرجات‬
‫‪I/O Redirection‬‬
‫• هناك ثالث قنوات من اعادة توجيه المدخالت والمخرجات‬
‫مرتبطة مع كل األوامر‬
‫– المدخل القياسي )‪ Standard Input (STDIN‬وهو عادة يُوفر من‬
‫قبل المستخدم من خالل لوحة المفاتيح‬
‫– المخرج القياسي )‪ Standard Output (STDOUT‬وهو الناتج‬
‫الذي تم الحصول عليه عند تنفيذ األمر بشكل صحيح‬
‫• يظهر ‪ STDOUT‬عادة في نفس النافذة التي يتم تنفيذ األمر فيها‬
‫– الخطأ القياسي )‪ Standard Error (STERR‬وهو الناتج الذي تم‬
‫الحصول عليه عند تنفيذ األمر بشكل خاطئ‬
‫• يظهر ‪ STERR‬عادة في نفس النافذة التي يتم تنفيذ األمر فيها‬

‫عبدهللا القحطاني‬
‫رموز اعادة توجيه المدخالت والمخرجات‬
I/O Redirection Symbols
bash shell ‫رموز اعادة التوجيه الممكنة مع‬
Example Description ‫الوصف‬
< /path/to/file Redirect STDIN from file ‫ من الملف‬STDIN ‫اعادة توجيه‬
> /path/to/file Redirect STDOUT overwriting file ‫ للكتابة‬STDOUT ‫إعادة توجيه‬
‫فوق ملف‬
>> /path/to/file Redirect STDOUT appending file ‫ إللحاقه‬STDOUT ‫إعادة توجيه‬
‫بالملف‬
2> /path/to/file Redirect STDERR overwriting file ‫ للكتابة فوق‬STDERR ‫إعادة توجيه‬
‫ملف‬
2>> /path/to/file Redirect STDERR appending file ‫ إللحاقه‬STDERR ‫إعادة توجيه‬
‫بالملف‬
&> /path/to/file Redirect STDERR and STDOUT ‫ و‬STDOUT ‫إعادة توجيه‬
overwriting file ‫ للكتابة فوق ملف‬STDERR
&>> /path/to/file Redirect STDERR and STDOUT ‫ و‬STDOUT ‫إعادة توجيه‬
appending file ‫ إللحاقه بالملف‬STDERR

‫عبدهللا القحطاني‬
‫ملف جهاز العدم‬
‫‪The null device‬‬
‫• ملف جهاز العدم يُمثَّل عادة بالملف ‪( /dev/null‬يسمى‬
‫أيضا ”‪)“Bit Bucket‬‬
‫• هذا الملف مفيد جدا في إعادة توجيه المخرجات والمدخالت‬
‫• هذا الملف يستخدم لغرضين هما‬
‫– أي مخرجات يعاد توجيهها الى الملف ‪ /dev/null‬يتم‬
‫تجاهلها‬
‫– الملف ‪ /dev/null‬يمكن أن يستخدم في عملية االدخال ليوفر‬
‫سلسلة من القيم الفارغة‬

‫عبدهللا القحطاني‬
STDIN, STDOUT, and STDERR

‫عبدهللا القحطاني‬
‫‪STDIN or 0‬‬
‫المدخل القياسي (‪ )STDIN‬يقدم عادة من خالل لوحة المفاتيح‬ ‫•‬
‫ولكن يمكن إعادة توجيهه مع الرمز >‬
‫‪ STDIN‬يمكن أن يُقرأ بواسطة بعض البرامج للحصول على‬ ‫•‬
‫البيانات الخاصة به ومعالجتها‬
‫إلعالم البرنامج الذي نرغب ايقافه عن توفير البيانات بواسطة‬ ‫•‬
‫لوحة المفاتيح خالل ‪ STDIN‬نكتب ‪CTRL-D‬‬
‫األمر ‪ tr‬يقرأ البيانات من ‪ STDIN‬ويترجمها من مجموعة‬ ‫•‬
‫حروف الى مجموعة اخرى‬
‫إلنهاء عملية طباعة البيانات ‪ -‬اذا استخدم األمر ‪ tr‬من قبل‬ ‫•‬
‫المستخدم لترجمة البيانات المكتوبة ‪ -‬نستخدم األمر ‪CTRL-D‬‬

‫عبدهللا القحطاني‬
‫‪ STDIN‬من لوحة المفاتيح‬
‫‪STDIN from keyboard‬‬
‫• في المثال التالي‪ ،‬األمر ‪ tr‬يقوم بتحويل أو ترجمة‬
‫الحروف الصغيرة إلى حروف كبيرة بعد أن يقوم المستخدم‬
‫بكتابة األمر والضغط على ‪Enter‬‬
‫• ثم يقوم المستخدم بكتابة ”‪ "alpha‬والضغط على ‪Enter‬‬
‫وأخيرا يقوم المستخدم بالضغط على ‪ CTRL-D‬لإلنهاء‬

‫عبدهللا القحطاني‬
‫اعادة توجيه ‪ STDIN‬من ملف‬
‫‪Redirecting STDIN from file‬‬
‫• األمر ‪ tr‬يقوم بتحويل أو ترجمة الحروف الصغيرة إلى‬
‫حروف كبيرة مع اعادة توجيه ‪ STDIN‬من الملف‬
‫‪/etc/hosts‬‬

‫عبدهللا القحطاني‬
‫‪STDOUT or 1‬‬
‫المخرجات القياسية )‪ (STDOUT‬هو مخرجات األمر عندما‬ ‫•‬
‫ينفذ بشكل صحيح‬
‫ويظهر ‪ STDOUT‬عادة في نفس النافذة التي يتم تنفيذ األمر‬ ‫•‬
‫فيها‬
‫يستخدم األمر ‪ echo‬لطباعة رسائل الى ‪STDOUT‬‬ ‫•‬
‫يمكن أن يستخدم ليشرح كيف يمكن اعادة توجيه ‪STDOUT‬‬ ‫•‬
‫كما سيأتي في الشرائح القادمة‬

‫عبدهللا القحطاني‬
‫اعادة توجيه ‪STDOUT‬‬
‫‪Redirecting STDOUT‬‬
‫• في المثال التالي‪ ،‬األمر ‪ echo Linux 1‬ينفذ والمخرجات‬
‫تظهر على ‪STDOUT‬‬
‫• ومن ثم األمر ‪ echo Linux 1 > a.txt‬يقوم بإعادة‬
‫توجيه المخرجات الى الملف ‪a.txt‬‬
‫• ثم يقوم األمر ‪ cat a.txt‬بإرسال محتويات الملف الى‬
‫‪ STDOUT‬لذلك يتم عرض المخرجات‬

‫عبدهللا القحطاني‬
‫‪Appending STDOUT redirection‬‬
‫• استخدام سهم واحد < إلعادة التوجيه ‪ STDOUT‬سوف يقوم‬
‫بالكتابة على الملف المحدد وإلغاءه‬
‫• استخدام األسهم الثنائية << إلعادة التوجيه ‪ STDOUT‬سوف‬
‫يؤدي الى إنشاء ملف جديد أو يسمح باإلضافة في الملف الحالي‬

‫عبدهللا القحطاني‬
‫‪STDERR or 2‬‬
‫• )‪ Standard Error (STDERR‬هي مخرجات األمر بعد أن‬
‫ينفذ بشكل خاطئ‬
‫• وترسل عادة الى وحدة التحكم (المحطة) حيث يتم تنفيذ األمر‬
‫• األمر ‪ ls /fake‬يؤدي الى حدوث خطأ في المخرجات‬
‫ترسل الى ‪ STDERR‬ألن الملف ‪ /fake‬غير موجود‬

‫عبدهللا القحطاني‬
‫اعادة التوجيه ‪STDERR‬‬
‫‪Redirecting STDERR‬‬
‫• األمر ‪ ls /fake 2> /tmp/err.msg‬يؤدي‬
‫الى حدوث خطأ سيتم ارساله الى ‪ STDERR‬الذي يقوم بإعادة‬
‫تحويله الى الملف ‪/tmp/err.msg‬‬
‫• األمر ‪ cat /tmp/err.msg‬يرسل محتوى الملف‬
‫الى ‪ STDOUT‬ليقوم بعرض الملف‬

‫عبدهللا القحطاني‬
‫التخلص من ‪STDERR‬‬
‫‪Disposing of STDERR‬‬
‫• األمر ‪ ls /fake 2> /dev/null‬الذي يسبب‬
‫‪ STDERR‬سوف يعاد توجيهه الى الملف ‪/dev/null‬‬
‫للتخلص من تأثير رسالة الخطأ‬
‫• الحظ أن األمر ‪ cat /dev/null‬يعرض ملف فارغ‬

‫عبدهللا القحطاني‬
‫العمل مع ‪ STDERR‬و ‪STDOUT‬‬
‫‪Working with STDERR and STDOUT‬‬
‫‪ find‬هو األمر الذي يستخدم للبحث عن ملفات النظام‬ ‫•‬
‫يقوم بإرسال المخرجات الى ‪ STDOUT‬عندما تكون‬ ‫•‬
‫صحيحة‬
‫يقوم بإرسال المخرجات الى ‪ STDERR‬عندما تكون خاطئة‬ ‫•‬
‫يستخدم األمر ‪ find‬ليشرح كيف يمكن اعادة توجيه كل‬ ‫•‬
‫من ‪ STDOUT‬و ‪ STDERR‬كما سيأتي في الشرائح القادمة‬
‫تفاصيل أكثر عن األمر ‪ find‬سيتم شرحها في هذه الوحدة‬ ‫•‬

‫عبدهللا القحطاني‬
‫‪STDERR and STDOUT Example‬‬
‫• المثال التالي يوضح كيف يقوم األمر ‪ find‬بالبحث بشكل عكسي‬
‫في الدليل ‪ /etc/pki‬عن أي ملف يطابق ”‪"*.crt‬‬
‫• هناك سطران من رسائل ‪ STDERR‬وسطران من رسائل‬
‫‪ STDOUT‬تظهر في المثال التالي‬

‫عبدهللا القحطاني‬
‫عزل ‪STDERR‬‬
‫‪Isolating STDERR‬‬
‫• في المثال التالي مخرجات ‪ STDOUT‬سوف يعاد توجيهها‬
‫الى الملف ‪ /dev/null‬وبذلك مخرجات ‪STDERR‬‬
‫لوحدها هي من سترسل الى نافذة المحطة‬

‫عبدهللا القحطاني‬
‫‪Isolating STDOUT‬‬
‫• في المثال التالي مخرجات ‪ STDERR‬سوف يعاد توجيهها‬
‫الى الملف ‪ /dev/null‬وبذلك مخرجات ‪STDOUT‬‬
‫لوحدها هي من سترسل الى نافذة المحطة‬

‫عبدهللا القحطاني‬
‫‪Redirecting Multiple Streams‬‬
‫‪Separately‬‬
‫• في المثال التالي مخرجات ‪ STDERR‬سيعاد توجيهها الى‬
‫الملف ‪ crt.err‬بينما مخرجات ‪ STDOUT‬سيعاد توجيهها‬
‫الى الملف ‪crt.txt‬‬

‫عبدهللا القحطاني‬
‫‪Redirecting Multiple Streams‬‬
‫‪Combined‬‬
‫• في هذا المثال كال ‪ STDOUT‬و ‪ STDERR‬سوف يعاد‬
‫توجيههم الى نفس الملف ‪crt.all‬‬

‫عبدهللا القحطاني‬
‫األمر ‪find‬‬

‫‪find Command‬‬

‫عبدهللا القحطاني‬
‫البحث باستخدام األمر ‪find‬‬
‫‪Searching with find command‬‬
‫• نظام الملفات يملك مئات األدلة تحوي بداخلها آالف الملفات‬
‫مما يجعل البحث عنها تحدي كبير‬
‫• األمر ‪find‬هو أداة قوية قادرة على البحث في الملفات‬
‫بطرق مختلفة من ضمنها‪:‬‬
‫– االسم ‪name‬‬
‫– الحجم ‪size‬‬
‫– التاريخ ‪date‬‬
‫– المالك ‪ownership‬‬

‫عبدهللا القحطاني‬
‫صيغة األمر ‪find‬‬
‫‪Syntax of find command‬‬
‫• األمر ‪ find‬له البناء التالي‬
‫– ]‪find [start_dir] [search_op] [criteria] [result‬‬
‫• اذا لم يتم تحديد دليل البدء ]‪ [start_dir‬فإنه سيتم تحديد‬
‫الدليل الحالي كدليل البدء‬
‫• تستخدم خيارات البحث ]‪ [search_op‬لتحديد كيف يمكن‬
‫للبحث أن يتم‪ .‬مثل استخدام خيار االسم ‪ –name‬للبحث‬
‫باستخدام االسم‬

‫عبدهللا القحطاني‬
‫)‪Syntax of find command (cont'd‬‬
‫• معايير البحث )‪ (criteria‬هي البيانات المستخدمة مع‬
‫خيارات البحث‪ .‬اذا كان خيار البحث هو االسم ‪ –name‬فإن‬
‫المعيار سيكون اسم الملف الذي سيتم البحث عنه‬
‫• سيكون خيار النتيجة )‪ (result‬االفتراضي هو ‪-print‬‬
‫حيث سيتم استخراج اسماء الملفات التي تم العثور عليها‪.‬‬
‫خيارات النتيجة األخرى ممكن أن تطبق العمليات على‬
‫الملفات التي تم العثور عليها‬

‫عبدهللا القحطاني‬
‫البحث باستخدام اسم الملف‬
‫‪Searching by file name‬‬
‫• بالنظر في األمر التالي‬
‫– ”‪find /etc/pki -name "*.crt‬‬
‫• نجد أن األمر سيبدأ البحث في الدليل ‪ /etc/pki‬بشكل عكسي‬
‫• مخرجات البحث هي أي ملف اسمه يطابق المعيار ”‪"*.crt‬‬
‫(أي ملف ينتهي اسمه بكلمة ‪).crt‬‬

‫عبدهللا القحطاني‬
‫عرض تفاصيل الملف‬
Displaying file detail
‫– سوف يوفر مخرجات تشابه مخرجات األمر‬ls ‫• الخيار‬
ls –l
inode, blocks used, :‫• أعمدة المخرجات هي‬
permissions, link count, user owner, group
owner, size, date/time, file name.

‫عبدهللا القحطاني‬
‫البحث بحجم الملف‬
‫‪Searching by file size‬‬
‫الخيار ‪ –size‬يمكن استخدامه بواسطة األمر ‪ find‬للبحث عن‬ ‫•‬
‫الملفات بواسطة حجمها‬
‫الملفات الكبيرة يمكن تعيينها حجمها بالوحدات ‪...K,M,G‬الخ‬ ‫•‬
‫استخدام ‪ +1M‬يعني أن حجم الملف أكثر من واحد ميجابايت‬ ‫•‬
‫استخدام ‪ -1M‬يعني أن حجم الملف أقل من واحد ميجابايت‬ ‫•‬

‫عبدهللا القحطاني‬
‫خيارات مفيدة مع أمر ‪find‬‬
‫‪Useful options for find command‬‬
‫الخيار‬ ‫مثال‬ ‫المعنى‬
‫‪-maxdepth -maxdepth 1‬‬ ‫البحث فقط في األدلة المحددة واألدلة المتفرعة‬
‫منها بشكل مباشر‬
‫‪-group‬‬ ‫‪-group‬‬ ‫البحث عن أي ملف مملوك لمجموعة معينة‬
‫‪payroll‬‬
‫‪-iname‬‬ ‫‪-iname hosts‬‬ ‫البحث عن الملفات باالسم بدون النظر لحالة‬
‫األحرف‬
‫‪-mmin‬‬ ‫‪-mmin -10‬‬ ‫البحث عن الملفات التي تم التعديل عليها آخر‬
‫‪ 10‬دقائق أو أقل‬
‫‪-type‬‬ ‫‪-type f‬‬ ‫البحث عن الملفات االعتيادية‬
‫‪-user‬‬ ‫‪-user bob‬‬ ‫البحث عن الملفات التي يملكها المستخدم ‪bob‬‬

‫عبدهللا القحطاني‬
‫األمر ‪less‬‬

‫‪less Command‬‬

‫عبدهللا القحطاني‬
‫عرض الملفات مع أمر ‪less‬‬
‫‪Viewing files with less command‬‬
‫• األمر ‪ less‬هو أمر استدعاء ‪ pager‬صمم ليعرض صفحة‬
‫واحدة فقط من البيانات في المرة الواحدة‬
‫• األمر ‪ more‬هو أمر استدعاء ‪ pager‬أيضا ولكنه يحمل‬
‫خصائص أقل من خصائص األمر ‪less‬‬
‫• كال األمرين يسمح للمستخدم للرجوع للخلف والتقدم لألمام‬
‫مع أوامر التحرك الستعراض صفحة واحدة في المرة‬
‫الواحدة‬

‫عبدهللا القحطاني‬
‫شاشة المساعدة في ‪less‬‬
‫‪The help screen in less‬‬
‫• بمجرد الدخول في برنامج ‪ less‬يستطيع المستخدم عرض شاشة‬
‫المساعدة ‪ help‬بالضغط على مفتاح ”‪“h‬‬

‫عبدهللا القحطاني‬
‫أوامر الحركة في ‪less‬‬
‫‪less movement commands‬‬
‫• كما في شاشة المساعدة األمر ‪ less‬له عدد من أوامر الحركة‬
‫وهي‬
‫المفتاح‬ ‫الحركة‬
‫‪Spacebar‬‬ ‫شاشة لألمام‬
‫‪b‬‬ ‫شاشة للخلف‬
‫‪Enter‬‬ ‫سطر لألمام‬
‫‪q‬‬ ‫خروج‬
‫‪h‬‬ ‫مساعدة‬

‫عبدهللا القحطاني‬
‫أمر البحث في ‪less‬‬
‫‪less searching commands‬‬
‫• للبحث في شاشة ‪less‬‬
‫– نكتب الرمز ‪ /‬بحيث يبدأ من المؤشر الى نهاية الملف‬
‫– نكتب الرمز ? بحيث يبدأ من المؤشر الى بداية الملف‬
‫– سجل الكلمة المراد البحث عنها ثم اضغط ‪Enter‬‬
‫– اذا وجدت أكثر من عنصر مطابق فإننا نستخدم الحرف ‪n‬‬
‫لالنتقال الى التالي بينما نستخدم الحرف ‪ N‬لالنتقال الى‬
‫السابق‬

‫عبدهللا القحطاني‬
‫‪head or tail‬‬

‫عبدهللا القحطاني‬
‫التصفية باستخدام أمر ‪head‬‬
‫‪Filtering with head‬‬
‫• أمر ‪ head‬يعرض افتراضيا أول ‪ 10‬أسطر من الملف‬
‫• الخيار ‪ –n‬يمكن المستخدم من عرض عدد األسطر التي‬
‫يرغب في استعراضها من األعلى‬

‫عبدهللا القحطاني‬
‫أمر ‪ head‬مع القيم السالبة‬
‫‪head with negative lines‬‬
‫• عادة أمر ‪ head‬يعرض األسطر المحددة من أعلى الملف‬
‫• استخدام الخيار ‪ –n‬مع القيم السالبة يحدد كم عدد األسطر‬
‫التي لن تعرض من أسفل الملف‬
‫• المثال التالي يعرض كل أسطر الملف ‪/etc/passwd‬‬
‫ما عدا آخر ‪ 32‬سطر‬

‫عبدهللا القحطاني‬
‫التصفية باستخدام أمر ‪tail‬‬
‫‪Filtering with tail‬‬
‫• أمر ‪ tail‬يعرض افتراضيا آخر ‪ 10‬أسطر من الملف‬
‫• الخيار ‪ –n‬يمكن المستخدم من عرض عدد األسطر التي‬
‫يرغب في استعراضها من األسفل‬

‫عبدهللا القحطاني‬
‫أمر ‪ tail‬مع القيم الموجبة‬
‫‪tail with positive lines‬‬
‫• اذا كان الخيار ‪ –n‬حدد عدد األسطر المراد عرضها مع‬
‫الزائدة ‪ +‬فإن األمر ‪ tail‬سيقوم بعرض أسطر الملف بداية‬
‫من السطر المحدد الى نهاية الملف‬

‫عبدهللا القحطاني‬
‫‪Following with tail‬‬
‫• األمر ‪ tail‬لديه المقدرة على مراقبة التغيرات التي تحدث في الملف‬
‫كما يستطيع طباعتها كما حدثت باستخدام الخيار ‪–f‬‬
‫• مدراء النظام وبشكل دوري يتابعون ملفات السجل من أجل اكتشاف‬
‫مشاكل النظام‬
‫• المستخدم يجب أن يخرج من األمر ‪ tail‬عندما يكون متبوعا بالخيار‬
‫‪ –f‬وذلك باستخدام ‪CTRL-C‬‬

‫عبدهللا القحطاني‬
‫أمر ‪sort‬‬

‫‪sort Command‬‬

‫عبدهللا القحطاني‬
‫ترتيب الملفات أو المدخالت‬
‫‪Sorting files or input‬‬
‫األمر ‪ sort‬يقوم بإعادة ترتيب أسطر المخرجات بناء على‬ ‫•‬
‫حقل واحد أو عدة حقول قام المستخدم بتحديدها‬
‫الحقول يمكن فصلها بواسطة الفراغ على الرغم من أن‬ ‫•‬
‫استخدام الخيار ‪ –t‬الذي يمكنك من تخصيص محدد‬
‫الترتيب االفتراضي هو الترتيب التصاعدي لكن يمكن‬ ‫•‬
‫استخدام الخيار ‪ –r‬لعكس الفرز أو الترتيب للحقل‬
‫الترتيب االفتراضي هو ترتيب األدلة لكن يمكن استخدام‬ ‫•‬
‫الخيار ‪ –n‬لجعل الفرز أو الترتيب من النوع الرقمي‬

‫عبدهللا القحطاني‬
‫مثال على الفرز‬
‫‪Example of sort‬‬
‫• في المثال التالي الملف ‪ /etc/passwd‬سوف يفرز‬
‫باستخدام ‪ :‬حرف كمحدد حسب الحقل الرابع عدديا ثم الحقل‬
‫الثالث عدديا في االتجاه المعاكس‪:‬‬

‫عبدهللا القحطاني‬
‫احصائيات الملف‬

‫‪File Statistics‬‬

‫عبدهللا القحطاني‬
‫احصائيات الملف مع األمر ‪wc‬‬
‫‪File statistics with wc command‬‬
‫يستخدم األمر ‪ wc‬للحصول على ثالث احصائيات لكل‬ ‫•‬
‫ملف تم عمل االحصاءات عليه (‪)argument‬‬
‫افتراضيا‪ ،‬األمر ‪ wc‬يعرض األسطر‪ ،‬الكلمات والبايت‬ ‫•‬
‫الواردة في كل ملف‬
‫اذا كان هناك أكثر من ملف فإن األمر ‪ wc‬يقوم بحساب‬ ‫•‬
‫مجموع كل الملفات‬
‫لعرض احصاءات فردية يحدد الخيار ‪ -l‬لألسطر أو‬ ‫•‬
‫الخيار ‪ -w‬للكلمات أو الخيار ‪ -c‬للبايت‬

‫عبدهللا القحطاني‬
‫مثال على األمر ‪wc‬‬
‫‪Example of wc command‬‬
‫• لتحليل عدد األسطر والكلمات والبايت في الملف‬
‫‪ /etc/passwd‬والملف ‪/etc/passwd-‬‬
‫نستخدم األمر ‪ wc‬بالطريقة التالية‬

‫عبدهللا القحطاني‬
‫‪Using wc with pipes‬‬
‫• األمر ‪ wc‬عادة يستخدم مع ‪ pipes‬لذلك مخرجات األمر‬
‫يمكن أن تحلل‬
‫• استخدام األمر ‪ wc –l‬في نهاية ‪ pipe‬سوف يقوم بعد كم‬
‫عدد أسطر المخرجات التي تم الحصول عليها‬
‫• كمثال‪ ،‬لتحديد كم عدد الملفات واألدلة في الدليل ‪/etc‬‬
‫نستطيع تنفيذ األمر ‪ls /etc | wc -l‬‬

‫عبدهللا القحطاني‬
‫أمر ‪cut‬‬

‫‪cut Command‬‬

‫عبدهللا القحطاني‬
‫التصفية مع أمر ‪cut‬‬
‫‪Filtering with cut command‬‬
‫• اذا كان المستخدم يرغب في استخراج عمود من النص فإن‬
‫األمر ‪ cut‬يوفر طريقتين بسيطتين هما‬
‫– بواسطة المحدد‪ ،‬حيث يكون الفراغ هو المحدد االفتراضي‪ .‬الخيار‬
‫‪ –d‬يمكن المستخدم من اختيار محددات أخرى كما أن الخيار ‪–f‬‬
‫يساعد في اختيار الحقل المراد استخراجه‬
‫– بواسطة موضع الحرف‪ ،‬الخيار ‪ –c‬يستخدم مع مجال من‬
‫األعمدة لكي بتم استخراجها‬

‫عبدهللا القحطاني‬
‫مثال على أمر ‪cut‬‬
‫‪Example of cut command‬‬
‫• ُحدد الملف ‪ /etc/passwd‬بواسطة النقطتان ‪colon‬‬
‫مع الحقول التالية‬
‫‪account:password:UID:GID:GECOS:directory:shell‬‬
‫• الستخراج الحقل ‪ 1‬باإلضافة الى المجال من الحقل ‪ 5‬الى الحقل ‪7‬‬
‫‪cut –d: -f1,5-7 /etc/passwd‬‬

‫عبدهللا القحطاني‬
‫أمر ‪grep‬‬

‫‪grep Command‬‬

‫عبدهللا القحطاني‬
‫التصفية مع األمر ‪grep‬‬
‫‪Filtering with grep command‬‬
‫• األمر ‪ grep‬يستخدم لتصفية المدخالت القياسية أو لتصفية‬
‫محتويات الملف لألسطر المطابقة لنمط محدد‬
‫• اذا كنت ترغب في رؤية أين يظهر النمط أو كلمة واحدة في‬
‫ملف ما فإن األمر ‪ grep‬هو وسيلة مفيدة لتحقيق ذلك‬
‫الغرض‬

‫عبدهللا القحطاني‬
‫الخيارات الشائعة ألمر ‪grep‬‬
‫‪Common grep options‬‬
‫الخيار‬ ‫الغرض‬
‫‪--color‬‬ ‫‪Color the matches found‬‬ ‫تلوين العناصر المتطابقة الموجودة‬
‫‪-v‬‬ ‫‪Reverse (negate) matches‬‬ ‫عكس (السلبي) التطابق‬
‫‪-c‬‬ ‫‪Count matches‬‬ ‫عدد العناصر المتطابقة‬
‫‪-n‬‬ ‫‪Number matching lines‬‬ ‫عدد األسطر المتطابقة‬
‫‪-l‬‬ ‫‪List matching files‬‬ ‫سرد الملفات المتطابقة‬
‫‪-i‬‬ ‫‪Match case insensitive‬‬ ‫مطابقة لحالة األحرف الحساسة‬
‫‪-w‬‬ ‫‪Match pattern as a word‬‬ ‫مطابقة النمط ككلمة‬

‫عبدهللا القحطاني‬
‫التعابير االعتيادية الرئيسة‬

‫‪Basic Regular Expressions‬‬

‫عبدهللا القحطاني‬
‫التعابير االعتيادية الرئيسة‬
‫‪Basic Regular Expressions‬‬
‫• التعابير االعتيادية الرئيسة (‪ )BRE‬يمكن أن تستخدم مع أمر‬
‫‪ grep‬بدون أن تتطلب استخدام أي خيار (بعكس التعبير‬
‫االعتيادي الموسع (‪))ERE‬‬
‫• أبسط التعابير االعتيادية هي فقط الحروف األبجدية أو‬
‫الرقمية التي تطابق نفسها‬
‫• الرمز \ ‪ backslash‬يمكن استخدامه للتخلص من معنى‬
‫حروف التعبير االعتيادي بما في ذلك الرمز \ ‪backslash‬‬
‫نفسه‬

‫عبدهللا القحطاني‬
‫‪BRE: the . example‬‬
‫• الحرف ‪ )period( .‬يطابق بالضبط حرف واحد فقط‬
‫• المثال باألسفل يوضح استخدام أمر ‪ grep‬لمطابقة الحرف‬
‫’‪ ‘a‬المتبوع بحرفين‬
‫• النتائج أظهرت أنه يقابل '‪'abc‬‬

‫عبدهللا القحطاني‬
‫‪BRE: the [ ] example‬‬
‫• الحروف )‪ [ ] (brackets‬تستخدم لمطابقة بالضبط حرف‬
‫واحد فقط‬
‫• الحروف يمكن أن تسرد أو تعطى كمجال من الحروف‬
‫• اذا كان أول حرف في القائمة هو )‪ ^ (caret‬فإن ذلك يعني‬
‫أي حرف ليس في القائمة التي بين القوسين‬

‫عبدهللا القحطاني‬
‫‪BRE: the * example‬‬
‫• الحرف )‪ * (asterisk‬سيطابق صفر أو أكثر من الحروف‬
‫السابقة‬
‫• المطابقة "*‪ "a‬ليست مفيدة جدا ألنها قد تطابق صفرا من أحرف‬
‫‪( a‬مطابقة كل سطر)‬
‫• مطابقة "*‪ "abcd‬ستكون أكثر فائدة خصوصا عندما نرغب في‬
‫مطابقة "‪ "abc‬غير متبوعة بأي حرف أو متبوعة بحروف ‪d's‬‬

‫عبدهللا القحطاني‬
‫‪BRE: the ^ example‬‬
‫• الحرف )‪ ^ (caret‬عندما يظهر في بداية العينة يعني أن‬
‫عينة البحث يجب أن تظهر في أول السطر‬
‫• الحرف ^ عندما ال يكون في بداية العينة فإنه يطابق نفسه‬

‫عبدهللا القحطاني‬
‫‪BRE: the $ example‬‬
‫• الحرف )‪ $ (dollar sign‬عندما يظهر في نهاية العينة فإنه‬
‫يعني أن العينة يجب أن تظهر في نهاية السطر‬
‫• الحرف ‪ $‬عندما ال يكون في نهاية العينة فإنه يطابق نفسه‬

‫عبدهللا القحطاني‬
‫‪BRE: Combining ^ and $‬‬
‫• جمع كال الحرفين ^ و ‪ $‬يسمح بنوعين خاصين من المطابقة‬
‫– '‪ '^$‬يطابق السطر الفارغ‬
‫– '‪ '^pattern$‬يطابق ما اذا كان كل السطر يحتوي على العينة‬
‫فقط‬

‫عبدهللا القحطاني‬
‫التعابير االعتيادية الموسعة‬

‫‪Extended Regular Expressions‬‬

‫عبدهللا القحطاني‬
‫‪Extended Regular Expressions‬‬
‫• االستخدام للتعابير االعتيادية الموسعة (‪ )ERE‬تتطلب استخدام‬
‫الخيار ‪ –E‬عندما يستخدم أمر ‪grep‬‬
‫• ‪ ERE‬يمكن أن تجمع مع ‪BRE‬‬
‫• الحروف التالية هي من نوع ‪ERE‬‬
‫–?‬
‫–‪+‬‬
‫–|‬

‫عبدهللا القحطاني‬
‫‪ERE: the + example‬‬
‫• الحرف )‪ + (plus‬يقوم بمطابقة حرف أو أكثر من الحروف‬
‫السابقة‬
‫• مطابقة "‪ "a+‬مفيد ألنه يمكن أن يطابق حرف أو أكثر من‬
‫حروف ‪ a‬بالتأكد من أن األسطر التي تملك على األقل حرف‬
‫‪ a‬واحد مطابق‬

‫عبدهللا القحطاني‬
‫‪ERE: the ? example‬‬
‫• الحرف )‪ ? (question mark‬سيقوم بمطابقة حرف سابق‬
‫اختياريا‬
‫• الحرف ? يستخدم لمطابقة الحروف فقط التي تظهر أحيانا‬
‫في الكلمة‪ .‬المثال التالي يوضح ذلك‬

‫عبدهللا القحطاني‬
‫‪ERE: the | example‬‬
‫• الحرف )‪ | (vertical bar‬سوف يعمل مثل العامل ”‪“or‬‬
‫بين اثنين من التعابير االعتيادية‬
‫• هذا العامل المتناوب مفيد ألنه قادر على مطابقة عينات‬
‫مختلفة‬

‫عبدهللا القحطاني‬
‫األمر ‪xargs‬‬
‫‪The xargs command‬‬
‫• األمر ‪ xargs‬يدعم تنفيذ المجموعات من أوامر ‪ pipe‬المعقدة‬
‫بكفاءة عالية‬
‫• هذا األمر يحاول بناء أطول سطر أوامر محتمل مع العديد من‬
‫الوسائط ‪ arguments‬المحتملة‬
‫• أيضا يحاول منع تنفيذ األمر في كل مرة لكل وسيط ‪argument‬‬

‫عبدهللا القحطاني‬
‫الوحدة التاسعة‬
‫أساسيات البرمجة‬

‫‪Module 9‬‬
‫‪Basic Scripting‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 3.3‬تحويل األوامر الى برنامج‬
‫• ملخص األهداف‬
‫– أساسيات تحرير النص‬
‫– أساسيات برمجة الشل‬

‫عبدهللا القحطاني‬
‫محررات النصوص‬

‫‪Text Editors‬‬

‫عبدهللا القحطاني‬
‫البرنامج النصي هي سلسلة من األوامر‬
‫‪A script is a sequence of commands‬‬
‫األوامر التي تكتب في سطر األوامر يمكن أن تبرمج نصيا‬ ‫•‬
‫كما يمكن أن تفرع باالعتماد على االختبارات وعلى حلقة من‬ ‫•‬
‫خالل المجموعات‬
‫هذا كله متاح من خالل سطر األوامر أيضا‬ ‫•‬
‫البرمجة هي تكرار وتناغم وحرية تتيح للمستخدم أن يقوم‬ ‫•‬
‫بعمل أكثر تشويق‬

‫عبدهللا القحطاني‬
‫المحررات‬
‫‪Editors‬‬
‫البرامج ‪ Scripts‬هي ملفات نصية‬ ‫•‬
‫‪ LibreOffice‬يضيف تنسيقات تجعل البرامج غير صالحة‬ ‫•‬
‫لالستخدام‬
‫محررات النصوص األكثر شهرة هي ‪ nano‬و ‪vi / vim‬‬ ‫•‬
‫مقارنة بين االثنين ‪ nano‬هو األكثر سهولة في االستخدام‬ ‫•‬

‫عبدهللا القحطاني‬
‫‪nano‬‬
‫• يكتب بالشكل المعتاد‪ ،‬وتستخدم مفاتيح األسهم للتحرك داخله‬
‫• معظم األوامر (أزرار لوحة المفاتيح) هي للتحكم باإلضافة‬
‫لكتابة الحروف‬
‫• سياق األوامر الحساسة يظهر في أسفل الشاشة مثل‬
‫– للخروج من المحرر نستخدم ‪^X‬‬
‫– للبحث نستخدم ‪^W‬‬
‫– للحصول على المساعدة نستخدم ‪^G‬‬

‫عبدهللا القحطاني‬
‫‪shebang‬‬

‫‪shebang‬‬

‫عبدهللا القحطاني‬
‫!‪#‬‬
‫• يطلق على الرمز !‪ #‬المسمى ‪)hash + bang( shebang‬‬
‫• يستخدم إلعالم نواة النظام ‪ kernal‬ما هو نوع المفسر‬
‫الخاص بالشل (‪ )shell interpreter‬الذي سيستخدم لتشغيل‬
‫البرنامج‬
‫• يجب أن يكون في بداية السطر‬
‫– ‪#!/bin/sh‬‬
‫– ‪#!/usr/bin/ruby‬‬
‫• يتيح للمستخدم تشغيل البرنامج النصي مع ‪ ./script‬بغض‬
‫النظر عن أي شل يملكه المستخدم‬
‫عبدهللا القحطاني‬
‫العمل مع المتغيرات‬

‫‪Working with Variables‬‬

‫عبدهللا القحطاني‬
‫المتغيرات‬
‫‪Variables‬‬
‫• هي وحدات تخزين مؤقتة للبيانات في الذاكرة‬
‫• االسناد )‪(no $‬‬
‫– ”‪FOO=“hello‬‬
‫– `‪CWD=`pwd‬‬
‫– ”‪BAR=“Hello $NAME‬‬
‫• االستخدام (نحتاج الى ‪)$‬‬
‫– ‪$FOO‬‬
‫– ”‪echo “Hello $NAME‬‬

‫عبدهللا القحطاني‬
‫المتغيرات الخاصة‬
‫‪Special Variables‬‬
‫المتغيرات ‪ $1..$9‬هي وسائط للبرنامج النصي على سبيل‬ ‫•‬
‫المثال‬
‫”‪./test.sh hello there # $1=“hello” $2=“there‬‬ ‫•‬
‫المتغير ?‪ $‬هو شفرة الخروج من آخر أمر للقيام بتنفيذه‬ ‫•‬
‫يستخدم ”‪ “exit 1‬للخروج من البرنامج النصي الحالي مع‬ ‫•‬
‫وجود خطأ ترميز ‪code 1‬‬

‫عبدهللا القحطاني‬
‫العمل مع الشرط‬

‫‪Working with Conditionals‬‬

‫عبدهللا القحطاني‬
‫‪Conditionals‬‬
‫‪if something; then‬‬ ‫• اذا كان ناتج الشرط ‪ 0‬فسيتم تنفيذ‬
‫‪do this‬‬ ‫جميع العمليات حتى الوصول الى‬
‫‪fi‬‬ ‫‪fi‬‬

‫‪if something; then‬‬ ‫• الصيغ البديلة تمكن المستخدم من‬


‫‪do this‬‬ ‫القيام بعدة اختبارات باإلضافة الى‬
‫‪elif something else; then‬‬ ‫تنفيذ الخيار االفتراضي اذا كان‬
‫‪do that‬‬ ‫مطلوبا‬
‫‪else‬‬
‫‪try this‬‬
‫‪Fi‬‬

‫عبدهللا القحطاني‬
test ‫أمر‬
test command
‫ ينمح المستخدم سهولة الوصول للمقارنة ولعوامل‬test ‫• األمر‬
‫اختبار الملف‬
test –f /tmp/foo # test if file exists ‫اختبر اذا الملف موجود‬
test ! –f /tmp/foo # test if file doesn’t exist ‫اختبر اذا الملف غير موجود‬
test $A –eq 1 # is $A = 1 (numeric) )‫ (رقمي‬A = 1 ‫هل‬
test “$B” = “Hello” # string comparison ‫مقارنة سلسة من الحروف‬
test $A –lt 10 # $A < 10? 10 ‫ أصغر من‬A ‫هل‬

‫البدائل هي مثل االختبار‬


if test –f /tmp/foo; then # it works
if [ -f /tmp/foo ]; then # looks much nicer!

‫عبدهللا القحطاني‬
Case ‫جملة‬
Case statement
case ”$GREETING" in
hello|hi) ‫ توفر طريقة مختلفة‬case ‫• جملة‬
echo "hello yourself"
;; ‫إلجراء االختبارات المتعددة‬
goodbye)
echo "nice to have met you" ‫بطريقة أسهل‬
echo "I hope to see you again"
;;
*)
echo "I didn't understand that"
esac

‫عبدهللا القحطاني‬
‫الحلقات‬

‫‪Loops‬‬

‫عبدهللا القحطاني‬
‫‪The for loop‬‬
‫”‪NAMES=“Alice Bob Charlie‬‬ ‫• تعمل حلقة ‪ for‬على مجموعة‬
‫‪for N in $NAMES; do‬‬ ‫ثابتة من العناصر أو حروف‬
‫”‪echo “Hello $N‬‬ ‫‪ glob‬مثل قائمة من الملفات أو‬
‫قائمة بأسماء الخوادم‬
‫‪done‬‬
‫‪for FILE in *; do‬‬
‫‪ls –l $FILE‬‬
‫‪done‬‬

‫عبدهللا القحطاني‬
‫‪While loops‬‬
‫‪while [ ! –f /tmp/foo ]; do‬‬ ‫• تعمل حلقات ‪ while‬عن طريق‬
‫‪try_to_make_foo #‬‬ ‫اختبار شرط الحلقة في كل مرة‬
‫‪makes /tmp/foo on‬‬ ‫• تستخدم عندما يكون عدد‬
‫‪success‬‬ ‫الدورات غير معلوم أو يتغير‬
‫‪sleep 1 # wait 1 sec‬‬ ‫في كل دورة‬
‫‪done‬‬

‫عبدهللا القحطاني‬
‫الوحدة العاشرة‬
‫فهم المكونات المادية للكمبيوتر‬

‫‪Module 10‬‬
‫‪Understanding Computer Hardware‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 4.2‬فهم المكونات المادية للكمبيوتر‬
‫• ملخص األهداف‬
‫– البحث في المكونات المادية للكمبيوتر‬

‫عبدهللا القحطاني‬
‫عرض معلومات وحدة المعالجة المركزية‬

‫‪Viewing CPU Information‬‬

‫عبدهللا القحطاني‬
‫المعالجات‬
‫‪Processors‬‬
‫وحدة المعالجة المركزية (‪ )CPU or Processor‬تقوم بتنفيذ‬ ‫•‬
‫القرارات والعمليات الحسابية الخاصة بنظام التشغيل‬
‫‪ CPU‬مرتبط بالمكونات المادية األخرى عن طريق اللوحة‬ ‫•‬
‫األم‬
‫متعدد المعالجات (‪ )Multiprocessor‬تعني نظام مع أكثر‬ ‫•‬
‫من معالج‬
‫متعدد األنوية (‪ )Multi-core‬تعني أكثر من معالج في رقاقة‬ ‫•‬
‫واحدة‬

‫عبدهللا القحطاني‬
‫)‪Processors (continued‬‬
‫• هناك نوعان من المعالجات هما‬
‫– )‪x86 (32 bit‬‬
‫– )‪x86_64 (64 bit‬‬
‫• ‪ X86‬اخترعت في عام ‪1978‬م بينما ‪ x86_64‬اخترعت في‬
‫عام ‪2000‬‬
‫• ‪ X86‬هو ذو امكانيات محدودة فالذاكرة تكون بحجم ‪4GB‬‬
‫كحد أقصى‬
‫• ‪ x86_64‬يملك دعم للبرامج محدود‬

‫عبدهللا القحطاني‬
‫عرض معلومات ‪CPU‬‬
‫‪Viewing CPU Information‬‬
‫• الستعراض معلومات ‪ CPU‬نستخدم واحد من األوامر التالية‬
‫– ‪arch‬‬
‫– ‪lspcu‬‬
‫– ‪cat /proc/cpuinfo‬‬
‫• الملف ‪ /proc/cpuinfo‬يحتوي على األعالم التي‬
‫تصف مميزات المعالج الرئيسة‬

‫عبدهللا القحطاني‬
‫معلومات النظام‬

‫‪System Information‬‬

‫عبدهللا القحطاني‬
‫اللوحات األم والنواقل‬
‫‪Motherboards and Buses‬‬
‫• المكونات المادية تتصل مع بعضها من خالل اللوحات األم أو‬
‫النواقل‬
‫• نظام المدخالت والمخرجات الرئيسي (‪ )BIOS‬هو ما‬
‫تستخدمه المكونات المادية لالتصال‬
‫• نظام ادارة ‪ BIOS‬والذي يسمى (‪ )SMBIOS‬هو المعيار‬
‫الذي يحدد هياكل بناء البيانات الخاصة باالتصاالت‬

‫عبدهللا القحطاني‬
Motherboards and Buses (cont)
SMBIOS ‫ يعرض معلومات‬dmidecode ‫• األمر‬

‫عبدهللا القحطاني‬
‫ذاكرة ‪RAM‬‬
‫• ذاكرة الوصول العشوائي (‪ )RAM‬هي المكان الذي يتم فيه‬
‫تخزين بيانات البرامج والنظام أثناء التشغيل‬
‫• الذاكرة التخيلية (‪ )swap space‬هي المساحة المستخدمة من‬
‫القرص الصلب كذاكرة عندما تكون ذاكرة ‪ RAM‬منخفضة‬
‫• األمر ‪ free‬يستطيع عرض معلومات الذاكرة المستخدمة‬

‫عبدهللا القحطاني‬
‫األجهزة الطرفية‬

‫‪Peripheral Devices‬‬

‫عبدهللا القحطاني‬
‫األجهزة الطرفية‬
‫‪Peripheral Devices‬‬
‫• االجهزة الطرفية هي األجهزة التي ال تتصل باللوحة األم‬
‫بشكل مباشر‬
‫• هناك نوعان من هذه األجهزة هما‪:‬‬
‫‪Peripheral Component‬‬ ‫– المكونات الطرفية المتصلة‬
‫)‪Interconnect (PCI‬‬
‫– الناقل التسلسلي العالمي )‪Universal Serial Bus (USB‬‬

‫عبدهللا القحطاني‬
‫أجهزة ‪PCI‬‬
‫‪PCI Devices‬‬
‫• يستخدم األمر ‪ lspci‬لعرض أجهزة ‪PCI‬‬

‫عبدهللا القحطاني‬
‫أجهزة ‪USB‬‬
‫‪USB Devices‬‬
‫• تعد أجهزة ‪ USB‬أجهزة اتصال سريع ألنه يمكن اضافتها الى‬
‫النظام بينما هو يعمل‬
‫• يستخدم األمر ‪ lsusb‬لعرض أجهزة ‪USB‬‬

‫• يستخدم الخيار ‪ –v‬للحصول على معلومات مطولة أكثر‬

‫عبدهللا القحطاني‬
‫‪HAL‬‬
‫• الطبقة التجريدية لألجهزة ‪Hardware Abstraction Layer‬‬
‫)‪ (HAL‬تحفظ مسار كل المكونات المادية للنظام‬
‫• عملية ‪ hald‬الخفية تزود البرامج األخرى بهذه المعلومات‬
‫• يستخدم األمر ‪ lshal‬لعرض بيانات ‪HAL‬‬

‫عبدهللا القحطاني‬
‫أجهزة القرص‬
‫‪Disk Devices‬‬
‫تدعى أيضا باألقراص الصلبة‬ ‫•‬
‫يمكن ربطها باللوحة األم مباشرة باستخدام ‪ PCI‬أو ‪USB‬‬ ‫•‬
‫تجزأ الى أقسام‬ ‫•‬
‫هناك نوعان من األقسام‬ ‫•‬
‫– سجل االقالع الرئيسي )‪Master Boot Record (MBR‬‬
‫– جدول األقسام )‪GUID Partitioning Table (GPT‬‬

‫عبدهللا القحطاني‬
‫سجالت االقالع‬

‫‪Boot Records‬‬

‫عبدهللا القحطاني‬
‫‪MBR‬‬
‫• التقنية القديمة‬
‫• ما تزال تستخدم بشكل شائع‬
‫• األدوات التي تستخدم لعرض وتعديل أقسام ‪MBR‬‬
‫– ‪fdisk‬‬
‫– ‪cfdisk‬‬
‫– ‪sfdisk‬‬

‫عبدهللا القحطاني‬
‫‪GPT‬‬
‫• التقنية الحديثة‬
‫• تسمح بإنشاء أقسام أكبر حجما وأكثر عددا من أقسام ‪MBR‬‬
‫• األدوات التي تستخدم لعرض وتعديل أقسام ‪GPT‬‬
‫– ‪gdisk‬‬
‫– ‪cgdisk‬‬
‫– ‪sgdisk‬‬

‫عبدهللا القحطاني‬
‫أسماء الجهاز‬
‫‪Device Names‬‬
‫مشغالت ‪ IDE‬تُعطى أسماء ملفات تبدأ بالحرفين ‪ hd‬وتخزن في‬ ‫•‬
‫الدليل ‪/dev‬‬
‫مشغالت ‪ USB‬و ‪ SATA‬و ‪ SCSI‬تُعطى أسماء تبدأ بالحرفين ‪sd‬‬ ‫•‬
‫المشغل األول يُعطى الحرف ‪ a‬والثاني يُعطى الحرف ‪ b‬وهكذا‬ ‫•‬
‫مثال‬ ‫•‬
‫– ‪First IDE drive: /dev/hda‬‬
‫– ‪First SATA drive: /dev/sda‬‬
‫– ‪Second IDE drive: /dev/hdb‬‬

‫عبدهللا القحطاني‬
‫سجالت األقسام‬

‫‪Partition Records‬‬

‫عبدهللا القحطاني‬
‫أسماء القسم‬
Partition Names
‫ وهكذا‬1،2،3 ‫• األقسام تُعطى قيم عددية مثل‬
‫• مثال‬
First partition of first IDE drive: /dev/hda1 –
Second partition of second SATA drive: /dev/sdb2 –
‫• عرض األقسام واألقراص على النظام‬

‫عبدهللا القحطاني‬
‫عرض معلومات القسم‬
‫‪View Partition Information‬‬
‫• الخيار ‪ –l‬مع األمر ‪ fdisk‬يمكن أن يستخدم لعرض‬
‫معلومات القسم‬

‫عبدهللا القحطاني‬
‫أجهزة عرض الفيديو‬
‫‪Video Display Devices‬‬
‫• ال يوجد معيار للفيديو يتطلب مشغالت خاصة لكروت الفيدو‬
‫الخاصة‬
‫• هناك نوعان من الربط‬
‫– )‪Video Graphics Array (VGA‬‬
‫– )‪Digital Visual Interface (DVI‬‬
‫• كال الشاشة وكرت الفيديو يجب أن يدعم وضوح محدد‬
‫• عادة خادم ‪ X.org‬يحدد الوضوح المناسب‬
‫• ملف التهيئة هو ‪/etc/X11/xorg.conf‬‬
‫عبدهللا القحطاني‬
‫الوحدة الحادية عشرة‬
‫إدارة الحزم والعمليات‬

‫‪Module 11‬‬
‫‪Managing Packages and Processes‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 4.3‬أين تخزن البيانات‬
‫• ملخص األهداف‬
‫– فهم النواة والعمليات‬
‫– أدوات السجل مثل ‪ syslog‬و ‪ klog‬و ‪dmesg‬‬
‫– مسارات تخزين المعلومات‬

‫عبدهللا القحطاني‬
‫العمل مع إدارة الحزم‬

‫‪Working with Package Management‬‬

‫عبدهللا القحطاني‬
‫إدارة الحزم‬
‫‪Package Management‬‬
‫• إدارة الحزم هو نظام لتركيب وتهيئة وتحديث واالستعالم عن‬
‫وحذف البرمجيات من نظام التشغيل لينكس‬
‫• أنظمة إدارة الحزم تتأكد من وظائف البرمجيات من خالل‬
‫تتبع المتطلبات السابقة أو اعتماد الحزم على بعضها البعض‬
‫• هناك العديد من أنظمة إدارة الحزم المتاحة لكن اثنين تهيمن‬
‫على المشهد في نظام التشغيل لينكس هما‬
‫– ‪Debian Package Management‬‬
‫– ‪RPM Package Management‬‬

‫عبدهللا القحطاني‬
‫‪Debian Package Management‬‬
‫تستخدم من قبل توزيعة ‪ Debian‬ومشتقاتها المشهورة مثل ‪ Ubuntu‬و‬ ‫•‬
‫‪Mint‬‬
‫يتم توزيع حزمة البرامج كملف "‪ ".deb‬الذي يحتوي على الملفات‬ ‫•‬
‫والمعلومات الوصفية للحزمة‬
‫األداة ذات المستوى األقل (أمر ‪ )back-end‬هي ‪dpkg‬‬ ‫•‬
‫تشمل أدوات الطرف األمامي لسطر األوامر (‪ )front-end‬ما يلي‬ ‫•‬
‫– ‪apt-get‬‬
‫– ‪aptitude‬‬
‫• تشمل أدوات ‪ GUI‬للطرف األمامي (‪)front-end‬‬
‫– ‪synaptic‬‬
‫– ‪software-center‬‬

‫عبدهللا القحطاني‬
‫اضافة حزم (‪)Debian‬‬
‫)‪Adding Packages (Debian‬‬
‫• أوال التأكد من قائمة الحزم الموجودة حاليا بتنفيذ األمر‬
‫– ‪sudo apt-cache update‬‬
‫• ثانيا البحث عن حزمة معينة بتنفيذ األمر‬
‫– ‪sudo apt-cache search keyword‬‬
‫• ثالثا تحميل وتركيب حزمة بتنفيذ األمر‬
‫– ‪sudo apt-get install package‬‬
‫• بسبب اعتماد بعض الحزم على بعضها‪ ،‬إذا كان هناك رغبة‬
‫في تحميل حزمة واحدة فال بد من تحميل الحزم األخرى التي‬
‫تعتمد عليها هذه الحزمة ان وجدت‬
‫عبدهللا القحطاني‬
‫تحديث حزم )‪(Debian‬‬
‫)‪Updating Packages (Debian‬‬
‫• لتحديث حزمة واحدة‪ ،‬فإنه يتم تنفيذ األمر الذي سيقوم بتثبيت‬
‫هذه الحزمة‬
‫– ‪sudo apt-get install package‬‬
‫• لتحديث كافة الحزم‪ ،‬سيتم تنفيذ األمر‬
‫– ‪sudo apt-get upgrade‬‬
‫• المستخدمون عند تسجيلهم الدخول للنظام من خالل الواجهة‬
‫الرسومية للدخول سيالحظون اخطارات التحديث من خالل‬
‫‪update-manager‬‬

‫عبدهللا القحطاني‬
‫حذف حزم )‪(Debian‬‬
‫)‪Removing Packages (Debian‬‬
‫• اذا رغب المستخدم في ازالة احدى الحزم فانه قد ينتهي به األمر‬
‫إلى إزالة الحزم األخرى التي تعتمد عليها هذه الحزمة‬
‫• اذا كان المستخدم يرغب في ازالة كافة الملفات الخاصة بحزمة‬
‫برنامج باستثناء ملفات التهيئة فانه ينفذ األمر التالي‬
‫– ‪sudo apt-get remove package‬‬
‫• اذا كان المستخدم يرغب في ازالة كافة الملفات الخاصة بحزمة‬
‫برنامج بما في ذلك ملفات التهيئة فانه ينفذ األمر التالي‬
‫– ‪sudo apt-get --purge remove package‬‬

‫عبدهللا القحطاني‬
‫االستعالم عن حزم )‪(Debian‬‬
‫)‪Querying Packages (Debian‬‬
‫• للحصول على قائمة بكل الحزم المثبتة يتم تنفيذ األمر‬
‫– ‪dpkg -l‬‬
‫• لسرد كل الملفات الخاصة بحزمة معينة ينفذ األمر‬
‫– ‪dpkg -L package‬‬
‫• لالستعالم عن معلومات حزمة ما ومعرفة حالتها ينفذ األمر‬
‫– ‪dpkg -s package‬‬
‫• لتحديد ما إذا تم توفير الملف عن طريق حزمة ما ينفذ األمر‬
‫– ‪dpkg -S /path/to/file‬‬

‫عبدهللا القحطاني‬
‫ادارة حزم ‪RPM‬‬

‫‪RPM-based Management‬‬

‫عبدهللا القحطاني‬
‫ادارة حزم ‪RPM‬‬
‫‪RPM Package Management‬‬
‫قاعدة معايير لينكس‪ ،‬وهو مشروع مؤسسة لينكس‪ ،‬يتطور من‬ ‫•‬
‫خالل االتفاق على مجموعة من المعايير التي تزيد من التوافقية‬
‫بين أنظمة تشغيل لينكس‬
‫وفقا قاعدة معايير لينكس‪ ،‬فإن معيار نظام ادارة الحزمة يسمى‬ ‫•‬
‫‪ RPM‬أو ادارة حزمة ‪RPM‬‬
‫ادارة حزمة ‪ RPM‬تعبر اعتماد الحزم على بعضها البعض‬ ‫•‬
‫والذي طور من قبل ‪RedHat‬‬
‫التوزيعات المستمدة من ‪ RedHat‬مثل )‪(Centos - Fedora‬‬ ‫•‬
‫والتي ليست كذلك مثل )‪(SUSE - OpenSUSE - Mandriva‬‬
‫كلها تستخدم ‪RPM‬‬
‫عبدهللا القحطاني‬
‫‪RPM Package Management‬‬
‫في المستوى المنخفض‪ ،‬أداة الطرف الخلفي ‪ back-end‬إلدارة‬ ‫•‬
‫حزمة ‪ RPM‬هي أمر ‪rpm‬‬
‫أداة الطرف األمامي ‪ front-end‬سطر األوامر تتضمن ‪ yum‬و‬ ‫•‬
‫‪ up2date‬والتي تستطيع تنفيذ حلول اعتمادية الحزم على‬
‫بعضها البعض بشكل تلقائي‬
‫أدوات الطرف األمامي ‪ front-end‬الرسومية مثل ‪ yumex‬و‬ ‫•‬
‫‪ gpk-application‬تبسط عملية إدارة الحزم‬
‫األوامر التي تستخدم لالستعالم عن الحزم يمكن أن يقوم بها أي‬ ‫•‬
‫مستخدم‬
‫األوامر التي تستخدم لتثبيت‪ ،‬تحديث أو إزالة حزم النظام يجب‬ ‫•‬
‫أن يتم تنفيذها مع امتيازات الجذر ‪root‬‬
‫عبدهللا القحطاني‬
‫اضافة وتحديث حزم ‪RPM‬‬
‫)‪Adding/Updating Packages (RPM‬‬
‫• للبحث عن الحزمة المراد تحميلها يتم تنفيذ األمر‬
‫– ‪yum search keyword‬‬
‫• لتحميل الحزمة والحزم المعتمدة عليها يتم تنفيذ األمر‬
‫– ‪yum install package‬‬
‫• لتحميل التحديث الخاص بحزمة واحدة فقط يتم تنفيذ األمر‬
‫– ‪yum update package‬‬
‫• لتحديث كل الحزم ينفذ األمر‬
‫– ‪yum update‬‬
‫• اذا كانت التحديثات متوفرة عندما يكون المستخدم يستخدم واجهة الدخول‬
‫الرسومية فإنها ستظهر رسالة اعالم في منطقة االعالنات تخبره بوجود‬
‫تحديثات جديدة وذلك من خالل ‪gpk-update-viewer‬‬

‫عبدهللا القحطاني‬
‫ازالة حزم ‪RPM‬‬
‫)‪Removing Packages (RPM‬‬
‫• اذا كان المستخدم يرغب في ازالة حزمة باستخدام األمر‬
‫‪ rpm‬فإنه قد يحتاج الى بقية الحزم يدويا وذلك بسبب اعتماد‬
‫بعض الحزم على بعضها البعض‬
‫• إلزالة حزمة والحزم المعتمدة عليها ينفذ األمر‬
‫– ‪yum remove package‬‬

‫عبدهللا القحطاني‬
‫االستعالم عن حزم ‪RPM‬‬
‫)‪Querying Packages (RPM‬‬
‫• بينما يمكن تنفيذ االستعالمات باستخدام األمر ‪ yum‬أال أن‬
‫األمر ‪ rpm‬سيعمل بشكل أسرع نظرا ألنه يستخدم قاعدة‬
‫البيانات المحلية عوضا عن القيام باالتصال عبر الشبكة‬
‫بمستودعات البرامج‬

‫عبدهللا القحطاني‬
‫)‪Querying Packages (RPM‬‬
‫• للحصول على قائمة بكل الحزم المثبتة ينفذ األمر‬
‫– ‪rpm -qa‬‬
‫• للحصول على قائمة بالملفات المتعلقة بحزمة ما ينفذ األمر‬
‫– ‪rpm -ql package‬‬
‫• لالستعالم عن معلومات حزمة معينة وحالتها ينفذ األمر‬
‫– ‪rpm -qi package‬‬
‫• لتحديد ما اذا كان الملف ينتمي الى حزمة معينة ينفذ األمر‬
‫– ‪rpm -qf /path/to/file‬‬

‫عبدهللا القحطاني‬
‫فهم العمليات‬

‫‪Understanding Processes‬‬

‫عبدهللا القحطاني‬
‫نواة لينكس‬
‫‪The Linux Kernel‬‬
‫عندما يشير معظم الناس إلى لينكس‪ ،‬فإنهم يشيرون فعليا نظام‬ ‫•‬
‫التشغيل ‪GNU/Linux‬‬
‫‪ GNU‬توفر المصدر المفتوح المكافئ ألكثر أوامر ‪UNIX‬شيوعا‬ ‫•‬
‫مثل ‪passwd – cp – ls‬‬
‫‪ Linux‬هو قلب نظام التشغيل‪ ،‬النواة ‪ ،Kernel‬التي تدير كل‬ ‫•‬
‫جوانب نظام التشغيل‬
‫المهام الرئيسية لنواة لينكس تشمل‬ ‫•‬
‫– ادارة اقالع نظام التشغيل‪ ،‬العمليات‪ ،‬الذاكرة‪ ،‬نظام الملفات‪ ،‬الشبكة‬
‫ومشغالت األجهزة‬
‫– قبول األوامر من المستخدم وإدارة العمليات التي تحمل تلك األوامر‬
‫بالوصول الى األجهزة المختلفة‬

‫عبدهللا القحطاني‬
‫الدليل ‪/proc‬‬
‫‪The /proc directory‬‬
‫• الدليل ‪ /proc‬يحتوي على نظام الملفات المستعار الذي يحتوي‬
‫على عدة أنواع من المعلومات‪:‬‬
‫– األدلة التي تملك أسماء تطابق معرف العمليات ‪ PID‬في النظام والتي‬
‫تحوي على ملفات عديدة تتضمن معلومات حول العملية‬
‫– ملفات مثل ‪ cmdline - meminfo - modules‬والتي تحوي‬
‫معلومات عن النظام‬
‫– الملفات في الدليل ‪ /proc/sys‬والتي تخصص للكتابة من قبل‬
‫المستخدم ‪ root‬وتستطيع القيام بالتغيير الفوري للطريقة التي تعمل بها‬
‫النواة‬
‫• لجعل التغييرات دائمة‪ ،‬يتم اضافة هذه التغييرات بداخل الملف‬
‫‪/etc/sysctl.conf‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي للعملية‬
‫‪Process Hierarchy‬‬
‫بعد أن تنتهي النواة ‪ Kernel‬من التحميل‪ ،‬يبدأ تشغيل أول‬ ‫•‬
‫عملية (عادة ‪ )/sbin/init‬وتعطى المعرف ‪ PID‬رقم ‪1‬‬
‫كل عملية اضافية بدأ تشغيلها تحصل على معرف ‪ PID‬بشكل‬ ‫•‬
‫تسلسلي‬
‫عندما ‪ /sbin/init‬تبدأ بتشغيل عمليات أخرى فإنها‬ ‫•‬
‫تعتبر العملية األب ‪parent‬‬
‫شغلت بواسطة عملية سابقة تسمى‬ ‫العمليات األخرى التي ُ‬ ‫•‬
‫االبن ‪child‬‬

‫عبدهللا القحطاني‬
‫‪Process Hierarchy‬‬
‫• عندما يتم تشغيل النظام لفترة طويلة وكفاية‪ ،‬فإنه قد يصل في‬
‫النهاية إلى قيمة ‪ PID‬القصوى‪ ،‬والتي يمكن عرضها وتهيئتها‬
‫من خالل ‪/proc/sys/kernel/pid_max‬‬
‫• عندما يتم استخدام أكبر قيمة ‪ ،PID‬فإن النظام يعيد ويسترجع‬
‫تعيين قيم ‪ PID‬المتوفرة في الجزء السفلي من النطاق‬

‫عبدهللا القحطاني‬
‫عرض التسلسل الهرمي للعملية‬
‫‪Viewing the Process Hierarchy‬‬
‫• األمر ‪ pstree‬يعرض التسلسل الهرمي للعملية مع‬
‫رسومات نصية‬

‫عبدهللا القحطاني‬
‫مثال على التسلسل الهرمي للعملية‬
‫‪An Example of Process Hierarchy‬‬
‫• بالنظر إلى العالقات بين األب واالبن والمضمنة في تنفيذ‬
‫األمر ‪ ،pstree‬فإن النظرة تشابه‪:‬‬
‫‪init‬‬

‫‪login‬‬

‫‪bash‬‬

‫‪pstree‬‬

‫عبدهللا القحطاني‬
‫األمر ‪ps‬‬
‫‪The Process (ps) Command‬‬
‫• افتراضيا‪ ،‬األمر ‪ ps‬سوف يعرض فقط العمليات التي تعمل‬
‫حاليا في الشل‬
‫• الخيار ‪ ps --forest‬سوف يعرض األسطر لإلشارة‬
‫الى عالقات اآلباء واألبناء‪ ،‬يشبه األمر ‪pstree‬‬
‫• األمر ‪ ps‬يقبل ثالثة أنواع من الخيارات‪:‬‬
‫– خيارات اليونكس التقليدية والتي تُعطى مع شَرطة واحدة‬
‫– خيارات ‪ BSD‬والتي تُعطى بدون أي شَرطة‬
‫– خيارات ‪ GNU‬والتي تُعطى مع شرطتان‬

‫عبدهللا القحطاني‬
‫عرض جميع العمليات‬
‫‪Viewing All Processes‬‬
‫• لعرض كل العمليات ينفذ األمر ‪ ps aux‬أو ‪ps –ef‬‬
‫• منذ أن تظهر المئات من العمليات بشكل طبيعي‪ ،‬فإن وصل‬
‫‪ piping‬المخرجات بأمر ‪ grep‬سيكون مفيد إليجاد‬
‫المعلومات حول عملية معينة‬

‫‪$ ps -ef | grep firefox‬‬


‫‪sysadmin 4048 2380 10 16:37 pts/0 00:00:01 /usr/lib/firefox/firefox‬‬
‫‪sysadmin 4096 2380 0 16:38 pts/0 00:00:00 grep firefox‬‬

‫عبدهللا القحطاني‬
‫مراقبة النظام‬

‫‪Monitoring the system‬‬

‫عبدهللا القحطاني‬
‫األمر ‪top‬‬
‫‪The top Command‬‬
‫• األمر ‪ top‬مفيد جدا‬
‫لمراقبة الوقت الفعلي‬
‫للعمليات‪ ،‬تحميل النظام‪،‬‬
‫استخدام ‪ CPU‬واستخدام‬
‫الذاكرة‬
‫• افتراضيا‪ ،‬األمر ‪top‬‬
‫يرتب العمليات بناء على‬
‫‪%CPU‬‬

‫عبدهللا القحطاني‬
‫‪Controlling top‬‬
‫المعنى‬ ‫المفتاح‬
‫مساعدة‬ ‫)?( ‪h‬‬
‫احصائيات التحميل‬ ‫‪l‬‬
‫احصائيات الوقت‬ ‫‪t‬‬
‫احصائيات استخدام الذاكرة‬ ‫‪m‬‬
‫نقل الحقل المرتب لليسار‬ ‫<‬
‫نقل الحقل المرتب لليمين‬ ‫>‬
‫اختيار الحقل المرتب‬ ‫‪F‬‬
‫اتجاه الفرز‬ ‫‪R‬‬
‫فرز حسب ‪%CPU‬‬ ‫‪P‬‬
‫فرز حسب نسبة استخدام الذاكرة‬ ‫‪M‬‬
‫ايقاف العملية (أو ارسال اشارة)‬ ‫‪k‬‬
‫أولوية العمليات‬ ‫‪r‬‬
‫عبدهللا القحطاني‬
‫معدالت التحميل‬
‫‪Load Averages‬‬
‫• على غرار مخرجات األمر ‪ uptime‬أول سطر من‬
‫مخرجات األمر ‪ top‬يظهر الوقت الحالي‪ ،‬مقدار وقت‬
‫تشغيل النظام و ومعدالت التحميل الثالث على النظام‬
‫• الدقيقة‪ ،‬الخمس دقائق و الخمسة عشرة دقيقة من معدالت‬
‫التحميل تعطي المسؤول فكرة عن الحمل الحالي وكيف تم‬
‫توجيهه خالل الفترة األخيرة‬

‫عبدهللا القحطاني‬
‫‪Load Averages‬‬
‫• الرقم المعروض لمعدالت التحميل يتناسب مع عدد أنوية‬
‫‪ CPU‬في النظام‬
‫– معدل التحميل يساوي صفر يعني أنه ال يوجد تحميل‬
‫– معدل التحميل يساوي عدد أنوية ‪ CPU‬يشير الى نظام محمل‬
‫بالكامل‬
‫– عدد أعلى من مجموع أنوية ‪ CPU‬يشير الى أن النظام تجاوز حد‬
‫التحميل‬

‫عبدهللا القحطاني‬
‫األمر ‪free‬‬
‫‪The free Command‬‬
‫• األمر ‪ free‬يستخدم لعرض احصائيات استخدام الذاكرة‬
‫• استخدام الخيار ‪ –s‬مع األمر ‪ free‬يسمح بتحديد عدد الثواني‬
‫بين التحديثات‬
‫• افتراضيا‪ ،‬األمر ‪ free‬يعرض القيم بالبايت لكن استخدام‬
‫الخيارات ‪ –m‬و ‪ –g‬سيعرض القيم بالميغابايت والجيجابايت‬
‫‪$ free‬‬
‫‪total‬‬ ‫‪used‬‬ ‫‪free shared buffers cached‬‬
‫‪Mem:‬‬ ‫‪510984‬‬ ‫‪495280 15704‬‬ ‫‪0 60436 258988‬‬
‫‪-/+ buffers/cache:‬‬ ‫‪175856 335128‬‬
‫‪Swap: 1048568‬‬ ‫‪0 1048568‬‬

‫عبدهللا القحطاني‬
‫العمل مع ملفات السجل‬

‫‪Working with log files‬‬

‫عبدهللا القحطاني‬
‫ملفات السجل‬
‫‪Log Files‬‬
‫المخرجات المنتجة من قبل النواة وعمليات النظام ترسل الى‬ ‫•‬
‫ملفات السجل‬
‫بعض العمليات(مثل خادم الويب اباتشي) ستقوم بالتسجيل‬ ‫•‬
‫المستقل‬
‫النواة ومعظم العمليات في الخلفية تعتمد على عمليات التسجيل‬ ‫•‬
‫المستقلة لتسجيل نشاطهم‬
‫عادة يتم استخدام ‪ syslogd‬و ‪ klogd‬إلى تسجيل النظام‬ ‫•‬
‫ونشاط النواة‪ ،‬على التوالي‬
‫تسجيل العمليات األخرى يتضمن ‪ rsyslogd‬ال ُمستخ َدم من‬ ‫•‬
‫قبل ‪ Centos‬و ‪ RedHat‬بينما ‪systemd-journald‬‬
‫يستخدم من قبل ‪Fedora‬‬
‫عبدهللا القحطاني‬
‫ملفات ‪/var/log‬‬
‫‪/var/log Files‬‬
‫المحتوى‬ ‫الملف‬
‫والت بدأت بالعمل خالل عملية اقالع‬‫الرسائل المنتجة كخدمات ي‬ ‫‪boot.log‬‬
‫النظام‬
‫الت‬
‫الرسائل المنتجة بواسطة عمليات ‪ crond‬المخفية للوظائف ي‬ ‫‪cron‬‬
‫يتم تنفيذها عىل أساس متكرر‬
‫رسائل النواة المنتجة أثناء اقالع (تمهيد) النظام‬ ‫‪dmesg‬‬
‫البيد‬
‫البيد المخفية لرسائل ر‬‫عمليات ر‬ ‫الرسائل المنتجة بواسطة‬ ‫‪maillog‬‬
‫َ‬ ‫َ‬
‫ون المرسلة والمستقبلة‬ ‫االلكب ي‬
‫تنتم اىل ملفات‬
‫ي‬ ‫الت ال‬
‫وغبها من العمليات ي‬ ‫‪ messages‬رسائل من النواة ر‬
‫السجل األخرى‬ ‫‪/ syslog‬‬
‫الت تحتاج اىل موافقة أو مصادقة‬‫رسائل من العمليات ي‬ ‫‪secure‬‬
‫‪ Xorg.0.log‬رسائل من خادم النوافذ ‪( X‬واجهة المستخدم الرسومية)‪.‬‬

‫عبدهللا القحطاني‬
‫تدوير ملف السجل‬
‫‪Log File Rotation‬‬
‫• ملفات السجل يتم تدويرها لجعلها أسهل للتحليل ولمنعها من‬
‫أن تصبح كبيرة الحجم (تعبئة نظام الملفات)‬
‫• على سبيل المثال‪ :‬السجل المخفي قد يوقف الكتابة في الملف‬
‫‪ /var/log/messages‬ويعيد تسمية الملف الى‬
‫‪/var/log/messages-20131103‬‬
‫(‪ 20131103‬هو التاريخ الحالي) ومن ثم يعود للكتابة في‬
‫الملف ‪ /var/log/messages‬مرة أخرى‬
‫• بعد عدد معين من الدورات‪ ،‬عادة أربعة‪ ،‬يتم حذف ملف‬
‫السجل األقدم كما يتم إنشاء ملف سجل جديد‪.‬‬

‫عبدهللا القحطاني‬
‫عرض ملفات السجل‬
‫‪Viewing Log Files‬‬
‫• معظم ملفات السجل تتطلب امتيازات الجذر ‪ root‬لكي يتم‬
‫الوصول إلى محتوياتها‬
‫• معظم ملفات السجل تحتوي على نص ويمكن عرضها باستخدام‬
‫أي أمر يعرض النص‪ ،‬لكن البعض منها تحوي بيانات ثنائية‬
‫• باستخدام األمر ‪ file‬يمكن التأكد من أن الملف يحتوي على‬
‫نص أو ال‬
‫‪$ sudo file /var/log/messages‬‬
‫‪/var/log/messages: ASCII English text, with very long lines‬‬
‫‪$ sudo file /var/log/btmp‬‬
‫‪/var/log/btmp: data‬‬

‫عبدهللا القحطاني‬
‫العمل مع ‪dmesg‬‬

‫‪Working with dmesg‬‬

‫عبدهللا القحطاني‬
‫األمر ‪dmesg‬‬
‫‪The dmesg Command‬‬
‫• المخزن المؤقت الحلقي للنواة هو ذاكرة تستخدم لتحتفظ بالرسائل التي‬
‫تولدها النواة‬
‫• الملف ‪ /var/log/dmesg‬يستخدم من قبل بعض التوزيعات‬
‫لالحتفاظ برسائل النواة التي انتجت خالل االقالع‬
‫• رسائل النواة توجد في الملف ‪ /var/log/messages‬أو الملف‬
‫‪/var/log/syslog‬‬
‫أو‬ ‫‪/etc/syslog.conf‬‬ ‫• الملفان‬
‫‪/etc/rsyslog.conf‬يمكن استخدامهما لتهيئة سجل رسائل‬
‫النواة كملف منفصل‬
‫• استخدام األمر ‪ dmesg‬لعرض محتوى المخزن المؤقت الحلقي للنواة‬
‫قد يكون مفيدا الكتشاف اخطاء المكونات المادية وإصالحها أو غيرها‬
‫من قضايا النواة ذات الصلة‬

‫عبدهللا القحطاني‬
‫خيارات ‪dmesg‬‬
‫‪dmesg Options‬‬
‫المعنى‬ ‫الخيارات‬
‫بعد‬ ‫الحلقي‬ ‫المؤقت‬ ‫المخزن‬‫تنظيف‬ ‫‪-c‬‬
‫الطباعة‬
‫طباعة رسالة المخزن المؤقت األصلية‬ ‫‪-r‬‬
‫استخدم حجم المخزن المؤقت ‪ SIZE‬لالستعالم‬ ‫‪-s SIZE‬‬
‫عن المخزن المؤقت الحلقي للنواة‬

‫‪ LEVEL‬الذي يقوم‬ ‫تعيين المستوى إلى‬ ‫‪-n LEVEL‬‬


‫التحكم‪.‬‬ ‫وحدة‬ ‫إلى‬ ‫الدخول‬ ‫بتسجيل‬
‫يستخدم الخيار ‪ -n 1‬لمنع كل الرسائل ما‬
‫عدا رسائل الطوارئ من الطباعة الى‬
‫وحدة التحكم‬

‫عبدهللا القحطاني‬
‫الوحدة الثانية عشرة‬
‫تهيئة الشبكة‬

‫‪Module 12‬‬
‫‪Network Configuration‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 4.4‬كمبيوترك على الشبكة‬
‫• ملخص األهداف‬
‫– العمل مع االنترنت‪ ،‬الشبكة والموجهات‬
‫– خدمة اسم المجال ‪DNS‬‬
‫– تهيئة الشبكة‬

‫عبدهللا القحطاني‬
‫أساسيات الشبكة‬

‫‪Basic Networking‬‬

‫عبدهللا القحطاني‬
‫مصطلحات الشبكة الرئيسة‬
‫‪Basic Network terminology‬‬
‫المضيف ‪ – Host‬هو أي جهاز يتصل مع جهاز اخر عبر‬ ‫•‬
‫الشبكة‬
‫الشبكة ‪ – Network‬هي مجموعة من مضيفين أو أكثر‬ ‫•‬
‫(كمبيوترات) لها المقدرة على االتصال مع بعضها البعض‬
‫االنترنت ‪ – Internet‬هي شبكة متاحة للعامة والتي تربط‬ ‫•‬
‫الماليين من المضيفين في جميع أنحاء العالم‬
‫الشبكة الالسلكية ‪Wi-Fi‬‬ ‫•‬

‫عبدهللا القحطاني‬
‫)‪Basic Network terminology (cont‬‬
‫• الخادم‪/‬الخدمة ‪ - Server/Service‬عندما يوفر المضيف‬
‫ميزة إلى مضيف آخر‪ ،‬وتسمى هذه الميزة خدمة‪ .‬على سبيل‬
‫المثال‪ :‬يوفر خادم الويب خدمة صفحات الويب‪.‬‬
‫• العميل ‪ – Client‬هو المضيف الذي يقوم بالوصول الى‬
‫الخادم‬
‫• الموجه ‪ - Router‬ويعرف بالعبّارة االفتراضية ‪،gateway‬‬
‫وهو جهاز يقوم بربط المضيفين من الشبكة األولى مع شبكة‬
‫أخرى‬

‫عبدهللا القحطاني‬
Basic Network terminology (cont)

‫عبدهللا القحطاني‬
‫مصطلحات مميزات الشبكة‬
‫‪Networking Features Terminology‬‬
‫• حزمة الشبكة ‪ – Network packet‬تستخدم إلرسال‬
‫اتصاالت الشبكة بين المضيفين‬
‫• عنوان ‪ – )IP address( IP‬عنوان برتوكول االنترنت هو‬
‫رقم فريد يُعطى للمضيفين على الشبكة‬
‫• قناع الشبكة ‪( – Network mask‬يسمى أيضا ‪netmask‬‬
‫أو ‪ )mask‬وهو نظام رقمي يستخدم لتحديد أي عناوين ‪IP‬‬
‫تعتبر في شبكة واحدة‬

‫عبدهللا القحطاني‬
‫مصطلحات مميزات الشبكة‬
‫• اسم المضيف ‪ – Hostname‬أي مضيف يُعطى اسم مفهوم‬
‫للبشر‪ ،‬يسمى ‪ .Hostname‬أسماء المضيفين تترجم إلى‬
‫عناوين ‪ IP‬قبل أن يتم ارسال حزمة الشبكة عبر الشبكة‪.‬‬
‫• ‪ – DHCP‬المضيفون ممكن أن يحصلوا على أسماء‬
‫مضيفين‪ ،‬عناوين ‪ IP‬والمعلومات األخرى المتعلقة بالشبكة‬
‫عن طريق خادم ‪DHCP‬‬
‫• ‪ – DNS‬هو الخادم الذي يوفر خدمة تحويل عناوين ‪ IP‬إلى‬
‫أسماء المضيفين‬

‫عبدهللا القحطاني‬
‫مصطلحات مميزات الشبكة‬
‫• االيثرنت ‪ – Ethernet‬في بيئة الشبكة السلكية‪ ،‬اإليثرنت‬
‫هي الطريقة األكثر شيوعا لربط المضيفين فعليا داخل الشبكة‬
‫• ‪ – TCP/IP‬هو مجموعة البروتوكوالت (تذكر‪ ،‬بروتوكول =‬
‫مجموعة من القواعد) التي تستخدم لتحديد كيف ينبغي على‬
‫اتصاالت الشبكة أن تنتقل بين المضيفين‪.‬‬
‫‪– TCP/IP = Transmission Control Protocol/Internet Protocol‬‬

‫عبدهللا القحطاني‬
‫عنونة ‪IP‬‬

‫‪IP Addressing‬‬

‫عبدهللا القحطاني‬
‫‪IP addresses‬‬
‫يقوم المضيفون بعنونة حزم الشبكة باستخدام عنوان ‪IP‬‬ ‫•‬
‫الخاص بجهاز الوجهة‪.‬‬
‫هناك نوعان مختلفان من عناوين ‪ IP‬هما ‪ IPv4‬و ‪IPv6‬‬ ‫•‬
‫في عنوان ‪ ،IPv4‬العنوان يتكون من أربع مجموعات كل‬ ‫•‬
‫مجموعة "‪ 8‬بت" (‪ 8‬بت = أرقام ‪( )255-0‬على سبيل‬
‫المثال‪)192.168.10.120 :‬‬
‫في شبكة ‪ IPv6‬العناوين هي أكبر من ذلك بكثير‪ ،‬حيث‬ ‫•‬
‫تتكون العناوين من ‪ 128‬بت على سبيل المثال‬
‫‪2001:0db8:85a3:0042:1000:8a2e:0370:7334‬‬
‫عبدهللا القحطاني‬
‫تهيئة الشبكة‬

‫‪Configuring the Network‬‬

‫عبدهللا القحطاني‬
‫تهيئة أجهزة الشبكة‬
‫‪Configuring Network Devices‬‬
‫• هناك سؤاالن عن الشبكة البد من طرحهما‪:‬‬
‫– سلكية أو السلكية؟‬
‫– ‪ DHCP‬أو عنوان ثابت؟‬
‫• األجهزة المكتبية عادة تستخدم الشبكات السلكية وأجهزة‬
‫الالبتوب عادة تستخدم الشبكات الالسلكية‬
‫• عادة األجهزة السلكية تستخدم عناوين ثابتة بينما األجهزة‬
‫الالسلكية تستخدم ‪DHCP‬‬

‫عبدهللا القحطاني‬
‫تهيئة الشبكة باستخدام واجهة المستخدم الرسومية‬
Configuring the Network Using a GUI
• Click on
– System in the menu
bar, then
– Preferences and then
– Network Connections.

‫عبدهللا القحطاني‬
Configuring the Network
Using a GUI (cont)
• To modify this network
device, click on the
device name and then
click the Edit button.

‫عبدهللا القحطاني‬
Configuring the Network
Using a GUI (cont)
• If you click on the IPv4
Settings tab, you can
change key IPv4 values.

‫عبدهللا القحطاني‬
Configuring the Network
Using a GUI (cont)
• Click method to change from Manual to DHCP

‫عبدهللا القحطاني‬
‫تهيئة الشبكة باستخدام ملف التهيئة‬
Configuring the Network Using
Configuration Files
‫• الواجهة األساسية ملف التهيئة‬
– /etc/sysconfig/network-scripts/ifcfg-eth0

)static( ‫ الخاصة بمضيف ثابت‬IPv4 ‫• اعدادات‬


IPADDR (hosts IP address) –
GATEWAY (router’s IP address) –
DNS1 (DNS server’s IP address) –
DHCP ‫ الخاصة بمضيف عميل‬IPv4 ‫• اعدادات‬
BOOTPROTO set to “dhcp” –

‫عبدهللا القحطاني‬
‫‪Configuring the Network Using‬‬
‫)‪Configuration Files (cont‬‬
‫• ملفات تهيئة إضافية‬
‫الغرض‬ ‫الملف‬

‫‪ /etc/sysconfig/network‬اعدادات الشبكة وأسم المضيف‬

‫‪ /etc/resolv.conf‬اعدادات خادم ‪DNS‬‬

‫‪ /etc/hosts‬تحويل اسم المضيف المحلي الى عنوان ‪IP‬‬

‫يستخدم لتعديل أي اسم مضيف في خدمة‬


‫‪/etc/nsswitch.conf‬‬
‫تحويل عنوان ‪ IP‬لكي يستخدم‬

‫عبدهللا القحطاني‬
‫إعادة تشغيل الشبكة‬
‫‪Restarting the network‬‬
‫• بعد تغيير ملف تهيئة الشبكة‪ ،‬يحتاج المستخدم إما إلى إعادة‬
‫تشغيل الجهاز أو تشغيل األمر التالي كمدير للنظام لجعل‬
‫التغييرات نافذة المفعول‬
‫‪– service network restart‬‬

‫عبدهللا القحطاني‬
‫مرافق (أدوات) الشبكة‬

‫‪Network Utilities‬‬

‫عبدهللا القحطاني‬
‫أدوات الشبكة‬
‫‪Network Tools‬‬
‫الغرض‬ ‫األمر (األداة)‬
‫‪ ifconfig‬يعرض معلومات تكوين الواجهة‬
‫يعرض جدول التوجيه‬ ‫‪route‬‬
‫يستخدم لتحديد ما إذا كان الجهاز البعيد يمكن أن يتم‬
‫‪ping‬‬
‫االتصال به عبر الشبكة‬
‫‪ netstat‬يعرض احصاءات عن الشبكة‬
‫يعرض نتائج االستعالم من خادم ‪DNS‬‬ ‫‪dig‬‬
‫يمكن المستخدم من الدخول على الجهاز البعيد‬ ‫‪ssh‬‬

‫عبدهللا القحطاني‬
‫الوحدة الثالثة عشرة‬
‫أمن وحماية المستخدم والنظام‬

‫‪Module 13‬‬
‫‪System and User Security‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 4.4‬أساسيات األمن وتحديد أنواع المستخدمين‬
‫• ملخص األهداف‬
‫– العمل مع المستخدم ‪ Root‬والمستخدمين القياسيين‬
‫– نظام المستخدمين‬

‫عبدهللا القحطاني‬
‫حسابات المستخدمين وكلمات المرور‬

‫‪User accounts and passwords‬‬

‫عبدهللا القحطاني‬
‫حسابات المستخدمين‬
‫‪User accounts‬‬
‫• الملفات في الدليل ‪ /etc‬تحتوي على بيانات الحسابات‬
‫• الملف ‪ /etc/passwd‬يعرف بعضا من معلومات‬
‫الحساب الخاصة بحسابات المستخدمين‬

‫عبدهللا القحطاني‬
/etc/passwd ‫ملف‬
The /etc/passwd file
‫ يتعلق بحساب مستخدم‬/etc/passwd ‫• كل سطر من ملف‬
‫ الحقول من‬: ‫• كل سطر يتم فصله الى حقول باستخدام عالمة‬
:‫اليسار الى اليمين هي‬
• name:password placeholder:user id:primary group id:comment:home
directory:shell

‫عبدهللا القحطاني‬
‫‪The /etc/passwd file‬‬
‫الوصف‬ ‫مثال‬ ‫الحقل‬
‫اسم الحساب‬ ‫‪root‬‬ ‫االسم ‪Name‬‬
‫حقل كلمة المرور ويشير الحرف ‪ x‬الى ان كلمة المرور ليست‬ ‫كلمة المرور ‪password‬‬
‫‪x‬‬
‫مخزنة في الملف الحالي ولكن في ملف ‪/etc/shadow‬‬ ‫‪placeholder‬‬
‫كل حساب يكون له معرف )‪(UID‬‬ ‫‪0‬‬ ‫معرف المستخدم ‪user id‬‬
‫عندما ينشئ المستخدم ملف فان الملف يكون مملوكا لمجموعة‬ ‫رقم مجموعة المستخدم‬
‫‪0‬‬
‫المستخدم الرئيسة (‪)GID‬‬ ‫الرئيسة ‪primary group id‬‬
‫هذا الحقل ممكن يتضمن أن معلومة عن المستخدم بما في ذلك‬
‫‪root‬‬ ‫التعليقات ‪Comment‬‬
‫أسم المستخدم بالكامل وأي معلومات أخرى مفيدة‬
‫الدليل الرئيسي ‪home‬‬
‫هذا الحقل يحدد موقع الدليل الرئيس للمستخدم‬ ‫‪/root‬‬
‫‪directory‬‬
‫‪ /bin/bash‬هذا هو موقع شل الدخول الخاص بالمستخدم‬ ‫الشل ‪Shell‬‬

‫عبدهللا القحطاني‬
/etc/shadow ‫ملف‬
The /etc/shadow file
‫ يحوي معلومات الحساب المتعلقة‬/etc/shadow ‫• ملف‬
‫بكلمات مرور المستخدمين‬
‫ هي‬/etc/shadow ‫• حقول ملف‬
name:password:lastchange:min:max:warn:inactive:expire:reserved

‫عبدهللا القحطاني‬
‫‪The /etc/shadow file‬‬
‫الوصف‬ ‫مثال‬ ‫الحقل‬
‫‪ sysadmin‬اسم الحساب الذي يطابق الموجود في الملف ‪/etc/passwd‬‬ ‫االسم ‪name‬‬
‫‪ $6$......rl1‬حقل كلمة المرور الذي حوي كلمة المرور المشفرة للحساب‬ ‫كلمة المرور‬
‫‪password‬‬
‫هذا الحقل يحوي رقم يمثل آخر وقت تم فيه تغيير كلمة المرور‬ ‫‪15020‬‬ ‫اخر تغيير ‪last‬‬
‫‪change‬‬
‫كلمة المرور ال يمكن تغييرها إال بعد انقضاء مدة محددة من األيام‬ ‫‪5‬‬ ‫الحد األدنى ‪min‬‬
‫يستخدم هذا الحقل إلجبار المستخدمين على تغيير كلمات المرور الخاصة‬ ‫‪30‬‬ ‫الحد األقصى ‪max‬‬
‫بهم على أساس منتظم‬
‫إذا تم تعيين حقل ‪ max‬فان الحقل ‪ warn‬يقوم بإرسال رسالة تحذير‬ ‫‪7‬‬ ‫انذار ‪warn‬‬
‫للمستخدم عندما اإلطار الزمني ماكس يقترب‪.‬‬
‫يوفر الحقل ‪ inactive‬للمستخدمين فترة "سماح" تمكنهم من تغيير‬ ‫‪60‬‬ ‫غير نشط ‪inactive‬‬
‫كلمة المرور الخاصة بهم‬
‫الحقل يمثل عدد األيام من تاريخ ‪ 1/1/1970‬حتى يوم انتهاء الحساب‬ ‫‪15050‬‬ ‫االنتهاء ‪expire‬‬

‫عبدهللا القحطاني‬
‫عرض معلومات الحساب‬

‫‪Viewing Account Information‬‬

‫عبدهللا القحطاني‬
‫عرض معلومات الحساب‬
‫‪Viewing account information‬‬
‫• لعرض معلومات الحساب للمستخدم الذي اسمه ‪ sysadmin‬نستخدم‬
‫األمر ‪grep sysadmin /etc/passwd‬‬

‫• أو استخدام األمر ‪getent‬‬

‫عبدهللا القحطاني‬
‫عرض معلومات الدخول‬
‫‪Viewing login information‬‬
‫• ليتحقق المستخدم من هويته يمكنه تنفيذ األمر ‪id‬‬

‫عبدهللا القحطاني‬
‫حسابات النظام‬

‫‪System Accounts‬‬

‫عبدهللا القحطاني‬
‫حسابات النظام‬
‫‪System accounts‬‬
‫• حسابات النظام صممت لتوفر حسابات تقوم بالخدمات التي‬
‫يؤديها النظام‬
‫– تكون أرقام المعرفات ‪ UID‬بين ‪ 1‬و ‪499‬‬
‫– تملك قيمة فارغة لحقل الشل في ملف ‪/etc/passwd‬‬
‫– توضع العالمة * في حقل كلمة المرور في ملف‬
‫‪/etc/passwd‬‬
‫– معظمها ذات أهمية حاسمة لتشغيل النظام‬
‫– ال يتم حذف حساب النظام إال عندما يتم التأكد بنسبة ‪ ٪100‬من‬
‫عدم الحاجة إليه‬

‫عبدهللا القحطاني‬
‫مجموعات النظام‬

‫‪System Groups‬‬

‫عبدهللا القحطاني‬
‫مجموعات النظام‬
‫‪Group accounts‬‬
‫كل مستخدم يكون عضوا في مجموعة واحدة أو أكثر‬ ‫•‬
‫الملف ‪ /etc/passwd‬يعرف عضوية المجموعة‬ ‫•‬
‫الرئيسة للمستخدم‬
‫عضوية المجموعة االضافية للمستخدم تُعرف في الملف‬ ‫•‬
‫‪/etc/group‬‬
‫كال األمرين ‪ grep‬و ‪ getent‬يستخدمان لعرض‬ ‫•‬
‫معلومات المجموعة‬

‫عبدهللا القحطاني‬
‫الملف ‪/etc/group‬‬
‫‪The /etc/group file‬‬
‫• كل مجموعة تُعرف في هذا الملف‬
‫• العالمة ‪ :‬تحدد حقول الملف ما يلي‬
‫‪group_name:password_placeholder:GID:user_list‬‬
‫الوصف‬ ‫مثال‬ ‫الحقل‬
‫اسم المجموعة‬ ‫‪mail‬‬ ‫اسم المجموعة ‪group_name‬‬
‫حقل كلمة المرور ويشير الحرف ‪ x‬الى ان كلمة‬
‫كلمة المرور‬
‫المرور ليست مخزنة في الملف الحالي ولكن في‬ ‫‪x‬‬
‫‪password_placeholder‬‬
‫ملف ‪/etc/gshadow‬‬
‫كل مجموعة يكون لها معرف فريد ‪GID‬‬ ‫‪12‬‬ ‫معرف المجموعة ‪GID‬‬
‫يحدد أعضاء المجموعة‬ ‫‪mail,postfix‬‬ ‫أعضاء المجموعة ‪user_list‬‬

‫عبدهللا القحطاني‬
‫تغيير المجموعات‬
‫‪Changing groups‬‬
‫• النشاء ملف مملوك من قبل احدى المجموعات الثانوية‬
‫نستخدم األمر‬
‫‪newgrp group_name‬‬
‫يتم فتح شل جديد مع المجموعة األساسية الجديدة‬ ‫•‬
‫يستخدم األمر ‪ id‬للتحقق من المجموعة األساسية الجديدة‬ ‫•‬
‫يستخدم األمر ‪ exit‬للرجوع الى الشل السابق‬ ‫•‬
‫قد يتم التعطيل بسبب كلمات المرور للمجموعة‬ ‫•‬

‫عبدهللا القحطاني‬
‫تغيير ملكية المجموعة من ملف موجود‬
‫‪Changing the group ownership of an existing file‬‬
‫• تغيير ملكية المجموعة من ملف موجود باستخدام األمر‬
‫‪chgrp group_name file_name‬‬
‫• فقط يسمح للمستخدم بتغيير ملكية المجموعة من الملفات التي‬
‫يملكها‬
‫• يجب أيضا أن يكون عضوا في المجموعة الجديدة‬

‫عبدهللا القحطاني‬
‫العمل مع ‪root‬‬

‫‪Working with root‬‬

‫عبدهللا القحطاني‬
‫تسجيل الدخول بمستخدم ‪root‬‬
‫‪Logging in as root‬‬
‫• تسجيل الدخول مباشرة إلى حساب ‪ root‬يشكل خطرا أمنيا‬
‫• عوضا عن ذلك نستخدم األمر ‪ su‬أو ‪sudo‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪su‬‬
‫‪Using the su command‬‬
‫• األمر ‪ su‬يفتح شل جديد كمستخدم مختلف‬
‫– مثال‪su user1 :‬‬
‫• لتسجيل الدخول كما لو كان المستخدم قد قام بتنفيذ تسجيل الدخول‬
‫للجلسة‬
‫– مثال‪su - user1 :‬‬
‫عادة يستخدم لتشغيل األوامر كمستخدم ‪root‬‬ ‫•‬
‫يستخدم الخيار ‪ –l‬لتسجيل الدخول للشل بشكل كامل‬ ‫•‬
‫المستخدم ‪ root‬هو المستخدم االفتراضي‬ ‫•‬
‫للرجوع الى الشل األصلي يستخدم األمر ‪exit‬‬ ‫•‬

‫عبدهللا القحطاني‬
‫األمر ‪Sudo‬‬

‫‪sudo Command‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪sudo‬‬
‫‪Using the sudo command‬‬
‫• األمر ‪ sudo‬يمكن المستخدم من تنفيذ أمر واحد كمستخدم آخر‬
‫• يجب أن يثبت من قبل برنامج التثبيت أو يدويا بعد تحميله‬
‫• يطالب المستخدمين بإدخال كلمة المرور الخاصة بهم‬

‫عبدهللا القحطاني‬
‫تجهيز األمر ‪sudo‬‬
‫‪Setting up the sudo command‬‬
‫• اعدادات التكوين توجد في الملف ‪/etc/sudoers‬‬
‫• يمكن أن يُعدل هذا الملف باستخدام األمر ‪visudo‬‬
‫• يستخدم المحررات ‪ vi/vim‬افتراضيا‬
‫• لتعديل المحرر األساسي يستخدم األمر التالي‬
‫‪export EDITOR=gedit‬‬
‫• مثال الدخول لتزويد المستخدم ‪ bob‬بحق تشغيل األوامر مثل‬
‫المستخدم ‪root‬‬
‫)‪Bob ALL=(ALL‬‬ ‫‪ALL‬‬
‫عبدهللا القحطاني‬
‫األوامر ‪ w‬و ‪who‬‬

‫‪who and w Command‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪who‬‬
‫‪Using the who command‬‬
‫• يعرض قائمة بأسماء المستخدمين الذين قاموا بتسجيل الدخول‬
‫حاليا على النظام‬
‫‪[sysadmin@localhost ~]$ who‬‬
‫‪root‬‬ ‫‪tty2‬‬ ‫‪2013-10-11 10:00‬‬
‫‪sysadmin‬‬ ‫‪tty1‬‬ ‫)‪2013-10-11 09:58 (:0‬‬
‫‪sysadmin‬‬ ‫‪pts/0‬‬ ‫)‪2013-10-11 09:59 (:0.0‬‬
‫‪sysadmin‬‬ ‫‪pts/1‬‬ ‫)‪2013-10-11 10:00 (example.com‬‬
‫الوصف‬ ‫مثال‬ ‫العمود‬
‫اسم المستخدم الذي سجل الدخول‬ ‫‪root‬‬ ‫اسم المستخدم ‪username‬‬
‫المحطة المستخدمة للدخول‬ ‫‪tty2‬‬ ‫المحطة ‪terminal‬‬
‫تاريخ دخول المستخدم للنظام‬ ‫‪2013-10-11 10:00‬‬ ‫التاريخ ‪date‬‬

‫عبدهللا القحطاني‬
w ‫استخدام األمر‬
Using the w command
‫• يعرض معلومات المستخدم والنظام بشكل تفصيلي‬
[sysadmin@localhost ~]$ w
10:44:03 up 50 min, 4 users, load average: 0.78, 0.44, 0.19
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 - 10:00 43:44 0.01s 0.01s -bash
sysadmin tty1 :0 09:58 50:02 5.68s 0.16s id
sysadmin pts/0 :0.0 09:59 0.00s 0.14s 0.13s who
sysadmin pts/1 example.com 10:00 0.00s 0.03s 0.01s w

‫عبدهللا القحطاني‬
‫‪Using the w command‬‬
‫الوصف‬ ‫مثال‬ ‫العمود‬
‫اسم المستخدم الذي سجل الدخول‬ ‫‪root‬‬ ‫‪USER‬‬
‫أي محطة تم استخدامها‬ ‫‪tty2‬‬ ‫‪TTY‬‬
‫‪ example.com‬من أين سجل المستخدم الدخول‬ ‫‪FROM‬‬
‫متى سجل المستخدم الدخول‬ ‫‪10:00‬‬ ‫@‪LOGIN‬‬
‫زمن المدة التي يكون فيها المستخدم خامل عن العمل من اخر‬ ‫‪43:44‬‬ ‫‪IDLE‬‬
‫أمر نفذه‬
‫مجموع زمن ‪( CPU‬بالثانية) المنفذة من قبل كل العمليات‬ ‫‪0.01s‬‬ ‫‪JCPU‬‬
‫(البرامج) منذ تسجيل الدخول‬
‫مجموع زمن ‪ CPU‬للعملية الحالية فقط‬ ‫‪0.01s‬‬ ‫‪PCPU‬‬
‫العملية التي ينفذها المستخدم حاليا‬ ‫‪-bash‬‬ ‫‪WHAT‬‬

‫عبدهللا القحطاني‬
‫الوحدة الرابعة عشرة‬
‫ادارة المستخدمين والمجموعات‬

‫‪Module 14‬‬
‫‪Managing Users and Groups‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 5.2‬انشاء المستخدمين والمجموعات‬
‫• ملخص األهداف‬
‫– فهم أوامر المستخدمين والمجموعات‬
‫– انشاء معرفات للمستخدمين ‪IDs‬‬

‫عبدهللا القحطاني‬
‫العمل مع المجموعات‬

‫‪Working with Groups‬‬

‫عبدهللا القحطاني‬
‫انشاء مجموعة‬
‫‪Creating a Group‬‬
‫• السبب الرئيس إلنشاء مجموعة هو توفير وسيلة للمستخدمين‬
‫لتبادل الملفات‪ .‬بعد إنشاء أو تعديل مجموعة‪ ،‬يمكنك التحقق‬
‫من التغييرات عن طريق عرض الملف ‪ /etc/group‬أو‬
‫تشغيل األمر ‪getent‬‬

‫عبدهللا القحطاني‬
‫أمر ‪groupadd‬‬
‫‪The groupadd Command‬‬
‫• األمر ‪ groupadd‬يستخدم إلنشاء مجموعة جديدة‬
‫• الخيار ‪ –g‬يستخدم لتحديد رقم (معرف) المجموعة‬
‫‪groupadd -g 506 research‬‬
‫• اذا كان الخيار ‪ –g‬لم يكتب فان األمر ‪ groupadd‬تلقائيا‬
‫سوف يوفر ‪ GID‬للمجموعة الجديدة‬

‫عبدهللا القحطاني‬
‫اعتبارات معرف المجموعة‬
‫‪Group ID Considerations‬‬
‫• تجنب إنشاء معرفات المجموعة ‪ GIDs‬في نفس النطاقات‬
‫الرقمية حيث يتوقع انشاء معرفات للمستخدمين ‪ IDs‬اذا كان‬
‫النظام يستخدم ‪UPG‬‬
‫• معرفات المجموعة ‪ GIDs‬األقل من ‪ 500‬محجوزة‬
‫لالستخدام من قبل النظام‬
‫• الخيار ‪ –r‬سوف يعطي المجموعة الجديدة معرف ‪ GID‬أقل‬
‫من أدنى معرف مستخدم ‪ ID‬قياسي‬

‫عبدهللا القحطاني‬
‫اعتبارات تسمية المجموعة‬
‫‪Group Naming Considerations‬‬
‫يجب أن يكون الحرف األول من اسم المجموعة إما عالمة‬ ‫•‬
‫)_( ‪ underscore‬أو حرف أبجدي صغير )‪(a-z‬‬
‫يسمح باستخدام ‪ 32‬حرف في معظم توزيعات لينكس‪ ،‬لكن‬ ‫•‬
‫استخدام أكثر من ‪ 16‬حرف ممكن أن يسبب مشاكل لذلك‬
‫بعض التوزيعات قد ال تقبل أكثر من ‪ 16‬حرف‬
‫بعد أول حرف‪ ،‬بقية الحروف يمكن ان تكون حروف أبجدية‬ ‫•‬
‫أو عالمة )‪ dash (-‬أو عالمة )_(‪underscore‬‬
‫آخر حرف يجب أن ال يكون عالمة الوصل )‪hyphen (-‬‬ ‫•‬

‫عبدهللا القحطاني‬
‫تعديل المجموعة‬
‫‪Modifying a Group‬‬
‫األمر ‪ groupmod –n‬يغير اسم المجموعة‬ ‫•‬
‫األمر ‪ groupmod –g‬يغير رقم المجموعة ‪GID‬‬ ‫•‬
‫اذا تم تغيير رقم المجموعة ‪ GID‬فإن جميع الملفات المرتبطة‬ ‫•‬
‫بهذه المجموعة سوف لن تبقى مرتبطة معها‬
‫وتسمى هذه الملفات بالملفات المعزولة ” ‪“ orphaned‬‬ ‫•‬
‫إليجاد الملفات المعزولة ” ‪ “ orphaned‬نستخدم األمر‬ ‫•‬
‫‪find / -nogroup‬‬

‫عبدهللا القحطاني‬
‫حذف المجموعة‬
‫‪Deleting a Group‬‬
‫• يستخدم األمر ‪ groupdel‬لحذف المجموعة‬
‫• ممكن أن يخلق حذف المجموعة ملفات المعزولة ”‬
‫‪“orphaned‬‬
‫• المجموعات االضافية هي التي يمكن حذفها‬

‫عبدهللا القحطاني‬
‫العمل مع المستخدمين‬

‫‪Working with Users‬‬

‫عبدهللا القحطاني‬
‫الملف ‪/etc/default/useradd‬‬
‫• الملف ‪ /etc/default/useradd‬يستخدم لتحديد‬
‫االعدادات االفتراضية عند انشاء حسابات المستخدمين‬
‫• يمكن االطالع على اإلعدادات االفتراضية المعدلة عن طريق‬
‫األمر ‪useradd –D‬‬
‫• التعديل على هذا الملف يتطلب الدخول بحساب ‪root‬‬

‫عبدهللا القحطاني‬
‫الملف ‪/etc/default/useradd‬‬
‫الوصف‬ ‫مثال‬ ‫الحقل‬
‫المجموعة األساسية االفتراضية للمستخدم الجديد‬ ‫‪100‬‬ ‫‪GROUP‬‬
‫قاعدة الدليل االفتراضي التي بموجبها سيتم انشاء دليل رئيسي‬
‫‪/home‬‬ ‫‪HOME‬‬
‫جديد للمستخدم‬
‫قيمة الحقل تمثل عدد األيام بعد انتهاء صالحية كلمة المرور‬
‫‪-1‬‬ ‫‪INACTIVE‬‬
‫والتي اصبح الحساب فيها معطل‬
‫تاريخ انتهاء الصالحية‬ ‫‪EXPIRE‬‬
‫‪ /bin/bash‬اعدادات ‪ SHELL‬تحدد الشل االفتراضي للمستخدم‬ ‫‪SHELL‬‬
‫محتويات هذا الدليل سيتم نسخها الى الدليل الرئيسي الجديد‬
‫‪/etc/skel‬‬ ‫‪SKEL‬‬
‫للمستخدم كما سيعطى المستخدم الجديد ملكية هذه الملفات‬
‫”‪ "mail spool‬هو ملف الرسائل الذي توضع فيه الرسائل‬
‫‪yes‬‬ ‫‪CREATE_MAIL_SPOOL‬‬
‫الواردة‬

‫عبدهللا القحطاني‬
‫ملف ‪/etc/login.defs‬‬
‫لتحديد‬ ‫الملف ‪ /etc/login.defs‬يستخدم‬ ‫•‬
‫االعدادات االفتراضية عند انشاء حسابات المستخدمين‬
‫يمكن االطالع على اإلعدادات االفتراضية فقط بالنظر الى‬ ‫•‬
‫محتويات هذا الملف‬
‫هذه االعدادات أيضا يمكن أن تعدل فقط بالتعديل على الملف‬ ‫•‬
‫مباشرة‬
‫التعديل على هذا الملف يتطلب الدخول بحساب ‪root‬‬ ‫•‬

‫عبدهللا القحطاني‬
‫ملف ‪/etc/login.defs‬‬
‫الوصف‬ ‫مثال‬ ‫الحقل‬
‫‪ /var/mail/spool‬الدليل الذي يحوي ملف الرسائل ‪ mail spool‬الذي سيتم انشاؤه للمستخدمين‬ ‫‪MAIL_DIR‬‬

‫الحد األعلى من األيام الذي يستطيع المستخدم االستمرار على نفس كلمة المرور‬ ‫‪99999‬‬ ‫‪PASS_MAX_DAYS‬‬
‫بدون تغيير‬
‫أقل وقت يطلب من المستخدم االحتفاظ بكلمة المرور‬ ‫‪0‬‬ ‫‪PASS_MIN_DAYS‬‬
‫يحدد أقل عدد من الحروف تتكون منه كلمة المرور‬ ‫‪5‬‬ ‫‪PASS_MIN_LEN‬‬

‫حقل االنذار االفتراضي‬ ‫‪7‬‬ ‫‪PASS_WARN_AGE‬‬

‫يحدد أول رقم (معرف) للمستخدم ‪ UID‬سوف يعطى للمستخدم العادي‬ ‫‪500‬‬ ‫‪UID_MIN‬‬

‫يحدد أقصى رقم (معرف) للمستخدم ‪ UID‬سوف يعطى للمستخدم العادي‬ ‫‪60000‬‬ ‫‪UID_MAX‬‬

‫يحدد أول رقم (معرف) للمجموعة ‪ GID‬سوف يعطى للمجموعة العادية‬ ‫‪500‬‬ ‫‪GID _MIN‬‬

‫يحدد أقصى رقم (معرف) للمجموعة ‪ GID‬سوف يعطى للمجموعة العادية‬ ‫‪60000‬‬ ‫‪GID _MAX‬‬

‫قيمة هذا الحقل تحدد ما اذا كان الدليل الجديد الخاص بالمستخدم سيتم انشاؤه أم‬ ‫‪yes‬‬ ‫‪CREATE_HOME‬‬
‫ال‬
‫يحدد الصالحيات االفتراضية التي ستعطى لدليل المستخدم الرئيسي‬ ‫‪077‬‬ ‫‪UMASK‬‬

‫عبدهللا القحطاني‬
‫العمل مع معلومات الحساب‬

‫‪Working with Account Information‬‬

‫عبدهللا القحطاني‬
‫مميزات األفراد الذين يملكون حسابات منفصلة‬
‫‪Advantages to Individuals having Separate Accounts‬‬

‫• يمكن استخدام الحسابات بمنحها الوصول االنتقائي الى‬


‫الملفات والخدمات‬
‫• األمر ‪ sudo‬يمكن أن يُهيأ بمنحه المقدرة على تحديد األفراد‬
‫للسماح بتنفيذ أوامر إدارية مختارة‬
‫• كل حساب يمكن أن يحصل على عضوية مجموعة وحقوق‬
‫مرتبطة بها مما يسمح بقدر أكبر من المرونة اإلدارية‬

‫عبدهللا القحطاني‬
‫اعتبارات الحساب‬
‫‪Account Considerations‬‬
‫• قبل انشاء حساب المستخدم‪ ،‬يجب النظر الى القيم التي يجب أن‬
‫تعطى للعناصر التالية الخاصة بالمستخدم‪:‬‬
‫اسم المستخدم ‪User name‬‬ ‫–‬
‫معرف المستخدم ‪UID‬‬ ‫–‬
‫المجموعة األساسية ‪Primary Group‬‬ ‫–‬
‫المجموعات االضافية )‪Supplementary group(s‬‬ ‫–‬
‫الدليل الرئيسي ‪Home Directory‬‬ ‫–‬
‫الدليل الهيكلي ‪Skeleton Directory‬‬ ‫–‬
‫الشل ‪Shell‬‬ ‫–‬
‫المعلومات االضافية ‪Comment‬‬ ‫–‬

‫عبدهللا القحطاني‬
‫األمر ‪useradd‬‬
‫• األمر ‪ useradd‬يعطي المقدرة على انشاء حساب مستخدم جديد على‬
‫سبيل المثال‪:‬‬
‫‪useradd -u 1000 -c 'Jane Doe' jane‬‬
‫• التعديل يتم في الملفات التالية‬
‫‪/etc/passwd‬‬ ‫–‬
‫‪/etc/shadow‬‬ ‫–‬
‫‪/etc/group‬‬ ‫–‬
‫‪/etc/gshadow‬‬ ‫–‬
‫يتم انشاء‬ ‫•‬
‫ملف رسائل ‪(/var/spool/mail/jane) mail spool‬‬ ‫–‬
‫دليل رئيسي للمستخدم )‪(/home/jane‬‬ ‫–‬

‫عبدهللا القحطاني‬
‫كلمة المرور اآلمنة‬

‫‪Password Security‬‬

‫عبدهللا القحطاني‬
‫اختيار كلمة المرور‬
‫‪Picking a Password‬‬
‫تجنب استخدام المعلومات الشخصية في كلمات المرور‬ ‫•‬
‫التشجيع على استخدام كلمات مرور معقدة‬ ‫•‬
‫التشجيع على استخدام كلمات مرور طويلة ولكن ال تكون‬ ‫•‬
‫طويلة جدا بحيث يصعب تذكرها‬
‫األخذ بعين االعتبار متطلبات اعادة تعيين كلمات المرور‬ ‫•‬
‫للمستخدمين‬

‫عبدهللا القحطاني‬
‫تعيين كلمات المرور‬
‫‪Setting a Password‬‬
‫األمر ‪ passwd‬يمكن المستخدم من تغيير كلمة المرور‬ ‫•‬
‫المستخدم ‪ root‬يستطيع تغيير كلمة المرور ألي مستخدم‬ ‫•‬
‫‪passwd user_name‬‬
‫يمكن للمستخدم ‪ root‬أن يكسر قواعد كلمات المرور باستثناء‬ ‫•‬
‫قاعدة ”‪“no empty passwords‬‬
‫المستخدم يستطيع تغيير كلمة المرور الخاصة به من خالل‬ ‫•‬
‫تشغيل األمر ‪ passwd‬بدون وسيط ‪argument‬‬
‫المستخدم العادي ال يستطيع كسر قواعد كلمات المرور‬ ‫•‬
‫قواعد كلمات المرور تختلف من توزيعة الى أخرى‬ ‫•‬

‫عبدهللا القحطاني‬
‫األمر ‪chage‬‬

‫‪chage Command‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪chage‬‬
‫• يستخدم لتغيير اعدادات كلمة المرور للمستخدم‬
‫• الخيارات المستخدمة مع األمر ‪ chage‬هي‬

‫عبدهللا القحطاني‬
‫الوصف‬ ‫الخيار الطويل‬ ‫الخيار القصير‬
‫‪ --list‬سرد معلومات الحساب‬ ‫‪-l‬‬
‫‪ --lastday LAST_DAY‬تحديد موعد تغيير كلمة المرور األخيرة الى ‪LAST_DAY‬‬ ‫‪-d LAST_DAY‬‬
‫‪ --expiredate EXPIRE_DATE -E EXPIRE_DATE‬ضبط الحساب لينتهي في ‪EXPIRE_DATE‬‬
‫‪ --help‬عرض المساعدة الخاصة باألمر ‪chage‬‬ ‫‪-h‬‬
‫‪ --inactive INACTIVE‬ضبط الحساب ليسمح بتسجيل الدخول في األيام الغير‬ ‫‪-I INACTIVE‬‬
‫نشطة بعد انتهاء صالحية كلمة المرور‬
‫‪ --mindays MIN_DAYS‬ضبط الحد األدنى من األيام قبل السماح بتغيير كلمة‬ ‫‪-m MIN_DAYS‬‬
‫المرور الى ‪MIN_DAYS‬‬
‫‪ --maxdays MAX_DAYS‬ضبط الحد األدنى من األيام قبل السماح بتغيير كلمة‬ ‫‪-M MAX_DAYS‬‬
‫المرور الى ‪MAX_DAYS‬‬
‫‪ --warndays WARN_DAYS‬ضبط عدد األيام قبل انتهاء صالحية كلمة المرور ليبدأ‬ ‫‪-W WARN_DAYS‬‬
‫عرض االنذار الى ‪WARN_DAYS‬‬

‫عبدهللا القحطاني‬
‫تعديل حساب المستخدم‬

‫‪Modifying a User Account‬‬

‫عبدهللا القحطاني‬
‫تعديل مستخدم‬
‫‪Modify a User‬‬
‫• المستخدم قد يحتاج إلى تسجيل الخروج لتعديل حساب‬
‫• تستخدم األوامر ‪ w ، who‬أو ‪ last‬لمعرفة ما اذا كان‬
‫المستخدم قد قام حاليا بتسجيل الدخول للنظام‬

‫عبدهللا القحطاني‬
‫األمر ‪usermod‬‬
‫‪The usermod Command‬‬
‫• يستخدم األمر ‪ usermod‬لتعديل حساب المستخدم‬
‫• أهم الخيارات المستخدمة مع األمر ‪ usermod‬هي‬

‫عبدهللا القحطاني‬
‫الوصف‬ ‫الخيار‬
‫‪ -c COMMENT‬يستخدم إلضافة قيم لحقل التعليقات‬
‫‪ -d HOME_DIR‬يستخدم لتغيير الدليل الرئيسي للمستخدم‬
‫‪ -e EXPIRE_DATE‬يستخدم لتغيير تاريخ انتهاء الصالحية لحساب المستخدم‬
‫ضبط الحساب للسماح بتسجيل الدخول في األيام الغير نشطة بعد انتهاء صالحية كلمة‬
‫‪-f INACTIVE‬‬
‫المرور‬
‫‪ -g GROUP‬يستخدم لضبط المجموعة األساسية بالمجموعة ‪GROUP‬‬
‫‪ -G GROUPS‬يستخدم لضبط المجموعة االضافية‬
‫‪ -a‬إلحاق مجموعة اضافية للمستخدم مع تلك المجموعات المحددة من قبل ‪-G‬‬
‫‪ -h‬يستخدم لعرض المساعدة الخاصة باألمر ‪usermod‬‬
‫‪ -l NEW_LOGIN‬يستخدم لتغيير اسم الدخول للمستخدم‬
‫‪ -L‬يستخدم لقفل حساب المستخدم‬
‫‪ -s SHELL‬يستخدم لتحديد شل الدخول الخاص بحساب المستخدم‬
‫‪ -u NEW_UID‬يستخدم لتغيير رقم معرف المستخدم الى معرف جديد ‪UID‬‬
‫‪ -U‬يستخدم لفك قفل حساب المستخدم‬

‫عبدهللا القحطاني‬
‫ازالة المستخدم‬

‫‪Removing a User‬‬

‫عبدهللا القحطاني‬
‫حذف المستخدم‬
‫‪Delete a User‬‬
‫• يستخدم األمر ‪ userdel‬لحذف حساب المستخدم‬
‫• افتراضيا‪ ،‬فقط الحساب هو من سيحذف أما الملفات الخاصة‬
‫بالمستخدم فسوف تبقى‬
‫• باستخدام الخيار ‪ –r‬الملفات الموجودة في الدليل الرئيسي‬
‫للمستخدم وملف الرسائل ”‪ “mail spool‬الخاص بالمستخدم‬
‫سوف يتم حذفها‬

‫عبدهللا القحطاني‬
‫الوحدة الخامسة عشرة‬
‫الملكية واألذونات‬

‫‪Module 15‬‬
‫‪Ownership and Permissions‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 5.3‬ادارة أذونات الملفات وملكيتها‬
‫• ملخص األهداف‬
‫– مالك وأذونات الملفات واألدلة‬

‫عبدهللا القحطاني‬
‫الملكية‬

‫‪Ownership‬‬

‫عبدهللا القحطاني‬
(ls -l) ‫عرض الملكية‬
Viewing Ownership (ls -l)
ls –l ‫ نستخدم األمر‬،‫• لعرض ملكية ملف عادي‬
[sysadmin@localhost ~]$ ls -l /etc/named.conf
-rw-r-----. 1 root named 1163 May 13 10:27 /etc/named.conf

user owner group owner

ls –ld ‫ نستخدم األمر‬،‫• لعرض ملكية ملف دليل‬


[sysadmin@localhost ~]$ ls -ld /etc/named
drwxr-x---. 2 root named 4096 Mar 28 2013 /etc/named

user owner group owner

‫عبدهللا القحطاني‬
(stat) ‫عرض الملكية‬
Viewing Ownership (stat)
‫ يمكن المستخدم من عرض معلومات عن ملكية‬stat ‫• األمر‬
‫الملفات بشكل أكثر تفصيل‬
[sysadmin@localhost ~]$ stat /etc/named
File: `/etc/named' user owner

Size: 4096 Blocks: 8 IO Block: 4096 directory


Device: fd00h/64768dInode: 153995 Links: 2 group owner

Access: (0750/drwxr-x---) Uid: ( 0/ root) Gid: ( 25/ named)


Access: 2013-10-28 16:21:34.949997291 -0700
Modify: 2013-03-28 15:18:54.000000000 -0700
Change: 2013-05-13 09:56:53.831158705 -0700

‫عبدهللا القحطاني‬
‫ملكية الملفات‬
‫‪File Ownership‬‬
‫كل ملف يكون مملوكا لمستخدم ومجموعة‬ ‫•‬
‫اذا المستخدم أنشأ ملف‪ ،‬فإنه هو المالك لهذا الملف‬ ‫•‬
‫األمر ‪ chown‬يستطيع تغيير ملكية الملف من مستخدم‬ ‫•‬
‫آلخر لكن هذا األمر ال يستخدم إال من قبل المستخدم ‪root‬‬
‫على الرغم من أن معظم األوامر سوف تظهر اسم حساب‬ ‫•‬
‫المستخدم كمالك‪ ،‬فإن نظام التشغيل في الواقع يقوم بالتعامل‬
‫مع معرف المستخدم ‪ UID‬كمالك الملف‪.‬‬

‫عبدهللا القحطاني‬
‫ملكية المجموعة‬
‫‪Group Ownership‬‬
‫عند انشاء ملف‪ ،‬فان المجموعة الرئيسة للمستخدم الذي أنشأ الملف‬ ‫•‬
‫هي المجموعة المالكة للملف‬
‫يمكن للمستخدم استخدام األمر ‪ chgrp‬لتغيير المجموعة المالكة‬ ‫•‬
‫للملف الذي يملكه المستخدم إلى مجموعة يكن فيها المستخدم عضوا‬
‫يمكن للمستخدم ‪ root‬استخدام األمر ‪ chgrp‬لتغيير المجموعة‬ ‫•‬
‫المالكة ألي ملف إلى أي مجموعة‬
‫بينما معظم األوامر سوف تظهر اسم المجموعة المالكة‪ ،‬إال أن‬ ‫•‬
‫النظام فعليا يتتبع ملكية المجموعة مستخدما معرف المجموعة ‪GID‬‬

‫عبدهللا القحطاني‬
‫الملفات المعزولة‬
‫‪Orphaned Files‬‬
‫• إذا تم حذف المستخدم‪ ،‬أو تغير معرف المستخدم ‪ ،UID‬فإن‬
‫معرفاتهم السابقة ‪ UIDs‬ستظهر كمالك لتلك الملفات‬
‫• إذا تم حذف المجموعة‪ ،‬أو تغير معرف المجموعة ‪ ،GID‬فإن‬
‫معرفات المجموعة السابقة ‪ GIDs‬ستظهر كمجموعة مالكة‬
‫لتلك الملفات‬

‫عبدهللا القحطاني‬
‫معلومات الهوية‬

‫‪Identity Information‬‬

‫عبدهللا القحطاني‬
‫اكتشاف الهوية‬
Finding Identity
‫• لمعرفة هوية المستخدم الحالي والمجموعات التي هو عضو‬
id ‫فيها يتم استخدام األمر‬
[sysadmin@localhost ~]$ id
uid=500(sysadmin) gid=500(sysadmin)
groups=500(sysadmin),10001(research),10002(develo
pment)
context=unconfined_u:unconfined_r:unconfined_t:s0
-s0:c0.c1023
‫ لنفس الغرض‬whoami ‫• أيضا يمكن استخدام األمر‬
‫عبدهللا القحطاني‬
‫عرض عضوية المجموعة‬
‫‪Viewing Group Membership‬‬
‫• لعرض اسماء المجموعات التي يكون المستخدم عضو فيها‪،‬‬
‫يستخدم األمر ‪groups‬‬
‫‪[sysadmin@localhost ~]$ groups‬‬
‫‪sysadmin research development‬‬
‫• اذا تمت اضافة المستخدم الى مجموعة اثناء تسجيله الدخول‪،‬‬
‫يجب عليه أوال تسجيل الخروج ثم الدخول من جديد لكي‬
‫يستطيع االطالع على عضوية المجموعة الجديدة‬

‫عبدهللا القحطاني‬
‫تغيير ملكية الملف والمجموعة‬

‫‪Changing File and Group Ownership‬‬

‫عبدهللا القحطاني‬
‫األمر ‪newgrp‬‬
‫‪The newgrp Command‬‬
‫األمر ‪ newgrp‬يستخدم لتغيير المجموعة األساسية الفاعلة من‬ ‫•‬
‫خالل فتح شل جديد مع مجموعة أساسية مختلفة‬
‫يمكن للمستخدمين استخدام األمر ‪ newgrp‬لتعيين المجموعة‬ ‫•‬
‫األساسية إلى مجموعة ينتمون إليها قبل أن ينشئوا ملفاتهم‬
‫يمكن للمستخدم العودة إلى المجموعة األساسية األصلية الخاصة‬ ‫•‬
‫به باستخدام األمر ‪exit‬‬
‫لتغيير المجموعة األساسية للمستخدم بشكل دائم‪ ،‬يتطلب من‬ ‫•‬
‫المستخدم ‪ root‬تنفيذ األمر التالي‪:‬‬
‫‪usermod -g groupname username‬‬

‫عبدهللا القحطاني‬
‫األمر ‪chgrp‬‬
‫• يمكن للمستخدم تغيير المجموعة التي تملك ملفات المستخدم‬
‫إلى مجموعة ينتمي اليها باستخدام األمر ‪chgrp‬‬
‫• المستخدم ‪ root‬يستطيع استخدام األمر ‪ chgrp‬لتغيير‬
‫المجموعة المالكة ألي ملف إلى مجموعة أخرى أو ‪GID‬‬
‫• إذا تم استخدام الخيار ‪ –R‬مع األمر ‪ ،chgrp‬سوف يكون‬
‫التأثير ممتد‪ ،‬حيث يطبق على الدالئل الفرعية ومحتوياتها‬

‫عبدهللا القحطاني‬
‫األمر ‪chown‬‬
‫• األمر ‪ chown‬يمكن أن يستخدم بواسطة المستخدم ‪root‬‬
‫لتغيير المالك أو المجموعة المالكة أو كالهما‬
‫• يمكن للمستخدم العادي استخدام ‪ chown‬لتغيير المجموعة‬
‫المالكة للملفات‪ ،‬ولكن ألن ‪ chgrp‬يستخدم فليس هناك‬
‫حاجة لألمر ‪chown‬‬
‫• على سبيل المثال‪:‬‬
‫>‪chown user:group <file|directory‬‬
‫>‪chown user <file|directory‬‬
‫>‪chown :group <file|directory‬‬

‫عبدهللا القحطاني‬
‫األذونات‬

‫‪Permissions‬‬

‫عبدهللا القحطاني‬
‫األذونات‬
‫‪Permissions‬‬
‫• عند تنفيذ األمر ‪ ls –l‬فإن أول عشر حروف من كل سطر‬
‫تكون متعلقة بنوع الملف واألذونات الخاصة به‬
‫– أول حرف يحدد نوع الملف‬
‫– الحروف من ‪ 4-2‬هي أذونات المستخدم المالك للمف‬
‫– الحروف من ‪ 7-5‬هي أذونات المجموعة المالكة للملف‬
‫– الحروف من ‪ 10-8‬هي أذونات بقية المستخدمين أو ما يشار إليهم‬
‫أحيانا بإسم أذونات العالم‪ .‬وهؤالء هم كل المستخدمين الذين ليسوا‬
‫مالك الملف أو أعضاء في مجموعة الملف‪.‬‬

‫عبدهللا القحطاني‬
‫عرض األذونات‬
Viewing Permissions
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 4135 May 27 21:08 /etc/passwd
‫• بناء على مخرجات األمر السابق نجد أن أول عشرة حروف‬
‫يمكن وصفها بالشمل التالي‬
File User Owner Group Owner Others

Type Read Write Execute Read Write Execute Read Write Execute

- r w - r w - r - -

‫عبدهللا القحطاني‬
‫أنواع الملفات‬
‫)‪Types of Files (Review‬‬
‫نوع الملف‬ ‫الحرف‬
‫ملف اعتيادي والذي قد يكون فارغ أو يحوي بيانات نصية أو ثنائية‬ ‫‪-‬‬
‫ملف دليل والذي يحوي أسماء الملفات األخرى والروابط الخاصة بها‬ ‫‪d‬‬
‫ارتباط رمزي وهو اسم الملف الذي يشير (يؤشر) إلى ملف آخر‬ ‫‪l‬‬
‫ملف الكتلة (‪ )block‬وهو الملف الذي يربط ‪ a block hardware device‬الذي يقرأ‬ ‫‪b‬‬
‫البيانات على شكل كتل‬
‫ملف الحرف (‪ )character‬وهو الملف الذي يربط ‪a character hardware device‬‬ ‫‪c‬‬
‫الذي يقرأ بايت واحد في كل مرة‬
‫ملف الوصل (‪ )pipe‬يعمل مثل رمز الوصل (‪ )pipe‬وهو الملف يمكن نتائج عملية من‬ ‫‪p‬‬
‫التواصل مع عملية أخرى‪ ،‬حيث تستخدم مخرجات العملية األولى هي مدخالت العملية‬
‫الثانية‬
‫ملف ‪ socket‬يسمح لعمليتين بالتواصل مع بعضها البعض‪ ،‬حيث يسمح لكلتا العمليتين إما‬ ‫‪s‬‬
‫بإرسال البيانات أو استقبالها‬

‫عبدهللا القحطاني‬
‫معنى األذونات‬
‫‪Meaning of Permissions‬‬
‫المعت بالنسبة للدليل‬ ‫المعت بالنسبة للملف‬ ‫األذونات‬
‫العملية تستطيع قراءة محتويات الملف‪ ,‬يمكن رسد أسماء الملفات يف المجلد ولكن‬
‫غب متوفرة‬‫يعت أن المحتويات يمكن أن تعرض التفاصيل األخرى ر‬
‫وذلك ي‬ ‫‪r‬‬
‫وتنسخ‬
‫يمكن الكتابة يف الملفات بواسطة العملية يمكن اضافة الملفات أو حذفها من‬
‫التغيب يف الملف‪ .‬الحظ الدليل‪ .‬الحظ أن اإلذن ‪ w‬يتطلب اإلذن ‪x‬‬
‫ر‬ ‫لذلك يمكن حفظ‬
‫‪w‬‬
‫لك يعمل بشكل صحيح‬ ‫أن اإلذن ‪ w‬يتطلب اإلذن ‪ r‬عىل الملفات عىل األدلة ي‬
‫لك يعمل بشكل صحيح‬‫ي‬
‫الملف يمكن تنفيذه أو تشغيله كعملية أو المستخدم يستطيع استخدام األمر ‪cd‬‬
‫للدخول اىل الدليل ويستطيع استخدام‬ ‫برنامج‬
‫الدليل يف اسم المسار للوصول اىل‬ ‫‪x‬‬
‫الملفات واألدلة الفرعية الموجودة يف هذا‬
‫الدليل‬

‫عبدهللا القحطاني‬
‫فهم األذونات‬
‫‪Understanding Permissions‬‬
‫• يوجد فقط مجموعة واحدة من ثالث مجموعات من األذونات‬
‫ستطبق عندما يحاول المستخدم الوصول الى الملف‪:‬‬
‫– اذا كان المستخدم هو مالك الملف‪ ،‬فسيتم تطبيق أذونات المالك‬
‫(الثالث األولى) فقط‬
‫– اذا لم يكن المستخدم مالكا للملف‪ ،‬ولكنه عضوا في المجموعة‬
‫المالكة للملف‪ ،‬فسيتم تطبيق أذونات مجموعة المالك (الثالث‬
‫الثانية) فقط‬
‫– اذا لم يكن المستخدم مالكا للملف‪ ،‬ولم يكن عضوا في المجموعة‬
‫المالكة للملف‪ ،‬فسيتم تطبيق أذونات بقية المستخدمين (الثالث‬
‫االخيرة) فقط‬

‫عبدهللا القحطاني‬
‫أهمية الوصول إلى الدليل‬
‫‪Importance of Directory Access‬‬
‫سؤال‪ :‬ما هو مستوى الوصول الذي يملكه ‪ bob‬للوصول الى‬
‫‪/data/abc.txt‬؟‬

‫ال شيء‪ ،‬ألنه بدون االذن تنفيذ على الدليل ‪ /data‬ال توجد‬
‫وسيلة للمستخدم ‪ Bob‬للوصول إلى الملف ‪/data/abc.txt‬‬
‫عبدهللا القحطاني‬
‫األمر ‪chmod‬‬

‫‪chmod Command‬‬

‫عبدهللا القحطاني‬
‫األمر ‪chmod‬‬
‫• األمر ‪ chmod‬يستخدم لتعيين أو تعديل األذونات‬
‫• لتغيير أذونات الملف‪ ،‬يجب أن يكون المستخدم إما مالك‬
‫الملف أو المستخدم ‪root‬‬
‫• هناك نوعان من التقنيات المميزة والتي تستخدم مع األمر‬
‫‪ chmod‬لتغيير األذونات هما‪:‬‬
‫– رمزي (حرفي) ‪symbolic‬‬
‫– رقمي ‪numeric‬‬

‫عبدهللا القحطاني‬
‫االستخدام الرمزي لألمر ‪chmod‬‬
‫‪Using chmod symbolically‬‬
‫• مع هذه التقنية‪ ،‬المستخدم يحدد ‪ operator ، who‬و ‪what‬‬
‫‪  who‬تحدد من هم‬ ‫‪  operator‬يحدد ما‬ ‫‪  what‬تحدد اإلذن‬
‫الذين ستتغير أذوناتهم‪:‬‬ ‫إذا كانت العملية إضافة‪،‬‬ ‫الذي سيتم تعيينه على‬
‫إزالة أو إسناد‬ ‫الملف‬
‫• ‪  u‬مستخدم (‪)user‬‬ ‫• ‪  +‬لإلضافة (‪)add‬‬ ‫• ‪  r‬للقراءة (‪)reed‬‬
‫• ‪  g‬مجموعة (‪)gruop‬‬ ‫• ‪  -‬لإلزالة (‪)remove‬‬ ‫• ‪  w‬للكتابة (‪)write‬‬
‫• ‪  o‬البقية (‪)others‬‬ ‫• = ‪ ‬لإلسناد ( ‪set‬‬ ‫• ‪  x‬للتنفيذ (‪)execute‬‬
‫• ‪  a‬الجميع (‪)everyone‬‬ ‫‪)exactly‬‬ ‫• ‪  -‬ال شيء (‪)nothing‬‬

‫عبدهللا القحطاني‬
‫أمثلة‬
‫‪chmod symbolic (alter) examples‬‬
‫• ‪chmod u+x abc.txt‬‬
‫– سوف يضيف إذن التنفيذ للمستخدم مالك الملف‬
‫• ‪chmod go-rx abc.txt‬‬
‫– سوف يغير‪/‬يحذف إذن القراءة والتنفيذ من المجموعة المالكة‬
‫للملف ومن بقية المستخدمين‬
‫• ‪chmod u+wx,g=rx,o-r abc.txt‬‬
‫– سوف يضيف إذن الكتابة والتنفيذ لمالك الملف‪ ،‬وسيسند للمجموعة‬
‫المالكة للملف إذن القراءة والتنفيذ‪ ،‬وسيزيل إذن القراءة عن بقية‬
‫المستخدمين‬

‫عبدهللا القحطاني‬
‫االستخدام الرقمي لألمر ‪chmod‬‬
‫‪Using chmod (set) numerically‬‬
‫• عند استخدام التقنية العددية مع األمر ‪ chmod‬ثالث خانات‬
‫عددية سوف تستخدم لتمثيل األذونات لكل من المستخدم‪،‬‬
‫المجموعة وبقية المستخدمين‬
‫• وتسمى أيضا الطريقة الثمانية حيث تستخدم القيم الثمانية‬
‫لحساب األذونات‪:‬‬
‫– ‪4 = read‬‬
‫– ‪2 = write‬‬
‫– ‪1 = execute‬‬

‫عبدهللا القحطاني‬
‫‪Using chmod numerically‬‬
‫• من خالل الجمع بين األذونات‪ • ،‬يجب تحديد كافة األذونات‬
‫التسعة (الحروف) عند استخدام‬ ‫مجال القيم سوف يتراوح بين‬
‫األسلوب الثماني‬ ‫‪:7-0‬‬
‫‪rwxrwxrwx = 777‬‬ ‫–‬ ‫‪rwx = 7‬‬ ‫–‬
‫‪rwxrwxr-x = 775‬‬ ‫–‬ ‫‪rw- = 6‬‬ ‫–‬
‫‪rwxr-xr-x = 755‬‬ ‫–‬ ‫‪r-x = 5‬‬ ‫–‬
‫‪rwx------ = 700‬‬ ‫–‬ ‫‪r-- = 4‬‬ ‫–‬
‫‪rw-rw-r-- = 664‬‬ ‫–‬ ‫‪-wx = 3‬‬ ‫–‬
‫‪rw-r----- = 640‬‬ ‫–‬ ‫‪-w- = 2‬‬ ‫–‬
‫‪--x = 1‬‬ ‫–‬
‫‪--- = 0‬‬ ‫–‬

‫عبدهللا القحطاني‬
‫أمثلة‬
chmod numeric examples
chmod numeric ‫أمثلة‬ ‫النتائج بالحروف‬
chmod 755 abc.sh rwxr-xr-x
chmod 660 abc.txt rw-rw----
chmod 771 somedir rwxrwx--x
chmod 400 my.txt r--------
chmod 700 userdir rwx------

‫عبدهللا القحطاني‬
‫األمر ‪umask‬‬

‫‪umask Command‬‬

‫عبدهللا القحطاني‬
‫فهم األمر ‪umask‬‬
‫‪Understanding umask‬‬
‫• يتم استخدام قيمة ‪ umask‬لتحديد األذونات االفتراضية التي‬
‫تم تعيينها عند إنشاء ملف جديد أو دليل جديد‪.‬‬
‫• األذونات االفتراضية يتم تحديدها عن طريق إزالة األذونات‬
‫في ‪ umask‬من أذونات الحد األقصى المسموح به في النظام‬
‫• الحد األقصى المسموح به لألذونات هو‪:‬‬
‫– الملف الجديد هو ‪ rw-rw-rw-‬أو ‪666‬‬
‫– الدليل الجديد هو ‪ rwxrwxrwx‬أو ‪777‬‬

‫عبدهللا القحطاني‬
User umask example
Typical user umask
‫الدليل‬ ‫الملف‬
Maxium Allowable Permission rwxrwxrwx 777 rw-rw-rw- 666
umask value -------w- 002 -------w- 002
Default permission rwxrwxr-x 775 rw-rw-r-- 664

‫ النمطية مع المستخدم (المالك) والتي‬umask ‫• باستخدام قيمة‬


‫ سيتم ازالة إذن الكتابة من مجموعة أذونات بقية‬،002 ‫هي‬
“others” ‫المستخدمين‬

‫عبدهللا القحطاني‬
Root umask example
Root user umask
‫الدليل‬ ‫الملف‬
Maxium Allowable Permission rwxrwxrwx 777 rw-rw-rw- 666
umask value ----w--w- 022 ----w--w- 022
Default permission rwxr-xr-x 755 rw-r--r-- 644

،022 ‫ والتي هي‬root ‫ مع المستخدم‬umask ‫• باستخدام قيمة‬


‫سيتم ازالة إذن الكتابة من مجموعة أذونات كل من‬
“others” ‫“ وبقية المستخدمين‬group” ‫المجموعة المالكة‬

‫عبدهللا القحطاني‬
Private umask example
umask for privacy
‫الدليل‬ ‫الملف‬
Maxium Allowable Permission rwxrwxrwx 777 rw-rw-rw- 666

umask value ---rwxrwx 077 ---rwxrwx 077

Default permission rwx------ 700 rw------- 600

‫ سيتم ازالة كل‬،077 ‫ والتي هي‬umask ‫• باستخدام قيمة‬


‫األذونات من مجموعة أذونات كل من المجموعة المالكة‬
“others” ‫“ وبقية المستخدمين‬group”

‫عبدهللا القحطاني‬
‫استخدام األمر ‪umask‬‬
‫‪Using umask‬‬
‫لعرض قيمة ‪ umask‬الحالي‪ ،‬ينفذ األمر ‪ umask‬بدون أي‬ ‫•‬
‫معامل ‪argument‬‬
‫لتعيين ‪ umask‬بالقيمة ‪ ،027‬يتم كتابة األمر ‪umask 027‬‬ ‫•‬
‫قيمة ‪ umask‬الجديدة سيتم تطبيقها فقط خالل الجلسة الحالية‬ ‫•‬
‫عند فتح شل جديد‪ umask ،‬االفتراضي سوف يكون ساري‬ ‫•‬
‫المفعول مرة أخرى‪.‬‬
‫لتعيين ‪ umask‬افتراضي جديد‪ ،‬يتم تعديل الملف ‪~/.bashrc‬‬ ‫•‬
‫قيمة ‪ umask‬الجديدة ليس لها أي تأثير على الملفات أو األدلة‬ ‫•‬
‫الموجودة‪ ،‬ولكن سوف يطبق على الملفات واألدلة الجديدة‬

‫عبدهللا القحطاني‬
‫الوحدة ‪16‬‬
‫األذونات الخاصة‪ ،‬الروابط ومواقع الملفات‬

‫‪Module 16‬‬
‫‪Special Permissions, Links and File‬‬
‫‪Locations‬‬

‫عبدهللا القحطاني‬
‫هدف االمتحان‬
‫‪ 5.4‬األدلة الخاصة والملفات‬
‫• ملخص األهداف‬
‫– العمل مع ملفات النظام والمكتبات‬
‫– فهم الروابط الرقمية‬

‫عبدهللا القحطاني‬
setuid ‫أذن‬

setuid Permission

‫عبدهللا القحطاني‬
‫اإلذن ‪setuid‬‬
‫‪The setuid Permission‬‬
‫• يتم تعيين إذن ‪ setuid‬على بعض أدوات (مرافق) معينه للنظام بحيث‬
‫يمكن للمستخدم العادي تنفيذ البرنامج كما لو تم تشغيله من قبل‬
‫المستخدم ‪ .root‬هذا يسمح للمستخدم العادي بتنفيذ مهام إدارية‬
‫مشتركة خاصة بالنظام دون الحاجة إلى الوصول المباشر إلى‬
‫الحساب ‪.root‬‬
‫• هناك مثال ممتاز على إذن ‪ setuid‬في العمل وهو األمر‬
‫‪ /usr/bin/passwd‬عندما يقوم المستخدم بتنفيذ األمر‬
‫‪ passwd‬بشكل صحيح‪ ،‬فإن األمر يصبح قادرا على تحديث الملف‬
‫‪ /etc/shadow‬لتعيين كلمة المرور الجديدة للمستخدم‪ .‬هذا‬
‫الملف ال يمكن الوصول إليه بشكل طبيعي أال بواسطة المستخدم‬
‫‪.root‬‬

‫عبدهللا القحطاني‬
‫الملفات مع ‪setuid‬‬
‫‪Files with setuid‬‬
‫• الملف الذي لديه اإلذن ‪ setuid‬سيتم وضع الحرف الصغير‬
‫”‪ “s‬للمستخدم "المالك" في موضع التنفيذ‪ ،‬يتم االشارة لكل‬
‫من ‪ setuid‬وموضع التنفيذ للمستخدم المالك بالتالي‪:‬‬
‫‪-rwsr-xr-x‬‬
‫• الملف الذي لديه اإلذن ‪ setuid‬ولكنه يفتقر الى إذن التنفيذ‬
‫للمستخدم المالك‪ ،‬سوف يظهر الحرف الكبير ”‪ “S‬ليبين أن‬
‫اإلذن غير فعال‬
‫‪-rwSr-xr-x‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪ chmod‬مع اإلذن ‪setuid‬‬
‫‪Using chmod with setuid‬‬
‫• األمر ‪ chmod‬يمكن أن يستخدم لتعيين أو ازالة اإلذن‬
‫‪ ،setuid‬سواء تم استخدام الطريقة الرقمية أو الحرفية‪.‬‬
‫• لتعيين ‪ setuid‬عندما يكون ‪ nnn‬هو وضع اإلذن األصلي‪:‬‬
‫‪– chmod u+s file or‬‬
‫‪– chmod 4nnn file‬‬
‫• إلزالة ‪ setuid‬عندما يكون وضع اإلذن األصلي هو ‪4nnn‬‬
‫‪– chmod u-s file or‬‬
‫‪– chmod 0nnn file‬‬

‫عبدهللا القحطاني‬
setgid ‫اإلذن‬

setgid Permission

‫عبدهللا القحطاني‬
‫اإلذن ‪ setgid‬على الملف‬
‫‪The setgid Permission on a File‬‬
‫• اإلذن ‪ setgid‬يستخدم مع الملف مثل ما يستخدم اإلذن ‪ setuid‬ما عدا‬
‫أنه يستخدم مع أذونات المجموعة‪ .‬عندما يقوم المستخدم بتنفيذ الملف‬
‫الذي يملك اإلذن ‪ ،setgid‬فإن النظام يشغل األمر كما اذا كان المستخدم‬
‫عضوا في المجموعة التي تملك التنفيذ‪ ،‬وعادة يمنح الوصول الى ملفات‬
‫اضافية‪.‬‬
‫• كمثال على إذن ‪ setgid‬على ملف هو األمر ‪/usr/bin/wall‬‬
‫األمر ‪ wall‬يرسل رسائل الى محطات المستخدمين األخرى‪ .‬بما أن‬
‫قابلية التنفيذ مملوكة بواسطة مجموعة ”‪ ،“tty‬فإنه عندما تقوم بتشغيل‬
‫اإلذن تقوم بمنح المستخدم الوصول الى الملفات المملوكة من قبل‬
‫مجموعة ”‪ ،“tty‬والتي تسمح للمستخدم بكتابة رسالة الى أي ”‪ “tty‬أو‬
‫محطة على النظام‪.‬‬

‫عبدهللا القحطاني‬
‫اإلذن ‪ setgid‬على الدليل‬
‫‪The setgid Permission on a Directory‬‬
‫• يتم استخدام اإلذن ‪ setgid‬على الدليل من قبل المدراء لجعل‬
‫اإلذن أسهل للمستخدمين األعضاء في المجموعة ليصبحوا‬
‫قادرين على مشاركة الملفات مع المستخدمين األخرين في نفس‬
‫المجموعة‪.‬‬
‫• عندما يستخدم اإلذن ‪ setgid‬على الدليل‪ ،‬فإن أي ملف تم انشاؤه‬
‫في ذلك الدليل يكون مملوكا بشكل آلي للمجموعة التي تملك‬
‫الدليل‬
‫• عندما يتم انشاء دليل فرعي جديد في الدليل الذي يملك ‪،setgid‬‬
‫فإن الدليل الفرعي الجديد سوف يملك اإلذن ‪ setgid‬وستكون‬
‫المجموعة المالكة له هي المجموعة التي تملك الدليل األب‪.‬‬

‫عبدهللا القحطاني‬
‫الملفات مع ‪setgid‬‬
‫‪Files with setgid‬‬
‫• الملف الذي لديه اإلذن ‪ setuid‬سيتم وضع الحرف الصغير‬
‫”‪ “s‬لمجموعة "المالك" في عمود التنفيذ‪ ،‬يتم االشارة لكل من‬
‫‪ setgid‬وموضع التنفيذ للمستخدم المالك بالتالي‪:‬‬
‫‪-r-xr-sr-x‬‬
‫• الملف الذي لديه اإلذن ‪ setgid‬ولكنه يفتقر الى إذن التنفيذ‬
‫للمجموعة المالكة‪ ،‬سوف يظهر الحرف الكبير ”‪ “S‬ليبين أن‬
‫اإلذن غير فعال‬
‫‪-r-xr-Sr-x‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪ chmod‬مع اإلذن ‪setgid‬‬
‫‪Using chmod with setgid‬‬
‫• األمر ‪ chmod‬يمكن أن يستخدم لتعيين أو ازالة اإلذن‬
‫‪ ،setgid‬سواء تم استخدام الطريقة الرقمية أو الحرفية‪.‬‬
‫• لتعيين ‪ setgid‬عندما يكون ‪ nnn‬هو وضع اإلذن األصلي‪:‬‬
‫‪– chmod g+s file or‬‬
‫‪– chmod 2nnn file‬‬
‫• إلزالة ‪ setgid‬عندما يكون وضع اإلذن األصلي هو ‪2nnn‬‬
‫‪– chmod g-s file or‬‬
‫‪– chmod 0nnn file‬‬

‫عبدهللا القحطاني‬
Sticky Bit ‫العمل مع‬

Working with Sticky Bit

‫عبدهللا القحطاني‬
‫اإلذن ‪sticky bit‬‬
‫‪The sticky bit Permission‬‬
‫• اإلذن ‪ sticky bit‬يُستخدم لمنع األخرين من حذف الملفات التي‬
‫ال يملكونها في الدليل الذي تمت مشاركته مع األخرين‬
‫• عادة‪ ،‬اذا كان المستخدم يملك اذن الكتابة على الدليل‪ ،‬فإن ذلك‬
‫المستخدم يستطيع حذف أي ملف في ذلك الدليل‪ ،‬بما في ذلك‬
‫الملفات التي ال يملكها المستخدم‪ ،‬بغض النظر عن األذونات‬
‫الملف‪.‬‬
‫• المثال التقليدي على الدليل الذي عادة يملك اإلذن ‪ sticky bit‬هو‬
‫الدليل ‪ ./tmp‬هذا الدليل هو مقياس على كل أنظمة اللينكس‬
‫وتوفر مكان حيث جميع المستخدمين يستطيعون تخزين الملفات‪.‬‬
‫مع مجموعة ‪ ،sticky bit‬ال يستطيع المستخدم حذف ملفات‬
‫‪ /tmp‬الخاصة بالمستخدمين األخرين‪.‬‬

‫عبدهللا القحطاني‬
‫األدلة مع مجموعة ‪sticky bit‬‬
‫‪Directories with the sticky bit set‬‬
‫عندما يتم تعيين إذن ‪ ،sticky bit‬الحرف "‪ "t‬سوف يظهر في عمود‬ ‫•‬
‫التنفيذ لمجموعة بقية المستخدمين‪drwxrwxrwt :‬‬
‫بعكس ‪ setuid‬و ‪ ،setgid‬عندما تستخدم األحرف الكبيرة لإلشارة على‬ ‫•‬
‫المشكلة التي يمكن أن تمنع تلك األذونات من العمل‪ ،‬فإن ظهور الحرف‬
‫الكبير "‪ "T‬ال يعني دائما أن إذن ‪ sticky bit‬لم يتم ضبطه بشكل‬
‫صحيح‪drwxrwx—T :‬‬
‫اذا ما كانت مجموعة المالك أو بقية المستخدمين يملكون إذن التنفيذ‪ ،‬فإنه‬ ‫•‬
‫من الممكن إلذن ‪ sticky bit‬أن يعمل ألجل تلك الحسابات‪.‬‬
‫اذا كان المستخدم المالك هو من يملك إذن التنفيذ فقط‪ ،‬فإنه من المستحيل‬ ‫•‬
‫إلذن ‪ sticky bit‬أن يعمل ألجل تلك الحسابات‪drwx------T :‬‬

‫عبدهللا القحطاني‬
‫استخدام األمر ‪ chmod‬مع اإلذن ‪sticky bit‬‬
‫‪Using chmod with sticky bit‬‬
‫• األمر ‪ chmod‬يمكن أن يستخدم لتعيين أو ازالة اإلذن‬
‫‪ sticky bit‬سواء تم استخدام الطريقة الرقمية أو الحرفية‪.‬‬
‫• لتعيين ‪ sticky bit‬عندما ‪ nnn‬يكون وضع اإلذن األصلي‪:‬‬
‫‪– chmod o+t dir or‬‬
‫‪– chmod 1nnn dir‬‬
‫• إلزالة ‪ sticky bit‬عندما يكون الوضع األصلي هو ‪:1nnn‬‬
‫‪– chmod o-t dir or‬‬
‫‪– chmod 0nnn dir‬‬

‫عبدهللا القحطاني‬
‫الروابط الصلبة والرمزية‬
‫(المادية والغير مادية)‬
‫‪Hard and Symbolic Links‬‬

‫عبدهللا القحطاني‬
‫الروابط الصلبة والروابط الرمزية‬
‫‪Hard Links and Symbolic Links‬‬
‫• كال الروابط الصلبة واللينة (أيضا تسمى الرمزية) مفيد لتوفير‬
‫األسماء البديلة للملفات واألدلة‬
‫• عوضا عن الحاجة لكتابة مسار الملف الطويل والصعب مثل‪:‬‬
‫‪• /usr/share/doc/package/data/2013/oct‬‬
‫‪ober/10/valuable-information.txt‬‬
‫• ‪ ...‬قد يكون رابط االسم لنفس الملف بكل بساطة‪:‬‬
‫‪• ~/valuable.txt‬‬
‫• كل تقنيات الربط (الصلبة واللينة) لديه مميزات وعيوب‬

‫عبدهللا القحطاني‬
‫الروابط الصلبة ضد الروابط الرمزية‬
Hard Links vs. Symbolic Links

SymLink1 Originalfile HardLink1

inode inode

Data Blocks Data Blocks

‫عبدهللا القحطاني‬
‫فهم نظام الملفات‬
‫‪Understanding the Filesystem‬‬
‫• لفهم كيف تعمل الروابط‪ ،‬فإنه من المفيد فهم كيف يقوم نظام‬
‫الملفات بتتبع الملفات‪.‬‬
‫• لكل ملف تم انشاؤه‪ ،‬هناك كتلة واجدة من البيانات تسمى‬
‫جدول ‪ )inode table( inode‬التي تخزن المعلومات‬
‫األولية للملف مثل‪ :‬األذونات‪ ،‬الملكيات‪ ،‬الطابع الزمني‬
‫ومؤشرات الى حيث يتم تخزين محتويات الملف‬
‫• جدول ‪ inode‬يتضمن غالبا على كل المعلومات حول الملف‬
‫ما عدا اسم الملف‬

‫عبدهللا القحطاني‬
‫)‪Understanding the Filesystem(cont‬‬
‫كل جدول ‪ inode‬يكون مرتبط برقم ‪inode ( inode‬‬ ‫•‬
‫‪ )number‬فريد‬
‫األمر ‪ ls –i‬سوف يعرض رقم ‪ inode‬لكل ملف‬ ‫•‬
‫الدليل يخزن أسماء جميع الملفات بداخل الدليل كما يخزن‬ ‫•‬
‫أرقام ‪ inode‬المرتبطة بها‪.‬‬
‫عندما يتم الوصول الى الملف‪ ،‬فإن النظام يقرأ بينات الدليل‬ ‫•‬
‫ليجد اسم الملف ومن ثم يقوم باسترداد البيانات الخاصة به‬
‫عن طريق البحث عن كتل البيانات المشار اليها في ‪inode‬‬
‫التابع لها‪.‬‬

‫عبدهللا القحطاني‬
‫مثال على الربط الصلب‬
‫‪Hard Link Example‬‬
‫بفرض أن ملف ‪ /etc/passwd‬يحتوي على ‪123‬‬ ‫•‬
‫كرقم ‪inode‬‬
‫الدليل ‪ /etc‬سيخزن جدول مكون من اسماء الملفات‬ ‫•‬
‫وارقام ‪ inode‬مثل‬
‫‪file names‬‬ ‫‪inode numbers‬‬
‫‪passwd‬‬ ‫‪123‬‬
‫‪shadow‬‬ ‫‪175‬‬
‫‪group‬‬ ‫‪144‬‬
‫‪gshadow‬‬ ‫‪897‬‬

‫عبدهللا القحطاني‬
Hard Link Example(cont)
‫ والذي هو رابط‬/etc/mypasswd ‫الملف المسمى‬ •
‫ سوف يشار اليه ايضا‬/etc/passwd ‫صلب للملف‬
inode 123 ‫بالرقم‬
file names inode numbers
passwd 123
mypasswd 123
shadow 175
group 144
gshadow 897

‫عبدهللا القحطاني‬
‫الروابط الصلبة‬
‫‪Hard Links‬‬
‫• كل ملف يملك على األقل رابط صلب واحد اليه (من أجل اسم‬
‫الملف األصلي)‬
‫• الرقم الخاص بعدد الروابط يظهر بين األذونات وبين المستخدم‬
‫المالك في القائمة التفصيلية‪:‬‬
‫‪$ echo data > file.original‬‬
‫*‪$ ls -li file.‬‬
‫‪278772 -rw-rw-r--. 1 sysadmin sysadmin 5 Oct 25 15:42 file.original‬‬

‫• عدد الروابط سوف يزيد بمقدار واحد لكل رابط صلب الذي تتم‬
‫اضافته أو تنقص بمقدار واحد لكل رابط صلب الذي تتم ازالته‬

‫عبدهللا القحطاني‬
‫انشاء الروابط الصلبة‬
‫‪Creating Hard Links‬‬
‫• إلنشاء الروابط الصلبة‪ ،‬األمر ‪ ln‬يستخدم مع أول‬
‫‪ argument‬ليصبح اسم الملف موجود وثاني ‪argument‬‬
‫ليصبح اسم الملف الجديد ليقوم بربطه بالملف‪.‬‬
‫‪$ ln file.original file.hard.1‬‬
‫*‪$ ls -li file.‬‬
‫‪278772 -rw-rw-r--. 2 sysadmin sysadmin 5 Oct 25 15:53 file.hard.1‬‬
‫‪278772 -rw-rw-r--. 2 sysadmin sysadmin 5 Oct 25 15:53 file.original‬‬

‫• الحظ في المثال السابق أن ‪ inode‬هو نفسه لكال الملفين وأن‬


‫كليهما لديه يملك نفس عدد الروابط وهو ‪2‬‬

‫عبدهللا القحطاني‬
‫الروابط اللينة (الرمزية)‬
‫‪Soft Links‬‬
‫الروابط اللينة (الرمزية) هي ملف يشير الى اسم ملف آخر‬ ‫•‬
‫نوع الملف للروابط اللينة هو ”‪“l‬‬ ‫•‬
‫الروابط اللينة تشبه االختصارات في نظام ‪Windows‬‬ ‫•‬
‫العديد من الروابط اللينة موجودة فعال مع النظام بما في ذلك‬ ‫•‬
‫‪/etc/grub.conf‬‬
‫‪$ ls -l /etc/grub.conf‬‬
‫>‪lrwxrwxrwx. 1 root root 22 Feb 15 2011 /etc/grub.conf -‬‬
‫‪../boot/grub/grub.conf‬‬

‫عبدهللا القحطاني‬
‫انشاء الروابط اللينة‬
‫‪Creating Soft Links‬‬
‫• انشاء رابط لين يتضمن استخدام األمر ‪ ln‬مع الخيار ‪–s‬‬
‫ومع الملف الموجود كأول وسيط ‪ argument‬ومع اسم‬
‫الملف كثاني وسيط ‪:argument‬‬
‫‪$ ln -s /etc/passwd mypasswd‬‬
‫‪$ ls -l mypasswd‬‬
‫‪lrwxrwxrwx. 1 sysadmin sysadmin 11 Oct 31 13:17‬‬ ‫>‪mypasswd -‬‬
‫‪/etc/passwd‬‬

‫• انشاء رابط لين سوف لن يزيد عداد الرابط على الملف‬


‫الموجود‬

‫عبدهللا القحطاني‬
‫مقارنة الروابط الصلبة واللينة‬
‫‪Comparing Hard and Soft Links‬‬
‫• الروابط الصلبة ليس لديها أي نقطة للخطأ‬
‫– كل اسماء الملفات التي تم ربطها الى ‪ inode‬ستكون متكافئة‬
‫– ما دام ما يزال هناك رابط صلب واحد متبقي‪ ،‬فإن الوصل الى‬
‫‪ inode‬سيبقى متاح‬
‫• الروابط اللينة يوجد لديها نقطة واحدة للخطأ‬
‫– اذا الملف األصلي تم حذفة أو تم نقله‪ ،‬فإن ملف الرابط اللين سوف‬
‫لن يبقى صالحا‬
‫– يمكن ان يقال عن الرابط اللين الخاطئ بأنه ُمعَلق ”‪“dangling‬‬
‫• تعد ميزة للروابط الصلبة (‪)Advantage: Hard Link‬‬

‫عبدهللا القحطاني‬
‫مقارنة الروابط الصلبة واللينة‬
‫‪Comparing Hard and Soft Links‬‬
‫• الروابط الصلبة من الصعب رؤيتها‬
‫– الملف الذي عداد الرابط أكبر من واحد‬
‫– يمكن العثور عليه باستخدام (‪)find / -inum 123‬‬
‫• الرابط اللين من السهل رؤيته‬
‫– ملف الربط (نوع ‪)l‬‬
‫– اسم الملف يؤشر على ما هو مرتبط به‬
‫• تعد ميزة للرابط اللين (‪)Advantage: Soft Link‬‬

‫عبدهللا القحطاني‬
‫مقارنة الروابط الصلبة واللينة‬
‫‪Comparing Hard and Soft Links‬‬
‫• الروابط الصلبة‪:‬‬
‫– ال يمكن ربطها بالدليل‬
‫– ال يمكن ربط الملف الموجود على جهاز واحد أو قسم الى ملف‬
‫على جهاز آخر أو قسم آخر‬
‫• الروابط اللينة‬
‫– يمكن ربطها بملف الدليل‬
‫– يمكن أن تعبر من جهاز واحد أو قسم الى اآلخر‬
‫• تعد ميزة للرابط اللين (‪)Advantage: Soft Link‬‬

‫عبدهللا القحطاني‬
‫فهم نظام الملفات‬

‫‪Understanding the Filesystem‬‬

‫عبدهللا القحطاني‬
‫معايير التسلسل الهرمي لنظام الملفات‬
‫)‪Filesystem Hierarchy Standard (FHS‬‬
‫• ‪ FHS‬هو مجموعة من القواعد أو اإلرشادات التي يُنصح باتباعها من أجل‬
‫التعرف على كيفية تنظيم األدلة والملفات‬
‫• موجودة في الموقع ‪http://www.pathname.com/fhs‬‬
‫• يتم تصنيف كل دليل في النظام الى‪:‬‬
‫– قابل للمشاركة على الشبكة ليستخدم من قبل أجهزة متعددة أو ال‬
‫– يوجد لديها ملفات تملك محتوى يمكن أن يتغير (متغير) أو ال يتغير (ثابت)‬
‫• لتصنيف أدلة النظام‪ ،‬غالبا ما يكون من الضروري استخدام األدلة تحت المستوى‬
‫األعلى‬
‫غير قابل للمشاركة‬ ‫قابل للمشاركة‬
‫‪Not Shareable‬‬ ‫‪Shareable‬‬
‫‪/var/mail‬‬ ‫‪/var/lock‬‬ ‫متغير ‪Variable‬‬
‫‪/opt‬‬ ‫‪/etc‬‬ ‫ثابت ‪Static‬‬
‫عبدهللا القحطاني‬
‫معايير التسلسل الهرمي لنظام الملفات‬
‫)‪Filesystem Hierarchy Standard (FHS‬‬
‫• تحدد معايير التسلسل الهرمي لنظام الملفات أربع سالسل هرمية‪:‬‬
‫– التسلسل الهرمي )‪ root (/‬أو الدليل األعلى مستوى‬
‫• يجب أن يكون قادر على تشغيل النظام‪ ،‬استرجاعه‪ ،‬اعادة تشغيله أو اصالحه‬
‫• يجب أن يكون قادر على ربط (‪ )mount‬نظام الملفات مع أنظمة الملفات‬
‫األخرى‬
‫– التسلسل الهرمي ‪/usr‬‬
‫• يحتوي على معظم أوامر المستخدم تحت ‪/usr/bin‬‬
‫• هذا دليل ثابت يمكن أن تتم مشاركته بشكل طبيعي‬
‫– التسلسل الهرمي ‪/usr/local‬‬
‫• هو المكان المخصص للبرامج المثبتة محليا‬
‫– التسلسل الهرمي ‪/var‬‬
‫• يحتوي على البيانات المتغيرة‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي )‪root (/‬‬

‫‪The root (/) hierarchy‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي )‪root (/‬‬
‫‪The root (/) hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫هو أساس الشكل العام (الهيكل)‪ ،‬أو جذر نظام الملفات‪ ،‬هذا الدليل يوحد‬ ‫‪/‬‬
‫كل األدلة بغض النظر عن ما اذا كانت أقسام محلية‪ ،‬أجهزة محمولة أو‬
‫شبكة مشتركة‪.‬‬
‫هذا الدليل يحفظ الثنائيات األساسية مثل أوامر ‪ ،cp ،ls‬و ‪rm‬؛ يجب‬ ‫‪/bin‬‬
‫أن تكون جزءا من نظام ملفات الجذر ‪root‬‬
‫هذا الدليل يحفظ الملفات الضرورية إلقالع النظام مثل نواة ‪Linux‬‬ ‫‪/boot‬‬
‫وملفات التهيئة المرتبطة بها‪.‬‬
‫هذا الدليل مأهول بالملفات التي تمثل المكونات المادية والملفات الخاصة‬ ‫‪/dev‬‬
‫األخرى‪ ،‬مثل ملف ‪ /dev/null‬وملف ‪/dev/zero‬‬
‫هذا الدليل يحتوي على ملفات التهيئة األساسية للمضيف مثل ملف‬ ‫‪/etc‬‬
‫‪ /etc/hosts‬وملف ‪/etc/passwd‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي )‪root (/‬‬
‫‪The root (/) hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫هو المكان المخصص لألدلة األساسية للمستخدمين ‪home‬‬ ‫‪/home‬‬
‫‪directories‬‬
‫المكتبات األساسية لدعم الملفات التنفيذية في األدلة ‪ /bin‬و ‪/sbin‬‬ ‫‪/lib‬‬
‫>‪ /lib<qual‬مكتبات أساسية بنيت من أجل هيكلية معينة‪ .‬مثل‪ ،‬الدليل ‪/lib64‬‬
‫للمعالجات المتوافقة مع ‪64 bit AMD/Intel x86‬‬
‫نقطة الربط من أجل ربط الوسائط المتنقلة آليا‬ ‫‪/media‬‬
‫نقطة الربط من أجل ربط أنظمة الملفات المؤقتة يدويا‬ ‫‪/mnt‬‬
‫مكان الطرف الثالث االختياري لتثبيت البرامج‬ ‫‪/opt‬‬
‫نظام ملفات تخيلي للنواة إلنشاء تقرير العمليات والمعلومات األخرى‬ ‫‪/proc‬‬
‫الدليل الرئيسي للمستخدم ‪root‬‬ ‫‪/root‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي )‪root (/‬‬
‫‪The root (/) hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫ثنائيات النظام األساسية المستخدمة في المقام األول من قبل المستخدم‬ ‫‪/sbin‬‬
‫‪root‬‬
‫نظام ملفات تخيلي يقوم بحفظ المعلومات حول المكونات المادية‬ ‫‪/sys‬‬
‫المرتبطة بالنظام‬
‫الموقع الذي يمكنه استضافة خدمات محددة للموقع‬ ‫‪/srv‬‬
‫الدليل حيث يستطيع جميع المستخدمين انشاء ملفاتهم المؤقتة التي‬ ‫‪/tmp‬‬
‫يفترض أن تصبح جاهزة في وقت االقالع (ولكن عادة ال تكون كذلك)‬
‫التسلسل الهرمي الثاني للملفات الثانوية ليتم استخدامها من قبل عدة‬ ‫‪/usr‬‬
‫مستخدمين‬
‫التسلسل الهرمي ‪ /var‬يحتوي على الملفات التي تتغير مع مرور‬ ‫‪/var‬‬
‫الوقت‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي ‪/usr‬‬

‫‪The /usr hierarchy‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي ‪/usr‬‬
‫‪The /usr hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫ثنائيات للمستخدمين االعتياديين‪ ،‬تستخدم عندما يكون النظام في‬ ‫‪/usr/bin‬‬
‫وضع متعدد المستخدمين‬
‫الملفات التي يتم تضمينها لتترجم البرامج من التوزيعة‬ ‫‪/usr/include‬‬
‫المكتبات التي تدعم الملفات التنفيذية في األدلة ‪ /usr/bin‬و‬ ‫‪/usr/lib‬‬
‫‪/usr/sbin‬‬
‫>‪ /usr/lib<qual‬مكتبات ثانوية بنيت من أجل هيكلية معينة‬
‫ثنائيات النظام التي تستخدم من قبل المدراء في وضع متعدد‬ ‫‪/usr/sbin‬‬
‫المستخدمين‬
‫المكان الذي تخزن به وثائق البرامج وبينات التطبيقات األخرى‬ ‫‪/usr/share‬‬
‫ملف مصدر الكود الخاص بترجمة النواة ‪compiling the‬‬ ‫‪/usr/src‬‬
‫‪kernel‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي ‪/usr/local‬‬
‫‪The /usr/local hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫ثنائيات البرامج المحلية للمستخدم العادي‬ ‫‪/usr/local/bin‬‬
‫ملفات تهيئة البرامج المحلية‬ ‫‪/usr/local/etc‬‬
‫‪ /usr/local/include‬الملفات التي تحتاج الى أن تُضمن بالترتيب لترجمة كود المصدر‬
‫المحلي‬
‫األدلة‬ ‫في‬ ‫التنفيذية‬ ‫الملفات‬ ‫لدعم‬ ‫المكتبة‬ ‫ملفات‬ ‫‪/usr/local/lib‬‬
‫‪ /usr/local/bin‬و ‪/usr/local/sbin‬‬
‫‪ /usr/local/libexec‬البرامج التنفيذية المحلية التي تستخدم بواسطة البرامج األخرى وال‬
‫تستخدم بشكل مباشر من قبل المستخدمين‬
‫الثنائيات المحلية المستخدمة من قبل مدير النظام‬ ‫‪/usr/local/sbin‬‬
‫المكان الذي تخزن به البرامج المحلية لصفحات ‪ ،man‬صفحات‬ ‫‪/usr/local/share‬‬
‫المعلومات ومعلومات التطبيقات المحلية األخرى‬
‫المكان الذي يوجد به عادة كود المصدر للبرامج التي تم ترجمتها محليا‬ ‫‪/usr/local/src‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي ‪/var‬‬

‫‪The /var hierarchy‬‬

‫عبدهللا القحطاني‬
‫التسلسل الهرمي ‪/var‬‬
‫‪The /var hierarchy‬‬
‫الغرض من الدليل ‪Purpose of Directory‬‬ ‫الدليل ‪Directory‬‬
‫‪ /var/cache‬ملفات تستخدم لتخزين بيانات التطبيق بشكل مؤقت‬
‫الدليل الذي يحفظ معظم ملفات السجل‬ ‫‪/var/log‬‬
‫‪ /var/lock‬المكان الذي تحفظ به الملفات المغلقة (‪ )locked‬الخاصة‬
‫بمشاركة الموارد‬
‫‪ /var/spool‬المكان الذي يخزن به ملفات التخزين المؤقت (‪ )spool‬الخاصة‬
‫بالطباعة والبريد‬
‫الملفات المؤقتة التي يتم حفظها عند اعادة التشغيل‬ ‫‪/var/tmp‬‬

‫عبدهللا القحطاني‬
‫التنظيم داخل ‪FHS‬‬
‫‪Organizing within the FHS‬‬
‫• باإلضافة الى أن ‪ FHS‬مفيدة لفهم مفصل لتصميم األدلة‬
‫المستخدمة من قبل معظم توزيعات اللينكس‪ ،‬فإن المواضيع‬
‫التالية ستصف تصميم األدلة يشكل أكثر عمومية‪:‬‬
‫– األدلة األساسية للمستخدم ‪User home directories‬‬
‫– األدلة الثنائية ‪Binary directories‬‬
‫– أدلة تطبيقات البرامج ‪Software application directories‬‬
‫– أدلة المكتبات ‪Library directories‬‬
‫– أدلة البيانات المتغيرة ‪Variable data directories‬‬

‫عبدهللا القحطاني‬
‫األدلة األساسية للمستخدم‬
‫‪User home directories‬‬
‫• الدليل ‪ /home‬عادة يحتوي على دليل منفصل لكل مستخدم‬
‫مع الحساب على النظام باستثناء المستخدم ‪root‬‬
‫• الدليل ‪ /root‬هو المكان االختياري المفضل كدليل رئيسي‬
‫للمستخدم ‪root‬‬
‫• بدون تدخل السؤول‪ ،‬المستخدمون يستطيعون فقط انشاء‬
‫الملفات في أدلتهم الرئيسية‪ ،‬الدليل ‪ /tmp‬والدليل‬
‫‪/var/tmp‬‬

‫عبدهللا القحطاني‬
‫األدلة الثنائية‬

‫‪Binary Directories‬‬

‫عبدهللا القحطاني‬
‫األدلة الثنائية للمستخدم‬
‫‪User Binary directories‬‬
‫الدالئل الثنائية تحتوي على البرامج (ليس بالضرورة فعال أن‬ ‫•‬
‫تكون كلها ملفات ثنائية) التي يقوم المستخدمون والمدراء بتنفيذها‬
‫لبدء العمليات أو لتشغيل التطبيقات‬
‫األدلة التي اسمها ”‪ “bin‬يقصد بها المستخدمون العاديون وتشمل‬ ‫•‬
‫‪ /usr/bin ،/bin‬و ‪/usr/local/bin‬‬
‫تطبيقات الطرف الثالث يمكنها أن تخزن أيضا الملفات التنفيذية‬ ‫•‬
‫في ‪ /usr/local/application/bin‬أو في‬
‫‪/opt/application/bin‬‬
‫المستخدمون يمكنهم أن يملكون الدليل ”‪ “bin‬الخاص بهم في‬ ‫•‬
‫دليلهم الرئيسي‪ ،‬مثل ‪/home/bob/bin‬‬
‫عبدهللا القحطاني‬
‫األدلة الثنائية للنظام‬
‫‪System Binary Directories‬‬
‫• أدلة النظام الثنائية تحتوي على البرامج أو التطبيقات التي‬
‫يقصد بها المسؤول (المستخدم ‪)root‬‬
‫• أدلة النظام الثنائية يكون اسمها ”‪ “sbin‬وتشمل ‪،/sbin‬‬
‫‪ /usr/sbin‬و ‪/usr/local/sbin‬‬
‫• تطبيقات الطرف الثالث االدارية يمكن تخزين ملفاتها التنفيذية‬
‫في ‪ /usr/local/application/sbin‬أو‬
‫في ‪/opt/application/sbin‬‬

‫عبدهللا القحطاني‬
‫المتغير ‪ PATH‬واألدلة الثنائية‬
‫‪PATH and Binary Directories‬‬
‫من أجل أن تكون قادرا على تنفيذ األمر المضمن في أحد األدلة‬ ‫•‬
‫”‪ “bin‬أو ”‪ “sbin‬عن طريق طباعة اسم األمر فقط‪ ،‬فإن الدليل‬
‫الذي يحتوي على األمر يحتاج الى يتم تضمينه في قائمة‬
‫مجموعة األدلة في الموجودة في المتغير ‪PATH‬‬
‫محتويات المتغير ‪ PATH‬يمكن عرضها باستخدام األمر ‪echo‬‬ ‫•‬
‫‪$PATH‬‬
‫المتغير ‪ PATH‬يتم تخصيصه عادة عن طريق تعديل الملف‬ ‫•‬
‫‪~/.bash_profile‬‬
‫لتنفيذ األمر في الدليل الغير موجود في المتغير ‪ ،PATH‬يتم كتابة‬ ‫•‬
‫المسار المطلق أو النسبي مع األمر‬
‫عبدهللا القحطاني‬
‫أدلة التطبيق‬

‫‪Application Directories‬‬

‫عبدهللا القحطاني‬
‫أدلة تطبيق البرامج‬
‫‪Software Application Directories‬‬
‫• بعكس نظام ‪ ،Windows‬التطبيقات عادة ال تثبت في دليل واحد مثل‬
‫‪C:\Program Files‬‬
‫• عن طريق االستعالم عن حزمة تطبيق البرنامج‪ ،‬سوف يتم سرد مواقع‬
‫الملف‪:‬‬
‫)‪– dpkg -L application (Debian-derived distributions‬‬
‫)‪– rpm -ql application (RPM based distributions‬‬
‫• ملفات البرنامج القابل للتنفيذ يمكن أن تذهب الى ‪ /usr/bin‬اذا تم‬
‫انشاؤها من التوزيعة‪ ،‬وإال فإنها قد تذهب الى‬
‫‪ /usr/local/bin‬أو ‪/opt/application/bin‬‬

‫عبدهللا القحطاني‬
‫أدلة تطبيق البرامج‬
‫‪Software Application Directories‬‬
‫• بيانات التطبيقات يمكن أن تذهب الى األدلة الفرعية‬
‫‪/opt/application ،/usr/lib ،/usr/share‬‬
‫أو ‪/var/lib‬‬
‫• الوثائق الخاصة بالتطبيق سوف تذهب بشكل طبيعي الى األدلة‬
‫الفرعية ‪ /usr/share/man ،/usr/share/doc‬و‬
‫‪ /usr/share/info‬اذا تم انشاؤها من التوزيعة وإال فإنها‬
‫‪،/usr/local/share/man‬‬ ‫الى‬ ‫تذهب‬ ‫قد‬
‫‪،/usr/local/share/doc‬‬
‫‪ /usr/local/share/info‬أو الى الدليل الفرعي‬
‫‪/opt/application‬‬

‫عبدهللا القحطاني‬
‫أدلة المكتبات‬

‫‪Library Directories‬‬

‫عبدهللا القحطاني‬
‫أدلة المكتبات‬
‫‪Library directories‬‬
‫المكتبات هي ملفات تحتوي على الكود المشترك بين البرامج‬ ‫•‬
‫المتعددة‬
‫استخدام المكتبات يوفر مساحة في القرص والذاكرة وبالتالي‬ ‫•‬
‫العديد من البرامج يمكن ان تتشارك فيها وال تكون هناك‬
‫حاجة لفصل النسخ‬
‫أسماء ملفات المكتبة عادة تنتهي بالعالمة ”‪ “.so‬لتدلل على‬ ‫•‬
‫أنها (عناصر مشتركة) ”‪“shared objects‬‬
‫من الشائع عن نظام ‪ 64 bit‬أنه يملك مكتبات لإلصدار ‪64‬‬ ‫•‬
‫‪ bit‬واالصدار ‪32 bit‬‬

‫عبدهللا القحطاني‬
‫أدلة المكتبات‬
‫‪Library directories‬‬
‫• أدلة المكتبات يكون لديها عادة مسار ينتهي في الدليل ”‪“lib‬‬
‫• المكتبات التي تدعم المكتبات األصلية الموجودة في ‪ /bin‬أو‬
‫‪ /sbin‬توجد في ‪ /lib‬وفي ‪/lib64‬‬
‫• لدعم الملفات القابلة للتنفيذ في األدلة ‪ /usr/bin‬و‬
‫‪ ،/usr/sbin‬يتم استخدام المكتبات ‪ /usr/lib‬و‬
‫‪/usr/lib64‬‬
‫• لدعم التطبيقات التي ليست جزءا من التوزيعة‪ ،‬يتم استخدام المكتبات‬
‫‪ /usr/local/lib‬و ‪/opt/application/lib‬‬

‫عبدهللا القحطاني‬
‫أدلة البيانات المتغيرة‬

‫‪Variable Data Directories‬‬

‫عبدهللا القحطاني‬
‫أدلة البيانات المتغيرة‬
‫‪Variable Data Directories‬‬
‫• الدليل ‪ /var‬والعديد من أدلته الفرعية تحتوي على الملفات‬
‫التي يتغير محتواها بشكل مستمر‬
‫• اذا تم استخدام النظام كخادم بريد‪ ،‬فإن األدلة ‪/var/mail‬‬
‫أو ‪ /var/spool/mail‬ستحتفظ بالرسائل‬
‫• اذا تم استخدام النظام كخادم طباعة‪ ،‬فإن الدليل‬
‫‪ /var/spool/cups‬سوف يستخدم لحفظ مهام الطباعة‬
‫• باالعتماد على نشاط النظام الخاص بك وألي مستوى من‬
‫التفاصيل تم تسجيله‪ ،‬فإن ملفات السجل الموجودة في الدليل‬
‫‪ /var/log‬قد تخزن كميات كبيرة من البيانات‪.‬‬
‫عبدهللا القحطاني‬
‫أدلة البيانات المتغيرة‬
‫‪Variable Data Directories‬‬
‫• بينما ملفات السجل الموجودة في الدليل ‪ /var/log‬قد‬
‫تكون مفيدة جدا في اكتشاف المشكالت واصالحها‪ ،‬اال أنها‬
‫قد تصبح هي المشكلة اذا قامت بتعبئة نظام الملفات‬
‫• امتالك الخدمات مثل اتاحة البريد والطباعة قد يكون مفيد‪،‬‬
‫ولكنه اذا تسبب في سقوط النظام فستصبح هي المشكلة‬
‫• عادة يتم ربط ‪ /var‬بقسم (‪ )partition‬منفصل كإجراء‬
‫احترازي لمنع النشاط تحت ‪ /var‬من تعبئة نظام ملفات‬
‫الجذر ‪ root‬ومن اسقاط النظام‬

‫عبدهللا القحطاني‬

You might also like