Vous êtes sur la page 1sur 621

‫دليل إدارة خواديم أوبنتو‬

‫الدصدار ‪14.04‬‬

‫ترجمة‬

‫عبد اللطيف ايمش‬


‫عبد اللطيف ايمش‬
‫عبتتد اللطيتتف ايمتتش‪ ،‬أدرس الهندستتة المدينتتة فتتي جامعتتة حلتتب‪ ،‬مهتتتم‬

‫صتتتا تطتتتوير التتتويب وإدارة الظنظمتتتة والختتتواديم؛ متتتترجم كتتتتاب‬


‫بالتقنيتتتة خصو ص‬

‫»سطر أوامر ليننسكس« وشاركت في تأليف كتاب »تعلتتم البرمجتتة بلغتتة ‪.«PHP‬‬

‫أكتتتتتب حال صيتتتتا فتتتتي أكاديميتتتتة حستتتتوب‪ ،‬ويمسكنتتتتك التواصتتتتل معتتتتي عتتتتبر بريتتتتدي‬

‫‪.‬‬ ‫اللسكتروظني‪:‬‬
‫هذا الكتاب‬
‫ن‬
‫أظنتج هذا السكتاب برعاية شركة حسوب وأكاديمية حسوب‪.‬‬

‫أكاديمية حسوب‬
‫تهتتتدف أكاديميتتتة حستتتوب إلتتتى تتتتوفير مقتتتال ت ودروس عاليتتتة‬

‫الجتتتودة حتتتول مجتتتال ت نمختلفتتتة وبلغتتتة عربيتتتة فصتتتيحة‪ .‬بتتتاب‬

‫النمساهمة على الكاديمية مفتوح لسكل من يرى في ظنفسه القدرة‬

‫على توفير مقال ت عالية الجودة‪.‬‬

‫‪Academy.hsoub.com‬‬

‫شركة حسوب‬

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

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

‫مختلفتتتتة تتتتواجه المستتتتخدمين فتتتي العتتتالم العربتتتي‪ .‬يعمتتتتل فتتتي‬

‫حسوب فريق شاب وشغوف من مختلف التتدول العربيتتة وتمتلتتك‬

‫الشركة عدة خدما ت يمسكن معرفتها بزيارة موقع الشركة‬

‫‪Hsoub.com‬‬
‫▲‬

‫الفهرس‬
‫تقديم ‪11 .........................................................‬‬

‫تمهيد ‪13 .......................................................‬‬


‫‪ .1‬الدعم ‪14 ......................................................................................‬‬

‫التثبيت ‪15 ......................................................‬‬


‫‪ .1‬التحضير للتثبيت ‪16 .................................................................‬‬

‫‪ .2‬التثبيت من قرص مضغوط ‪18 ...............................................‬‬

‫‪ .3‬الترقية ‪23 ..................................................................................‬‬

‫‪ .4‬التثبيت المتقدم ‪24 ..................................................................‬‬

‫‪ .5‬تفريغ اظنهيار النواة ‪37 ...............................................................‬‬

‫إدارة الحزم ‪43 ...............................................‬‬


‫‪ .1‬مقدمة ‪44 ....................................................................................‬‬

‫‪ .2‬الداة ‪45 .......................................................................... dpkg‬‬

‫‪ .3‬الداة ‪47 ................................................................... Apt-Get‬‬

‫‪ .4‬الداة ‪49 ................................................................. Aptitude‬‬

‫‪ .5‬التحديثا ت التلقائية ‪52 ............................................................‬‬

‫‪ .6‬الضبط ‪54 ...................................................................................‬‬

‫‪ .7‬مصادر ‪56 ...................................................................................‬‬


‫الشبكات ‪58 ...................................................‬‬
‫‪ .1‬ضبط الشبسكة ‪59 .........................................................................‬‬

‫‪ .2‬بروتوكول ‪74 .............................................................. TCP/IP‬‬

‫‪ .3‬بروتوكول ضبط المضيف ديناميسكييا ‪82 .................. DHCP‬‬

‫‪ .4‬مزامنة الوقت باستخدام بروتوكول ‪87 ..................... NTP‬‬

‫ربط الجهزة متعدد الطرق ‪90 ......................‬‬


‫‪ .1‬مقدمة عن ‪91 ............................................. DM-Multipath‬‬

‫‪ .2‬أجهزة ‪96 ............................................................. Multipath‬‬

‫‪ .3‬لمحة عن ضبط ‪101 .................................. DM-Multipath‬‬

‫‪ .4‬ملف ضبط ‪107 .......................................... DM-Multipath‬‬

‫‪ .5‬إدارة وإصلح أخطاء ‪127 ....................... DM-Multipath‬‬

‫الدارة عن بعد ‪136 ........................................‬‬


‫‪ .1‬خادوم ‪137 ............................................................ OpenSSH‬‬

‫‪ .2‬الداة ‪142 ................................................................... Puppet‬‬

‫‪ .3‬برمجية ‪147 ............................................................. Zentyal‬‬

‫التستيثاق الشبكي ‪154 ................................‬‬


‫‪ .1‬خادوم ‪155 ......................................................... OpenLDAP‬‬

‫‪ .2‬استخدام سامبا مع ‪198 .............................................. LDAP‬‬

‫‪ .3‬مقدمة عن ‪208 ..................................................... Kerberos‬‬

‫‪ .4‬استخدام ‪ Kerberos‬مع ‪223 ................................... LDAP‬‬

‫‪ .5‬استخدام ‪ SSSD‬مع ‪234 ..................... Active Directory‬‬


‫خدمة اتسم النطاق ‪243 ........................ DNS‬‬
‫‪ .1‬التثبيت ‪244 ................................................................................‬‬

‫‪ .2‬الضبط ‪245 .................................................................................‬‬

‫‪ .3‬استسكشاف الخطاء وإصلحها ‪255 ........................................‬‬

‫‪ .4‬المراجع ‪261 ................................................................................‬‬

‫الحماية ‪263 ...................................................‬‬


‫‪ .1‬إدارة المستخدمين ‪264 ............................................................‬‬

‫‪ .2‬تأمين الطرفية ‪275 ...................................................................‬‬

‫‪ .3‬الجدار الناري ‪276 .....................................................................‬‬

‫‪ .4‬برمجية ‪289 ...................................................... AppArmor‬‬

‫‪ .5‬الشهادا ت ‪296 ............................................................................‬‬

‫‪ .6‬ظنظام ملفا ت ‪305 .................................................... eCryptfs‬‬

‫المراقبة ‪309 ..................................................‬‬


‫‪ .1‬ظناجيوس ‪311 .............................................................. Nagios‬‬

‫‪ .2‬موظنين ‪319 .................................................................. Munin‬‬

‫خواديم الويب ‪322 .........................................‬‬


‫‪ .1‬خادوم أباتشي ‪323 .................................................. HTTPD‬‬

‫‪ .2‬لغة ‪339 ......................................................................... PHP5‬‬

‫‪ .3‬خادوم ‪ Squid‬الوسيط ‪342 ...................................................‬‬

‫‪ .4‬إطار عمل ‪346 ............................................ Ruby on Rails‬‬

‫‪ .5‬خادوم أباتشي ‪348 ................................................. Tomcat‬‬


‫قواعد البيانات ‪355 .......................................‬‬
‫‪ .1‬خادوم ‪356 ................................................................ MySQL‬‬

‫‪ .2‬خادوم ‪364 ...................................................... PostgreSQL‬‬

‫تطبيقات ‪368 ...................................... LAMP‬‬


‫‪ .1‬تطبيق ‪371 ........................................................ Moin Moin‬‬

‫‪ .2‬تطبيق ‪374 ....................................................... MediaWiki‬‬

‫‪ .3‬تطبيق ‪377 ................................................ phpMyAdmin‬‬

‫‪ .4‬تطبيق ‪380 ........................................................ Wordpress‬‬

‫خواديم الملفات ‪384 .....................................‬‬


‫‪ .1‬خادوم ‪385 ........................................................................ FTP‬‬

‫‪ .2‬ظنظام ملفا ت الشبسكة ‪392 ................................................ NFS‬‬

‫‪ .3‬نمبادر ‪395 ....................................................................... iSCSI‬‬

‫‪ .4‬خادوم الطباعة ‪399 ..................................................... CUPS‬‬

‫خدمات البريد اللكتروني ‪404 ........................‬‬


‫‪ .1‬خادوم ‪405 .................................................................. Postfix‬‬

‫‪ .2‬خادوم ‪418 .................................................................. Exim4‬‬

‫‪ .3‬برمجية ‪423 ........................................................... Dovecot‬‬

‫‪ .4‬برمجية ‪427 .......................................................... Mailman‬‬

‫‪ .5‬ترشيح البريد ‪437 ....................................................................‬‬

‫‪ .6‬قائمة ‪ DKIM‬البيضاء ‪443 ......................................................‬‬

‫تطبيقات المحادثة ‪448 ..................................‬‬


‫‪ .1‬خادوم ‪449 ......................................................................... IRC‬‬

‫‪ .2‬خادوم المراسلة الفورية ‪451 ................................... Jabber‬‬


‫أنظمة التحكم بالدصدارات ‪453 .....................‬‬
‫‪ .1‬ظنظام ‪454 .................................................................... Bazaar‬‬

‫‪ .2‬ظنظام ‪455 ............................................................................. Git‬‬

‫‪ .3‬ظنظام ‪461 .......................................................... Subversion‬‬

‫‪ .4‬ظنظام ‪469 .......................................................................... CVS‬‬

‫‪ .5‬مصادر ‪472 .................................................................................‬‬

‫تسامبا ‪473 .....................................................‬‬


‫‪ .1‬مقدمة ‪474 ..................................................................................‬‬

‫‪ .2‬خادوم الملفا ت ‪476 ..................................................................‬‬

‫‪ .3‬خادوم سامبا للطباعة ‪480 .......................................................‬‬

‫‪ .4‬تأمين خادوم سامبا لتخديم الملفا ت والطباعة ‪482 ...........‬‬

‫‪ .5‬استخدام سامبا كمتحسكم في النطاق ‪490 .............................‬‬

‫‪ .6‬دمج سامبا مع ‪497 .............................. Active Directory‬‬

‫النسخ التحتياطي ‪500 ....................................‬‬


‫‪ .1‬سسكربتا ت ششل ‪501 ......................................................................‬‬

‫‪ .2‬دورة الرشيف ‪509 ....................................................................‬‬

‫‪ .3‬برظنامج ‪514 ................................................................. Bacula‬‬

‫النظمة الوهمية ‪523 ..................................‬‬


‫‪ .1‬مسكتبة ‪524 .................................................................... libvirt‬‬

‫‪ .2‬الصور السحابية وأداة ‪534 ...................................... uvtool‬‬

‫‪ .3‬سحابة أوبنتو ‪540 .....................................................................‬‬

‫‪ .4‬حاويا ت ليننسكس ‪541 ........................................................ LXC‬‬


‫مجموعات التحكم ‪568 ...................................‬‬
‫‪ .1‬لمحة ‪569 ....................................................................................‬‬

‫‪ .2‬ظنظام الملفا ت ‪572 ......................................................................‬‬

‫‪ .3‬التفويض ‪573 ............................................................................‬‬

‫‪ .4‬المدير ‪574 ..................................................................................‬‬

‫‪ .5‬مصادر ‪575 .................................................................................‬‬

‫الشبكات العنقودية ‪576 ...............................‬‬


‫‪ .1‬أظنظمة ‪577 ..................................................................... DRBD‬‬

‫خدمة ‪582 ............................................. VPN‬‬


‫‪ .1‬برمجية ‪583 ......................................................... OpenVPN‬‬

‫‪ .2‬تحضير بطاقة شبسكية لجسر على الخادوم ‪596 ...................‬‬

‫‪ .3‬إعداد ضبط الخادوم للجسر ‪598 ...........................................‬‬

‫‪ .4‬ضبط العميل ‪599 ......................................................................‬‬

‫برمجيات أخرى مفيدة ‪605 .............................‬‬


‫‪ .1‬تطبيق ‪606 ......................................................... pam_motd‬‬

‫‪ .2‬تطبيق ‪609 .......................................................... etckeeper‬‬

‫‪ .3‬تطبيق ‪612 .................................................................. Byobu‬‬

‫‪ .4‬مصادر ‪614 .................................................................................‬‬

‫الملحق الول‪ :‬التبليغ عن العلل ‪615 .............‬‬


‫‪ .1‬التبليغ عن العلل باستخدام ‪616 ....................... apport-cli‬‬

‫‪ .2‬التبليغ عن الظنهيارا ت في التطبيقا ت ‪620 .............................‬‬

‫‪ .3‬مصادر ‪621 .................................................................................‬‬


‫تقديم‬

‫▲‬ ‫|‬ ‫‪11‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تقديم‬

‫رافقتتتت زيتتتادة استتتتخدام شتتتبسكة الظنتتتترظنت زيتتتادصة كتتتبيرصة فتتتي عتتتدد الحواستتتيب التتتتي تعمتتتل‬

‫ ت لمختلتتتف الختتتدما ت الشتتتائعة‪ ،‬كمواقتتتع التتتويب والبريتتتد اللسكتتتتروظني والمراستتتلة الفوريتتتة‬


‫مختتتدما ت‬

‫وختتتتواديم الملفتتتا ت وخلفتتته؛ وقتتتد أثبتتتت ظنظتتتام ليننسكتتتتس ‪ Linux‬تفتتتتوقه فتتتي مجتتتال الختتتتواديم‪،‬‬

‫صا بعد الظنتشار الواسع لتوزيعة أوبنتو الخاصة بتتالخواديم؛ التتذي نيعنتتى هتتذا التتدليل بشتترح‬
‫وخصو ص‬

‫طرق تثبيت وضبط مختلف خدماتها‪.‬‬

‫لذا جاء هذا السكتاب كترجمة للدليل الرسمي لدارة أوبنتو للخواديم » ‪.«Ubuntu Server Guide‬‬

‫آمتتل أن يسكتتون إضتتافصة مفيتتد صة للمسكتبتتة العربيتتة؛ وأن يفيتتد القتتارئ العربتتي فتتي تعلتتم إدارة أحتتد أشتتهر نظنظتتم‬

‫ي التوفيق‪.‬‬
‫تشغيل الخواديم‪ .‬والله ول ي‬

‫هذا السكتاب مرختتص بمتتوجب رخصتة المشتتاع البتداعي ‪» Creative Commons‬نظنستب النمصتننف ‪-‬‬

‫الترخيص بالمثل ‪ ،(Attribution-ShareAlike 3.0 Unported - CC BY-SA 3.0 ) «3.0‬لمعلوما ت‬

‫أكثر عن هذا الترخيص راجع الرابط التالي‪:‬‬

‫‪http://creativecommons.org/licenses/by-sa/3.0‬‬

‫عبد اللطيف محمد أديب ايمش‬


‫‪2016\1\1‬‬
‫حلب‪ ،‬سورية‬

‫▲‬ ‫|‬ ‫‪12‬‬


‫تمهيد‬
‫‪1‬‬

‫▲‬ ‫|‬ ‫‪13‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تمهيد‬

‫أه صل بتتتك فتتتي دليتتتل إدارة ختتتواديم أوبنتتتتو! ستتتتجد هنتتتا معلومتتتا ت‬
‫ ت حتتتول تثتتتبيت وإعتتتداد مختلتتتف‬

‫تطبيقا ت الخادوم؛ يوضح هذا الدليل طريقة إجراء المهام لتهيئة وتخصيص ظنظامك خطوصة بخطوة‪.‬‬

‫يفترض هذا الدليل أظنك علتى درايتتة أساستيتة بنظتام أوبنتتو‪ ،‬بعتض معلومتا ت التثتتبيت مغطتاةة‬

‫ ت تفصتتتيليصة عتتتن تثتتتبيت أوبنتتتتو‪ ،‬فالرجتتتاء‬


‫فتتتي »الفصتتتل الثتتتاظني‪ :‬التثتتتبيت«؛ لسكتتتن إذا أرد ت تعليمتتتا ت‬

‫مراجعة »دليل تثبيت أوبنتو«‪.‬‬

‫‪ .1‬الدعم‬
‫هنالتتك طريقتتتان نتتتدنعم فيهمتتا ظنستتخة الختتادوم متتن أوبنتتتو‪ :‬التتدعم التجتتاري‪ ،‬ودعتتم المجتمتتع؛‬

‫حيث أن الدعم التجتتاري الرئيستي )وتمويتل التطتتوير( متتتوفر متن شتركة كاظنوظنيسكتال )‪Canonical‬‬

‫‪ ،(Ltd.‬حيث يوفرون عقود دعتم ذا ت سع تر مقبول على كل حاسوب مسكتبي‪ ،‬أو على كتل الختتادوم‪.‬‬

‫راجع صفحة »خدما ت كاظنوظنيسكال« لمزيتد من المعلوما ت‪.‬‬

‫دعم المجتمع متوفر أي ص‬


‫ضا من أشخاص متفرغين وشركا ت‪ ،‬التتذين يتتأملون أن تسكتتون أوبنتتتو أفضتتل‬

‫توزيعتتة ممسكنتتة‪ ،‬نيتتونفر التتدعم عتتبر عتتددة قتتوائم بريديتتة‪ ،‬وقنتتوا ت ‪ ،IRC‬والمنتتتديا ت‪ ،‬والمتتدوظنا ت‪ ،‬وكتتذلك‬

‫ويسكي … إلخ‪ .‬يمسكن أن تسكون السكمية السكبيرة متن المعلومتا ت نمنشتدتتة‪ ،‬لسكتن يمسك ن لعبتارة بحتث جيتدة فتي‬

‫محرك البحث أن توفر إجابصة لسئلتك‪ ،‬راجع صفحة »دعم أوبنتو« لمزيتد من المعلوما ت‪.‬‬

‫▲‬ ‫|‬ ‫‪14‬‬


‫التثبيت‬
‫‪2‬‬

‫▲‬ ‫|‬ ‫‪15‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫يوفر هذا الفصل لمحصة عامصة سريعصة عن تثتتبيت ظنستخة الختتادوم متتن أوبنتتتو ‪ ،14.04‬للمزيتتد متتن‬

‫صلة‪ ،‬رجاصء راجع »دليل تثبيت أوبنتو«‪.‬‬


‫المعلوما ت المف ن‬

‫‪ .1‬التحضير للتثبيت‬
‫يشرح هذا القسم النواحي المختلفة التي يجب أن تؤخذ بعين العتبار قبل البدء بالتثبيت‪.‬‬

‫ا‪ .‬متطلبات النظام‬

‫تتتتتدعم ظنستتتتخة الختتتتادوم متتتتن أوبنتتتتتو ‪ 14.04‬ثلث معماريتتتتا ت رئيستتتتية‪ :‬إظنتتتتتل ‪ ،x86‬و ‪،AMD64‬‬

‫و ‪ARM‬؛ يعتترض الجتتدول التتتي مواصتتفا ت العتتتاد المستحستتنة؛ لسكتتن اعتمتتاصدا علتتى استتتخدامك للنظتتام‪،‬‬

‫ربما يمسكنك تشغيل النظام بأقل من هذه المواصفا ت‪ ،‬لسكن ل ينصح أبصدا بتجاهل هذه القتراحا ت‪.‬‬

‫الجدول ‪ :1-2‬مواصفا ت العتاد المستحسنة‬

‫مساحة القرص الصلب‬


‫الذاكرة‬
‫المعالج‬ ‫ظنوع التثبيت‬
‫العشوائية‬
‫جميع المهام مثبتة‬ ‫أساس النظام‬

‫‪1‬‬ ‫خادوم‬
‫‪ 1.75‬غيغابايت‬ ‫‪ 1‬غيغابايت‬ ‫‪ 512‬ميغابايت‬
‫غيغاهرتز‬ ‫)قياسي(‬

‫‪300‬‬ ‫خادوم‬
‫‪ 1.4‬غيغابايت‬ ‫‪ 700‬ميغابايت‬ ‫‪ 192‬ميغابايت‬
‫ميغاهرتز‬ ‫)الحد الدظنى(‬

‫▲‬ ‫|‬ ‫‪16‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫تتوفر ظنستتخة الختادوم أساصستتا مشتتتر صكا لجميتع أظنتواع برمجيتا ت الختادوم‪ ،‬حيتث تمثتتل تصتتميصما‬

‫مصتتغصرا يتتوفر منصتتت صة للختتدما ت المطلوبتتتة‪ ،‬كختتدما ت مشتتاركة الملفتتا ت أو الطابعتتتا ت‪ ،‬أو استضتتافة‬

‫مواقع الويب‪ ،‬أو البريد اللسكتروظني ‪...‬إلخ‪.‬‬

‫ب‪ .‬التختلافات بين نسختي الخادوم وسطح المكتب‬

‫هنالك بعض الختلفا ت بين ظنسخة الخادوم وسطح المسكتب فتتي أوبنتتتو‪ ،‬عليتتك أن تلحتتظ أن‬

‫كل النستتتختين نتستتتتخدمان مستتتتودعا ت ‪ apt‬ظنفستتتها‪ ،‬ممتتتا يجعتتتل متتتن الستتتهل تثتتتبيت تطتتتبيق متتتن‬

‫تطبيقا ت الخادوم على ظنسخة سطح المسكتب‪ ،‬وكذلك هو الحال في ظنسخة الخادوم‪.‬‬

‫تسكمتتتن الختلفتتتا ت بيتتتن النستتتختين فتتتي عتتتدم وجتتتود بيئتتتة النوافتتتذ ‪ X‬فتتتي ظنستتتخة الختتتادوم‪،‬‬

‫بالضافة إلى عملية التثبيت‪ ،‬وخيارا ت النواة المختلفة‪.‬‬

‫ج‪ .‬اتختلافات النواة‬

‫في أوبنتو ‪ 10.10‬وما قبلها‪ ،‬كان لنسختي الخادوم وسطح المسكتتتب أظنويتتة مختلفتتة؛ لسكتن أوبنتتتو‬

‫لتتم تعتتد تفصتتل الظنويتتة الخاصتتة بتتالخواديم والظنويتتة الشتتاملة ) ‪ ،(generic‬حيتتث دمجتتتا فتتي ظنتتواة‬

‫شاملة واحدة لتقليل عبء صياظنة النواة طوال فترة دعم الصدارة‪.‬‬

‫ملحظظظة‪ :‬عنتتدما نتشتتدغل ظنستتخة ‪ 64‬بتتت متتن أوبنتتتو علتتى معالجتتا ت ‪ 64‬بتتت‪ ،‬فلتتن تسكتتون محتتدوصدا بستتعة عنتتاوين‬
‫الذاكرة‪.‬‬

‫لرؤيتتتة جميتتتع إعتتتدادا ت خيتتتارا ت النتتتواة‪ ،‬ألتتتق ظنظتتترصة علتتتى ‪،/boot/config-3.13.0-server‬‬

‫وأي ص‬
‫ضتتا علتتى كتتتاب » ‪ «Linux Kernel in a Nutshell‬التتذي هتتو مصتتدر رائتتع للمعلومتتا ت حتتول‬

‫الخيارا ت المتوفرة‪.‬‬

‫▲‬ ‫|‬ ‫‪17‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫د‪ .‬النسخ الحتياطي‬

‫يجدر بك قبل تثبيت ظنسخة الخادوم من أوبنتو أن تتأكد أنن جميع البياظنا ت على الخادوم قتتد‬

‫نظن ش‬
‫سنخت احتياطصيا‪ ،‬راجع »الفصل التاسع عشر‪ :‬النسخ الحتياطي«؛ لخيارا ت النسخ الحتياطي‪.‬‬

‫إذا لم تسكن هذه أول مرة نيث نبت فيهتتا ظنظتام تشتغيل علتى حاس وبك‪ ،‬فربمتا علي ك إعتادة تقستيم‬

‫القرص الصلب ليجاد مساحة فارغة لتثبيت أوبنتو عليها‪.‬‬

‫في أي وقت تعيد فيه تقسيم قرصك الصتتلب‪ ،‬كتن مستتتعصدا لن تخستر جميتتع البياظنتا ت عليته‬

‫في حال ارتسكبت خط صأ أو حدث شيء متا بش سكل خاطئ أثنتاء التقستيم؛ وذلتك علتى الرغتم م ن أنن‬

‫البرامج المستخدمة في التثبيت عملي ة ج صدا وثابت ة ونمتنر ت عليهتا ستنوا ة‬


‫ ت متن الستتخدام‪ ،‬لسكنهتا‬

‫تقوم بأموتر نمددمرة!‬

‫‪ .2‬التثبيت من قرص مضغوط‬


‫الخطوا ت الساسية لتثبيت ظنسخة الخادوم من قرص مضغوط هتتي ظنفتتس الخطتتوا ت لتثتتبيت‬

‫أي ظنظتام تشتغيل متن قترص مضتغوط؛ وعلتى النقيتض متن ظنستخة ستطح المسكتتب‪ ،‬ل تحتتوي ظنس خة‬

‫الخادوم على ظنظام تثبيت رسومي؛ حيث نتستخشدم ظنسخة الخادوم واجهصة ظنصيصة عو ص‬
‫ضا عنها‪.‬‬

‫بدايصة‪ ،‬ظندزل واحرق ملف ‪ ISO‬الملئم من موقع أوبنتو الرسمي‪.‬‬ ‫•‬

‫أقلع النظام من قارئة القراص المضغوطة‪.‬‬ ‫•‬

‫سنيطنلب منك تحديد اللغة في شمنحث القلع )‪.(Boot prompt‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪18‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫هنالك بعض الخيارا ت الضافية لتثبيت ظنسخة الختتادوم متتن أوبنتتتو الموجتتودة فتتي قائمتتة‬ ‫•‬

‫القلع الرئيستتية‪ ،‬يمسكنتتك تثتتبيت ختتادوم أوبنتتتو أساستتي‪ ،‬أو تفحتتص قتترص ‪CD-ROM‬‬

‫والتأكتتد متتن خلتتوه متتن العطتتاب‪ ،‬أو التحقتتق متتن ذاكتتترة النظتتام )‪ ،(RAM‬أو القلع متتن‬

‫القرص الصلب الول‪ ،‬أو إصلح ظنظتتام معطتوب؛ ستتناقش بقيتة هتذا القستم كيفيتتة تثتبيت‬

‫خادوم أوبنتو أساسي‪.‬‬

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

‫الخطوة التالية هي ستؤالك عتتن تحديتتد تخطيتتط لوحتتة المفاتيتتح الخاصتتة بتتك‪ ،‬يمسكنتتك أن‬ ‫•‬

‫تطلب من المثبت أن يحاول أن يحددها لك‪ ،‬أو بإمسكاظنك اختيارها يدوصيا من القائمة‪.‬‬

‫ثتتتم سيسكتشتتتف المثبتتتت إعتتتدادا ت العتتتتاد لتتتديك‪ ،‬ثتتتم ستتتيحاول ضتتتبط إعتتتدادا ت الشتتتبسكة‬ ‫•‬

‫باستتتخدام ‪ ،DHCP‬إذا لتتم نتتتشرد استتتخدام ‪ DHCP‬فتتي الشاشتتة التاليتتة‪ ،‬فتتاختر »رجتتوع«‪،‬‬

‫حيث تستطيع الوصول إلى الخيار »هيئ الشبسكة يدوييا«‪.‬‬

‫سنينعدد مستخد ةم جديد‪ ،‬وسيحصل هذا المستخدم على امتيازا ت الجذر باستخدام الداة ‪.sudo‬‬ ‫•‬

‫بعد إكمال إعدادا ت المستخدم‪ ،‬سنتسأل عدما إذا أرد ت تشفير مجلد المنزل‪.‬‬ ‫•‬

‫سيسألك المثبت في الخطوة التالية عن اسم المضيف )‪ ،(hostname‬ومنطقة التوقيت‪.‬‬ ‫•‬

‫ثم بإمسكاظنك الختيار بين ع ددة خيارا ت لضبط تخطيتتط القتترص الصتتلب‪ ،‬بعتتد ذلتتك سنتستتأل‬ ‫•‬

‫عن القترص التذي تريتد تثتبيت النظتام عليته‪ ،‬ستحصتل علتى ظنافتذا ت للتأكيتد قبتل أن تعيتد‬

‫كتابتتتة جتتتدول القستتتام أو قبتتتل إعتتتداد ‪ LVM‬اعتمتتتاصدا علتتتى تخطيتتتط القتتترص الصتتلب؛ إذا‬

‫اختر ت ‪ ،LVM‬فس نتسأل عتن حجتم القستم الجتذر المنطقتي؛ لخيتارا ت القتراص المتقدمتة‪،‬‬

‫راجع قسم »التثبيت المتقدم«‪.‬‬

‫سنيثنبت بعد ذلك ظنظام أوبنتو الساسي‪.‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪19‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

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

‫خيارا ت‪:‬‬

‫بتتدون تحتتديثا ت تلقائيتتة‪ :‬وهتتذا متتا يتطلتتب متتن المتتدير أن يستتجل التتدخول إلتتى‬ ‫•‬

‫الحاسوب ويثبت التحديثا ت يدوصيا‪.‬‬

‫تثتتتبيت التحتتتديثا ت المنيتتتة تلقائصيتتتا‪ :‬وهتتتذا متتتا ستتتيثبت حزمتتتة ‪unattended-‬‬ ‫•‬

‫‪ ،upgrades‬التي سنتثدبت التحديثا ت المنية دون تدخل من المتتدير؛ لمزيتتتد متتن‬

‫المعلوما ت‪ ،‬راجع القسم »التحديثا ت التلقائية«‪.‬‬

‫إدارة النظام باستخدام ‪ :Lanscape‬إن ‪ Lanscape‬هو خدمة مدفوعة من كاظنوظنيسكتتال‬ ‫•‬

‫لتسهيل إدارة الجهزة العاملة بنظام أوبنتو؛ راجع موقع ‪ Lanscape‬للتفاصيل‪.‬‬

‫تملتتك الن الخيتتار لتثتتبيت‪ ،‬أو عتتدم تثتتبيت‪ ،‬العديتتد متتن مجموعتتا ت الحتتزم؛ راجتتع القستتم‬ ‫•‬

‫»مجموعا ت الحزم« لمزيد من التفاصيل‪ .‬وهنالك أي ص‬


‫ضا خيتتار لتشتتغيل ‪ aptitude‬لختيتتار‬

‫الحزم التي تريد تثبيتها‪ ،‬للمزيد من المعلوما ت‪ ،‬اظنظر القسم »الداة ‪.«Aptitude‬‬

‫فتتتي النهايتتتة‪ ،‬آختتتر خطتتتوة قبتتتل إعتتتادة القلع هتتتي ضتتتبط الستتتاعة علتتتى تتتتوقيت ‪UTC‬‬ ‫•‬

‫)التوقيت العالمي(‪.‬‬

‫ملحظة‪ :‬إذا لم تسكن راضصيا ع ن العتدادا ت الفتراضتية ف ي أديتة مرحلتة متن مراحتل التثتبيت‪ ،‬فاستتخدم خاص ية‬
‫»رجتتتوع« الظتتتاهرة فتتتي أ ديتتتة ظنافتتتذة لسكتتتي تتتتذهب لقائمتتتة التثتتتبيت المفصتتتلة‪ ،‬التتتتي تستتتمح لتتتك بتعتتتديل العتتتدادا ت‬
‫الفتراضية‪.‬‬

‫ربمتتا احتجتتت فتتي ظنقطتتة متتا أثنتتاء عمليتتة التثتتبيت إلتتى قتتراءة صتتفحة المستتاعدة التتتي يزودهتتا‬

‫ظنظتتام التثتتبيت‪ ،‬عندئتتتذ اضتتغط علتتى ‪ .F1‬متترصة أختترى‪ ،‬راجتتع »دليتتل تثتتبيت أوبنتتتو« للحصتتول علتتى‬

‫تعليما ت تفصيلية‪.‬‬

‫▲‬ ‫|‬ ‫‪20‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ا‪ .‬مجموعات الحزم‬

‫لديك خلل عملية تثبيت ظنسخة الخادوم خيا ةر لتثتتبيت حتتزم إضتتافية متتن القتترص المضتتغوط‪،‬‬

‫نتنجنمع هذه الحزم بواسطة ظنوع الخدمة التي توفرها‪.‬‬

‫خادوم ‪ :DNS‬نتحددد هذه المجموعة خادوم ‪ BIND DNS‬وتوثيقه‪.‬‬ ‫•‬

‫خادوم ‪ :LAMP‬نتحددد الحزم اللزمة لخادوم ‪.Linux-Apache-MySQL-PHP‬‬ ‫•‬

‫ض عام‪.‬‬‫خادوم ‪ :Mail‬هذه المجموعة نتحددد حزصما متنوعة مفيدة لخادوم بريد ذي غر ت‬ ‫•‬

‫خادوم ‪ :OpenSSH‬تحدد الحزم التي يحتاج خادوم ‪ OpenSSH‬لوجودها‪.‬‬ ‫•‬

‫قاعتتتدة بياظنتتتا ت ‪ :PostgreSQL‬هتتتذه المجموعتتتة تحتتتدد حتتتزم العميتتتل والختتتادوم لقواعتتتد‬ ‫•‬

‫بياظنا ت ‪.PostgreSQL‬‬

‫خادوم طباعة‪ :‬نته د‬


‫يء هذه المجموعة ظنظامك ليسكون خادوم طباعة‪.‬‬ ‫•‬

‫ختتتتادوم ملفتتتتا ت ستتتتامبا‪ :‬نته د‬


‫يتتتء هتتتتذه المجموعتتتة ظنظامتتتك ليسكتتتتون ختتتادوم ملفتتتا ت ستتتتامبا‬ ‫•‬

‫) ‪ ،(Samba File Server‬التتذي يفيتتد خصو ص‬


‫صتتا فتتي الشتتبسكا ت التتتي فيهتتا أظنظمتتة وينتتدوز‬

‫وليننسكس مصعا‪.‬‬

‫خادوم جافا »تومسكتتا ت«‪ :‬نتثدبتتت هتذه المجموعتة ختتادوم »‪ ،«Apache Tomcat‬والعتماديتتا ت‬ ‫•‬

‫اللزمة لعمله‪.‬‬

‫مضيف آل ت وهمية‪ :‬تتضمن الحزم اللزمة لتشغيل آل ت وهمية تعتمد على ‪.KVM‬‬ ‫•‬

‫تحديد الحزم يدوصيا‪ :‬تنفيذ ‪ aptitude‬مما يسمح لك باختيار الحزم فرادى يدوصيا‪.‬‬ ‫•‬

‫نتثنبت مجموعتا ت الحتزم باستتخدام الداة ‪ ،Tasksel‬أحتد أهتم الفروقتا ت بيتن أوبنتتو )أو دبي ان(‬

‫وغيرها من توزيعا ت غنو‪/‬ليننسكس هي أن الحزم عندما نتثنبت فإظنها نتضنبط ضتتبصطا منطقصيتتا‪ ،‬وتستتألك فتتي‬

‫بعتتض الحيتتان عتتن المعلومتتا ت الضتتافية المطلوبتتة؛ وبشتتسكل مشتتابه‪ ،‬عنتتد تثتتبيت مجموعتتة حتتزم فتتإن‬

‫الحزم ل تثبت فقط بل نتنعدد أي ص‬


‫ضا لتوفير خدمة مندمجة جيصدا مع بعضها بع ص‬
‫ضا‪.‬‬

‫▲‬ ‫|‬ ‫‪21‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

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

‫بعد أن تنتهي عملية التثبيت‪:‬‬

‫‪tasksel --list-tasks‬‬

‫ملحظة‪ :‬سنيعنرض أي ص‬
‫ضا ف ي الناتتج مجموعتا ت الح زم متن التوزيعتا ت الخ رى المبينتة علتى أوبنتتو‪ ،‬مثتل كوبنتتو‬
‫)‪ ،(Kubuntu‬وايتتتديوبوظنتو )‪ ،(Edubuntu‬لحتتتظ أي ص‬
‫ضتتتا أظنتتتك تستتتتطيع استتتتدعاء المتتتر ‪ tasksel‬لوحتتتده‪ ،‬التتتذي‬
‫سيعرض لك قائمصة بمختلف مجموعا ت الحزم المتوفرة‪.‬‬

‫تستطيع معرفة الحزم المثبتة مع أي مجموعة باستخدام الخيار ‪--task-packages‬؛ علتتى ستتبيل‬

‫المثال‪ ،‬لعرض الحزم المثبتة مع مجموعة الحزم الخاصة بخادوم ‪ ،DNS‬فإظننا ظندخل المر التي‪:‬‬

‫‪tasksel --task-packages dns-server‬‬

‫يجب أن يسكون ظناتج المر السابق‪:‬‬

‫‪bind9-doc‬‬
‫‪bind9utils‬‬
‫‪bind9‬‬

‫إذا لتتم نتثدبتتت أديتتة مجموعتتة حتتزم أثنتتاء عمليتتة التثتتبيت‪ ،‬لسكنتتك مثصل قتترر ت أن تجعتتل ختتادوم‬

‫‪ LAMP‬الجديتد عنتدك ختادوم ‪ DNS‬أي ص‬


‫ضتا‪ ،‬فبإمسكاظنتك ببستتاطة إدراج قترص التثتبيت وتنفيتذ المتر‬

‫التي من الطرفية‪:‬‬

‫‪sudo tasksel install dns-server‬‬

‫▲‬ ‫|‬ ‫‪22‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫‪ .3‬الترقية‬
‫هنالك عدة طرق للترقية من إصدارة أوبنتتو لخترى‪ ،‬س يعطيك هتذا القستم لمحتصة عتن طريقتتة‬

‫الترقية المستحسنة‪.‬‬

‫ا‪ .‬الداة ‪do-release-upgrade‬‬

‫الطريقة المستحسنة لترقيتة ظنستخة الختادوم هتي استتخدام الداة ‪،do-release-upgrade‬‬

‫التي هي جزةء من حزمة ‪ ،update-manager-core‬وليس لديها أدية اعتماديا ت رستتومية‪ ،‬وهتتي‬

‫مثنبتة تلقائصيا‪.‬‬

‫يمسكن تحتديث الظنظمتتة المبينتتة علتى دبيتان باستتخدام المتر ‪ ،apt-get dist-upgrade‬لسكتن‬

‫استخدام الداة ‪ do-release-upgrade‬مستحستتن لن بإمسكتتان تلتك الداة التعامتتل متع التغيتترا ت‬

‫في ضبط النظام‪ ،‬الذي قد يسكون لزصما في بعض الحيان بين الصدارا ت‪.‬‬

‫اكتب المر التي في شمنحث الطرفية للترقية إلى إصدارة أحدث‪:‬‬

‫‪do-release-upgrade‬‬

‫متتن الممسكتتن استتتخدم ‪ do-release-upgrade‬للترقيتتة إلتتى إصتتدارة تطويريتتة متتن أوبنتتتو‪،‬‬

‫أضف الخيار ‪ -d‬لفعل ذلك‪:‬‬

‫‪do-release-upgrade -d‬‬

‫تحذير‪ :‬التحديث إلى إصدارة تطويرية هو أمر غير مستحسن في البيئا ت الظنتاجية‪.‬‬

‫▲‬ ‫|‬ ‫‪23‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫‪ .4‬التثبيت المتقدم‬

‫ا‪ RAID .‬برمجي‬

‫مصتتفوفة التعتتدد للقتتراص المستتتقلة )‪Redundant Array of Independent Disks‬‬

‫أو اختصتتاصرا ‪ (RAID‬هتتي طريقتتة لستتتخدام عتت ددة أقتتراص صتتلبة لتتتوفير تتتوازن بيتتن زيتتادة مروظنتتة‬

‫ووثوق دية تخزين البياظنا ت‪ ،‬و‪ /‬أو زيتتادة أداء القتتراءة والسكتابتتة‪ ،‬وذلتتك بالعتمتتاد علتتى مستتتوى ‪RAID‬‬

‫المطنبتتق؛ ويمسكتتن تطتتبيق ‪ RAID‬إمتتا بطريقتتة برمجيتتة )حيتتث نيعلتتم ظنظتتام التشتتغيل عتتن القرصتتين‬

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

‫ظنظام التشغيل يعتقد أظنه يتعامل مع قرص واحد‪ ،‬ويتحسكم بالقراص تحسكصما »خفصيا«(‪.‬‬

‫النستتخة البرمجيتتة متتن ‪ RAID‬الموجتتودة فتتي الصتتدارا ت الحاليتتة متتن ليننسكتتس )وأوبنتتتو( هتتي‬

‫مبنيتتة علتتى محتترك »‪ «mdadm‬التتذي يعمتتل عمصل ممتتتاصزا‪ ،‬وحتتتى أظنتته أفضتتل متتن متحسكمتتا ت ‪RAID‬‬

‫»الفيزيائية«؛ سيد يلك هذا القسم على طريقة تثتبيت ظنس خة الختادوم متن أوبنت و باستتخدام قستنمي‬

‫‪ RAID1‬علتتى قرصتتين صتتلبين منفصتتلين‪ ،‬واحتتد متتن أجتتل ظنظتتام ملفتتا ت الجتتذر )‪ ،(/‬والختتر لتتذاكرة‬

‫التبديل)‪.(Swap‬‬

‫التقسيم‬

‫انت شبع تعليما ت التثبيت إلى أن تصل إلى خطوة تقسيم القراص‪ ،‬عندها‪:‬‬

‫اختر طريقة التقسيم اليدوية‪.‬‬ ‫‪.1‬‬

‫اختر القرص الصلب الول‪ ،‬ووافق على » هل تريد إظنشاء جدول تجزئة جديد وفارغ على‬ ‫‪.2‬‬

‫هتتتذا الجهتتتاز؟« ‪ ،‬أعتتتد هتتتذه الخطتتتوة لجميتتتع الجهتتتزة التتتتي تريتتتدها أن تصتتتبح جتتتزصءا متتتن‬

‫مصفوفة ‪.RAID‬‬

‫▲‬ ‫|‬ ‫‪24‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫‪ .3‬اختر »المساحة المتاحة« في أول قرص‪ ،‬ثم حدد »إظنشاء جزء ]قسم[ جديد«‪.‬‬

‫اختر بعدها المساحة التخزينية لهذا القسم‪ ،‬سيسكون هذا القسم هو القسم الخاص بتتذاكرة‬ ‫‪.4‬‬

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

‫العشوائي )‪ ، (RAM‬اختر المستاحة التخزينيتة للقستم‪ ،‬ثتم اختتر »أولتي«‪ ،‬ثتم »فتي البدايتة«‬

‫)مسكان بدء القطاعا ت(‪.‬‬

‫ملحظة‪ :‬ل نيستح نسن دوصمتا أن يسكتون حجتم ذاك رة التخزيتن ضتعف حجتم التذاكرة‪ ،‬وخصو ص‬
‫صتا ف ي الظنظمتة التتي‬
‫تملتتك مقتتداصرا كتتبيصرا متتن التتذاكرة‪ ،‬يتوقتتف حستتاب الحجتتم التخزينتتي لقستتم ذاكتترة التبتتديل علتتى طريقتتة استتتخدام‬
‫النظام‪.‬‬

‫اختر سطر » طريقة الستخدام« من العلى‪ ،‬الذي يسكتتون افتراضتتصيا »ظنظتتام ملفتتا ت ‪،«Ext4‬‬ ‫‪.5‬‬

‫وغيدره إلى »حجم فيزيائي لمصفوفة ‪) «RAID‬أو »السكتلة الجسمية لتتت ‪ ، («RAID‬ثتتم اختتتر‬

‫»اظنتهى إعداد الجزء ]القسم[«‪.‬‬

‫‪ .6‬ولتهيئة قسم الجذر )‪ (/‬فاختر »المساحة المتاحة« مترصة أختترى علتى القتترص الصتلب الول‪،‬‬

‫ثم اختر »إظنشاء جزء ]قسم[ جديد«‪.‬‬

‫اختر ما تبقى من مساحة القرص التخزينية‪ ،‬ثم اضغط على متابعة‪ ،‬ثم »أولي«‪.‬‬ ‫‪.7‬‬

‫وكما في قرص ذاكرة التبديل‪ ،‬اختتتر » طريقتتة الستتتخدام« ثتتم »حجتتم فيزيتتائي لمصتتفوفة‬ ‫‪.8‬‬

‫‪ ،«RAID‬ثم اختتر ستتطر »وستم إمسكاظنيتتة القلع«‪ ،‬وغيرهتتا إلتى »ممنسكتتن«‪ ،‬ثتم اختتر »اظنتهتى‬

‫إعداد الجزء ]القسم[«‪.‬‬

‫أعد تنفيذ الخطوا ت من ثلثة إلى ثماظنية للقراص والقسام الخرى‪.‬‬ ‫‪.9‬‬

‫▲‬ ‫|‬ ‫‪25‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫إعداد ‪RAID‬‬
‫ن‬
‫بعد أن أدعند ت القسام‪ ،‬يمسكن الن ضبط المصفوفة‪:‬‬

‫عد إلى صفحة »تقسيم القراص« الرئيسية‪ ،‬واختر »تهيئة مصفوفة ‪ RAID‬البرمجية« بالعلى‪.‬‬ ‫‪.1‬‬

‫اختر »ظنعم« لسكتابة التغيرا ت إلى القرص‪.‬‬ ‫‪.2‬‬

‫‪ .3‬اختر »إظنشاء جهاز ‪.«MD‬‬

‫لهذا المثال‪ ،‬اختر »‪ ،«RAID1‬لسكن إن كنت تستخدم ضبصطا مختلصفا‪ ،‬فاختر النوع الملئتتم )‬ ‫‪.4‬‬

‫‪ ،RAID0‬أو ‪ ،RAID1‬أو ‪.(RAID5‬‬

‫ملحظة‪ :‬ستحتاج إلى ثلثة أقراص على القل لستخدام ‪ ،RAID5‬أما استتتخدام ‪ RAID0‬أو ‪ ،RAID1‬فيلزمتتك‬
‫قرصين فقط‪.‬‬

‫أد ش‬
‫ختتتل رقتتتم الجهتتتزة الفعالتتتة )‪ ،(2‬أو مقتتتدار القتتتراص الصتتتلبة التتتتي عنتتتدك والتتتتي ترغتتتب‬ ‫‪.5‬‬

‫باستخدامها في المصفوفة‪ ،‬ثم اختر »متابعة«‪.‬‬

‫أدختتل رقتتم القتتراص البديلتتة )فتتي حالتتة حتتدوث عطتتب فتتي أحتتد القتتراص(‪ ،‬التتذي هتتو »‪«0‬‬ ‫‪.6‬‬

‫افتراضصيا‪ ،‬ثم اختر »متابعة«‪.‬‬

‫اختتتتر القستتتام التتتتي تريتتتد استتتتخدامها‪ ،‬عموصمتتتا‪ ،‬ستتتتسكون ‪... sda1, sdb1, sdc1‬إلتتتخ‪.‬‬ ‫‪.7‬‬

‫ستتطابق الرقام غال صبا‪ ،‬وستختلف الحرف للدللة على اختلف القراص الصلبة‪.‬‬

‫‪ .8‬لقسم ذاكرة التبديل‪ ،‬اختر ‪ ،sda1‬و ‪ ،sdb1‬ثم اختر »متابعة« للذهاب للخطوة التية‪.‬‬

‫أعد الخطوا ت من ثلثة إلى سبعة لقسم الجذر )‪ (/‬باختيار ‪ ،sda2‬و ‪.sdb2‬‬ ‫‪.9‬‬

‫‪ .10‬بعد اظنتهائك من الضبط‪ ،‬اختر »إظنهاء«‪.‬‬

‫▲‬ ‫|‬ ‫‪26‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫التهيئة‬

‫يجتتتب أن تحصتتتل الن علتتتى قائمتتتة بتتتالقراص الصتتتلبة وأجهتتتزة ‪ ،RAID‬الخطتتتوة التيتتتة هتتتي‬

‫صتتتلله‬
‫التهيئتتتة وإعتتتداد ظنقتتتاط الوصتتتل لجهتتتزة ‪RAID‬؛ عامتتتل جهتتتاز ‪ RAID‬كقتتترص صتتتلب‪ ،‬هديئتتته و ش‬

‫كالمعتاد‪.‬‬

‫اختر »‪ «#1‬تحت قسم »‪ RAID1‬برمجي الجهاز ‪.«#0‬‬ ‫‪.1‬‬

‫اختر »استخدام كت«‪ ،‬ثم اختر »ذاكرة التبديل«‪ ،‬ثم »اظنتهى إعداد الجزء ]القسم[«‪.‬‬ ‫‪.2‬‬

‫‪ .3‬ثم اختر »‪ «#1‬تحت قسم »‪ RAID1‬برمجي الجهاز ‪.«#1‬‬

‫اختر »طريقة الستخدام«‪ ،‬ثم اختر »ظنظام ملفا ت ‪ Ext4‬سجلي«‪.‬‬ ‫‪.4‬‬

‫اختر »ظنقطة الوصل«‪ ،‬واضبطها على »‪ - /‬جذر ظنظام الملفا ت«‪ ،‬عددل الخيتارا ت الخترى كمتا‬ ‫‪.5‬‬

‫تريد‪ ،‬ثم اختر »اظنتهى إعداد الجزء ]القسم[«‪.‬‬

‫‪ .6‬في النهاية‪ ،‬اختر »إظنهاء التجزئة‪ ،‬وكتابة التغيرا ت إلى القرص«‪.‬‬

‫إذا اختر ت وضع قستم الجتذر فتي مصتفوفة ‪ ،RAID‬فسيستتألك المثبتت إذا كنتت تريتتد القلع‬

‫بحالتتتتتتة »منخفضتتتتتتة« )‪ ،(degraded‬راجتتتتتتع القستتتتتتم »مصتتتتتتفوفة ‪ RAID‬ذا ت الحالتتتتتتة المتتتتتتتدهورة‬

‫) ‪ «(degraded state‬للمزيد من التفاصيل‪ .‬يجب أن نتسكنمل عملية التثبيت بشسكتل اعتيادي‪.‬‬

‫▲‬ ‫|‬ ‫‪27‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫مصفوافة ‪ RAID‬ذات الحالة المتدهورة )‪(degraded state‬‬

‫قتتد يحصتتل خلتتل فتتي القتترص فتتي ظنقطتتة متتا متتن حيتتاة الحاستتوب؛ وعنتتدما يحصتتل ذلتتك وقتتت‬

‫استتتخدام مصتتفوفة ‪ RAID‬برمجيتتة‪ ،‬فسيضتتع ظنظتتام التشتتغيل المصتتفوفة فتتي متتتا يتتدعى »الحالتتة‬

‫المتدهورة« )‪.(degraded state‬‬

‫إذا أصتتبحت المصتتفوفة فتتي الحالتتة المتتتدهورة ‪ -‬ربمتتا لحتتدوث تلتتف فتتي البياظنتتا ت‪ -‬فعنتتدها تحتتاول‬

‫ظنسخة الخادوم من أوبنتو افتراضتتصيا القلع إلتى ‪ initramfs‬بعتتد ثلثيتتن ثاظنيتتة‪ ،‬وعنتتدما يسكتمتتل إقلع‬

‫‪ ،initramfs‬فسيظهر شمنحث لمدة خمس عشرة ثاظنية يسمح لك بالختيار بين إقلع النظام أو محاولة‬

‫استرداده يدوصيا؛ ربما ل يسكون القلع إلى محث ‪ initramfs‬هو الستتلوك المطلتتوب‪ ،‬وخصو ص‬
‫صتتا إن كتتان‬

‫الحاسوب في مسكان بعيد عنك‪ .‬يمسكن إعداد القلع إلى مصفوفة متدهورة بعدة طرق‪:‬‬

‫الداة ‪ dpkg-reconfigure‬التتتي تستتتخدم لضتتبط الستتلوك الفتراضتتي؛ وسنتستتأل خلل‬ ‫•‬

‫العملية عتن الخيتارا ت الضتافية المتعلقتتة بالمصتفوفة‪ ،‬كالمراقبتتة‪ ،‬وتنبيهتتا ت البريتتد ‪...‬إلتخ‪.‬‬

‫أد ش‬
‫خل المر التي لعداد ‪:mdadm‬‬

‫‪sudo dpkg-reconfigure mdadm‬‬

‫ستتتتتغير عمليتتتتة ‪ dpkg-reconfigure mdadm‬ملتتتتف العتتتتدادا ت ‪/etc/initramfs-‬‬ ‫•‬

‫‪ ، tools/conf.d/mdadm‬لتتتدى هتتتذا الملتتتف ميتتتزة القتتتدرة علتتتى العتتتداد المستتتبق لستتتلوك‬

‫النظام‪ ،‬ويمسكن تعديله يدوصيا‪:‬‬

‫‪BOOT_DEGRADED=ture‬‬

‫ملحظة‪ :‬يمسكن تجاوز ملف العدادا ت باستخدام وسيط يمرر للنواة‪.‬‬

‫▲‬ ‫|‬ ‫‪28‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫نيستتتمح استتتتخدام وستتتيط يمتتترر للنتتتواة لتتتك أي ص‬


‫ضتتتا بتتتإقلع النظتتتام متتتن مصتتتفوفة ذا ت الحالتتتة‬

‫المتدهورة كما يلي‪:‬‬

‫عندما يقلع الخادوم‪ ،‬اضغط على ‪ Shift‬لفتح قائمة جروب )‪.(Grub‬‬ ‫•‬

‫اضغط ‪ e‬لتعديل خيارا ت النواة‪.‬‬ ‫•‬

‫اضغط على زر السم السفلي لتعليم سطر النواة‪.‬‬ ‫•‬

‫أضف »‪) «bootdegraded=true‬دون علما ت القتباس( إلى ظنهاية السطر‪.‬‬ ‫•‬

‫اضغط على ‪ Ctrl+x‬لقلع النظام‪.‬‬ ‫•‬

‫بعد أن نيق شلع النظام‪ ،‬تستتطيع إمتتا إصتتلح المصتفوفة )اظنظتتر قستتم »صتياظنة مصتتفوفا ت ‪«RAID‬‬

‫للتفاصيل( أو ظنسخ المعلوما ت المهمة إلى جهاز آخر بسبب عطب في العتاد‪.‬‬

‫صيانة مصفوافات ‪RAID‬‬

‫يمسكتتن أن نتعتتشرض الداة ‪ mdadm‬حالتتة المصتتفوفة‪ ،‬أو تستتتطيع إضتتافة أو إزالتتة أقتتراص فتتي‬

‫المصفوفة ‪...‬إلخ‪.‬‬

‫لظهار حالة مصفوفة أقراص‪ ،‬فأد ش‬


‫خل المر التي إلى الطرفية‪:‬‬ ‫•‬

‫‪sudo mdadm -D /dev/md0‬‬

‫الخيتتتتار ‪ -D‬يختتتتبر ‪ mdadm‬أن نيظشهتتتتر معلومتتتتا ت‬


‫ ت تفصتتتتيلية حتتتتول الجهتتتتاز ‪،/dev/md0‬‬

‫استبدل مسار جهاز ‪ RAID‬المناسب بالمسار ‪./dev/md0‬‬

‫▲‬ ‫|‬ ‫‪29‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫لعرض حالة قرص في مصفوفة‪:‬‬ ‫•‬

‫‪sudo mdadm -E /dev/sda1‬‬

‫سنتشاشبه مخرجا ت المر السابق مخرجا ت المتتر ‪mdadm -D‬؛ عتتددل‪ /dev/sda1‬لسكتتل قتترص‬

‫من أقراص المصفوفة‪.‬‬

‫ص ما‪ ،‬فيجب أن نيزال من المصفوفة‪:‬‬‫ب قر ة‬ ‫إذا نع ش‬


‫ط ن‬ ‫•‬

‫‪sudo mdadm --remove /dev/mo0 /dev/sda1‬‬

‫بتتتتددل كيل متتتتن ‪ /dev/md0‬و ‪ /dev/sda1‬إلتتتتى جهتتتتاز ‪ RAID‬والقتتتترص الملئنميتتتتن بتتتتالتوالي‬

‫وبالترتيب‪.‬‬

‫وبطريقة مشابهة‪ ،‬لضافة قرص جديد‪:‬‬ ‫•‬

‫‪sudo mdadm --add /dev/md0 /dev/sda1‬‬

‫يمسكن أن نتنبندل حالة القرص في بعض الحيان إلتى »نمنعتاب« )‪ ،(faulty‬حتتى وإن لتم يسكتن‬

‫فيه خلل فيزيائي؛ من المفيد في كثير من الحيان إزالة القرص من المصفوفة‪ ،‬ثتتم إعتتادة‬

‫إضافته؛ وهذا ما يجعل القرص نيزانمن مر صة أخرى مع المصفوفة؛ وإذا لم يزامن القرص مع‬

‫ي على وجود مشسكلة فيزيائية فيه‪.‬‬ ‫المصفوفة‪ ،‬فهذا دلي ة‬


‫ل قو ة‬

‫▲‬ ‫|‬ ‫‪30‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫يحتوي الملف ‪ /proc/mdstat‬على معلوما ت مفيدة حول حالة أجهزة ‪ RAID‬في النظام‪:‬‬

‫‪cat /proc/mdstat‬‬
‫]‪Personalities : [linear] [multipath] [raid0] [raid1] [raid6‬‬
‫]‪[raid5] [raid4] [raid10‬‬
‫]‪md0 : active raid1 sda1[0] sdb1[1‬‬
‫]‪10016384 blocks [2/2] [UU‬‬
‫>‪unused devices: <none‬‬

‫المر التي رائع لمشاهدة حالة مزامنة قرص‪:‬‬

‫‪watch -n1 cat /proc/mdstat‬‬

‫اضغط على ‪ Ctrl+c‬ليقاف المر ‪.watch‬‬

‫إذا احتجتتتت لستتتتبدال قتتترص معطتتتوب‪ ،‬فيجتتتب أن يعتتتاد تثتتتبيت محمتتتل القلع »جتتتروب«‬

‫)‪ (grub‬مر صة أخرى بعتد استتبدال القترص المعطتوب بالجديتد ومزامنتته؛ أد ش‬


‫ختل المتر التتي لتثتبيت‬

‫»جروب« على القرص الجديد‪:‬‬

‫‪sudo grub-install /dev/md0‬‬

‫ضع اسم جهاز المصفوفة الملئم بدصل من ‪./dev/md0‬‬

‫ب‪ .‬مصادر‬

‫إن موضتتوع مصتتفوفا ت ‪ RAID‬هتتو موضتتوع معقتتد ظنتيجتتصة لتتوفرة الطتترق التتتي يمسكتتن ضتتبط‬

‫‪ RAID‬فيها‪ ،‬رجاصء راجع الروابط التية لمزيتد من المعلوما ت‪:‬‬

‫المقال ت التي تتحدث عن »‪ «RAID‬في ويسكي أوبنتو‪.‬‬ ‫•‬

‫مقالة بعنوان »‪.«Software RAID HOWTO‬‬ ‫•‬

‫كتاب »‪.«Managing RAID on Linux‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪31‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ج‪ .‬مدير الحجوم المنطقية ‪LVM‬‬

‫يستتمح متتدير الحجتتوم المنطقيتتة ) ‪ (Logical Volume Manager‬لمتتدراء الظنظمتتة بإظنشتتاء‬

‫حجتتوم تخزينيتتة علتتى قتترتص واحتتد أو أقتتراتص صتتلبة متعتتددة؛ ويمسكتتن إظنشتتاء حجتتوم ‪ LVM‬علتتى‬

‫أقسام في مصفوفة ‪ RAID‬أو على القسام الموجودة في قتترص واحتتد‪ ،‬ويمسكتتن أي ص‬


‫ضتتا توستتيع تلتتك‬

‫الحجوم‪ ،‬مما يضيف مروظنصة كبيرصة للنظام عندما تتغير المتطلبا ت التشغيلية‪.‬‬

‫لمحة عامة‬

‫تأثيةر جاظنبي لقوة ومروظنة ‪ LVM‬هو درجة كبير ةة من التعقيتد؛ ويجتدر بنتا التعتترف علتى بعتض‬

‫المصطلحا ت قبل الخوض في عملية تثبيت ‪:LVM‬‬

‫الحجم الفيزيائي )‪ :(PV‬القرص الصلب الفيزيائي‪ ،‬أو قسم في قتترص‪ ،‬أو قستتم مصتتفوفة‬ ‫•‬

‫‪ RAID‬برمجية؛ مهيئين للعمل كحجم ‪.LVM‬‬

‫مجموعظظة الحجظظوم ) ‪ :(VG‬التتتي نتصتتننع متتن حجتتم فيزيتتائي واحتتد أو أكتتثر؛ ويمسكتتن أن نتونستتع‬ ‫•‬

‫مجموعتتة الحجتتوم بإضتتافة المزيتتد متتن الحجتتوم الفيزيائيتتة‪ ،‬حيتتث تسكتتون مجموعتتة الحجتتوم‬

‫كقرص صلب وهمي )‪ ،(virtual disk drive‬الذي نيننشأ منه المزيد من الحجوم المنطقية‪.‬‬

‫حجم منطقي )‪ :(LV‬الذي يشتتبه القستتم فتتي الظنظمتتة الختترى )التتتي ليستتت ‪ ،(LVM‬حيتتث‬ ‫•‬

‫نيه نيتتأ الحجتتم المنطقتتي بنظتتام الملفتتا ت المطلتتوب )‪ ،Ext3‬أو ‪ ،XFS‬أو‪... JFS‬إلتتخ‪ ،(.‬ويسكتتون‬

‫متوفصرا للوصل وتخزين البياظنا ت‪.‬‬

‫▲‬ ‫|‬ ‫‪32‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫التثبيت‬

‫سيشرح المثال في هذا القسم طريقة تثبيت ظنسخة الخادوم من أوبنتو مع وصل مجلد ‪/srv‬‬

‫ي )‪ (PV‬واحةد فقط أثنتتاء عمليتتة التثتتبيت‪ ،‬والتتذي يمدثتتل‬


‫على حجم ‪ ،LVM‬إذ سنيضاف حجةم فيزيائ ة‬

‫جتتزصءا متتن مجموعتتة الحجتتوم؛ وسيضتتاف حجتتم فيزيتتائي آختتر بعتتد التثتتبيت لشتترح كيتتف يمسكتتن أن‬

‫نتونسع مجموعة الحجوم‪.‬‬

‫ت عددة لستخدام ‪ ،LVM‬الخيار الول »مودجه ‪ -‬استخدام القتترص بتتأكمله‬ ‫هنالك خيارا ن‬
‫ ت تثبي ت‬

‫وإعداد ‪ «LVM‬الذي يسمح بإعطاء جزء من المساحة التخزينية المتوفرة لستخدامها فتي ‪،LVM‬‬

‫والخيار الخر »مودجه ‪ -‬استتتخدام القتترص بتتأكمله وإعتتداد ‪ LVM‬مشتتدفر«‪ ،‬أو إعتتداد القستتام وضتتبط‬

‫‪ LVM‬يدو صيا؛ والطريقة الوحيدة لهذه اللحظة لعداد النظام لستخدام ‪ LVM‬والقسام العتيادية‬

‫أثناء التثبيت هو استخدام الطريقة اليدوية‪.‬‬

‫انت شبع خطوا ت التثبيت إلى أن تصل إلى خطوة »تقسيم القراص«‪ ،‬عندها‪:‬‬ ‫‪.1‬‬

‫في صفحة »تقسيم القراص«‪ ،‬اختر »يدوصيا«‪.‬‬ ‫‪.2‬‬

‫‪ .3‬اختتتر القتترص الصتتلب‪ ،‬ثتتم فتتي الشاشتتة التاليتتة اختتتر »ظنعتتم« للتترد علتتى الرستتالة »هتتل تريتتد‬

‫إظنشاء جدول تجزئة جديد وفارغ على هذا الجهاز؟«‪.‬‬

‫ثم أظنشئ أقسام ‪ ،/boot‬و ‪ ،swap‬و ‪ /‬بأي ظنظام ملفا ت تريد‪.‬‬ ‫‪.4‬‬

‫ولظنشاء ‪ /srv‬باستخدام ‪ ،LVM‬فأظنشتتئ قستتصما منطقصيتتا جديتصدا‪ ،‬ثتم غيتتر »طريقتة الستتخدام«‬ ‫‪.5‬‬

‫إلى »حجم فيزيائي لتخزين ‪ ،«LVM‬ثم اختر »اظنتهى إعداد الجزء ]القسم[«‪.‬‬

‫اختر الن » إعداد مدير الحجوم المنطقية« في العلى‪ ،‬ثم اختتتر »ظنعتتم« لسكتابتتة التعتتديل ت‬ ‫‪.6‬‬

‫إلى القرص‪.‬‬

‫▲‬ ‫|‬ ‫‪33‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫‪ .7‬والن اختر »إظنشاء مجموعة حجوم« في »إعدادا ت ‪ «LVM‬في الشاشة التاليتتة‪ ،‬ثتتم اختتتر‬

‫استتصما لمجموعتتة الحجتتوم‪ ،‬وليسكتتن ‪ ، vg01‬أو أي شتتيء يصتتفها أكتتثر متتن ذلتتك؛ وبعتتد اختيتتار‬

‫السم‪ ،‬اختر القسم النمنعدد لستخدام ‪ LVM‬عليه‪ ،‬ثم »متابعة«‪.‬‬

‫‪ .8‬وبتتتالعودة لصتتتفحة »إعتتتدادا ت ‪ ، «LVM‬اختتتتر »إظنشتتتاء حجتتتم منطقتتتي«‪ ،‬واختتتتر مجموعتتتة‬

‫الحجوم النمن نشأة منذ قليل‪ ،‬وأدخل اسصما للحجم المنطقي الجديد )على سبيل المثتتال ‪srv‬‬

‫لظنه اسم ظنقطة الوصل المخطط لها( ثم اختر المساحة التخزينية‪ ،‬التي ستسكون القسم‬

‫بأكمله‪ ،‬ل تننس أظنه يمسكنك دائصمتتا زيادتهتتا لح صقتتا‪ ،‬ثتتم اختتتر »إظنهتتاء« ويجتتب أن تعتتود لشاشتتة‬

‫»تقسيم القراص«‪.‬‬

‫‪ .9‬لضافة ظنظام ملفا ت إلى ‪ LVM‬الجديد‪ ،‬اختر القسم تحت » ‪،«LVM VG vg01, LV srv‬‬

‫أو أي اسم قد اخترته في الخطوة السابقة‪ ،‬ثم اختر »طريقتتة الستتتخدام«‪ ،‬واضتتبط ظنظتتام‬

‫الملفتتتا ت كالمعتتتتاد باختيتتتار ‪ /srv‬ظنقطتتت صة للوصتتتل‪ ،‬ثتتتم اضتتتغط علتتتى »اظنتهتتتى إعتتتداد الجتتتزء‬

‫]القسم[« عند الفراغ منه‪.‬‬

‫‪ .10‬فتتي النهايتتة‪ ،‬اختتتر » إظنهتتاء التجزئتتة وكتابتتة التغيتترا ت إلتتى القتترص«‪ ،‬ثتتم وافتتق علتتى إجتتراء‬

‫التغيرا ت‪ ،‬وأكمل عملية التثبيت‪.‬‬

‫هذه بعض الدوا ت المفيدة لعرض المعلوما ت حول ‪:LVM‬‬

‫المر ‪ :pvdisplay‬عرض معلوما ت حول الحجوم الفيزيائية‪.‬‬ ‫•‬

‫المر ‪ :vgdisplay‬عرض معلوما ت حول مجموعا ت الحجوم‪.‬‬ ‫•‬

‫المر ‪ :lvdisplay‬عرض معلوما ت حول الحجوم المنطقية‪.‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪34‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫توسيع مجموعات الحجوم‬

‫بإكمتتال مثالنتتا المتعلتق بحجتتم ‪ LVM‬واستتخدامه كنقطتتة وصتل لمجلتتد ‪ ،/srv‬فستتيناقش هتتذا‬

‫القستتم إضتتافة قتترص صتتلب آختتر‪ ،‬وإظنشتتاء حجتتم فيزيتتائي ) ‪ ،(PV‬وإضتتافته إلتتى مجموعتتة الحجتتوم‬

‫)‪ ،(VG‬وتوسيع الحجم المنطقي ‪ ، srv‬ثم في النهاية توسيع ظنظتتام الملفتا ت؛ يفتتترض هتذا المثتتال أنن‬
‫ن‬
‫صا صلصبا ثاظنصيتتا قتد أضتتيف إلتتى النظتتام‪ ،‬وفتتي هتتذا المثتتال‪ ،‬ستيسكون استمه ‪ /dev/sdb‬وسنستتخدم‬
‫قر ص‬

‫القرص بأكمله كحج تم فيزيائي ) بإمسكاظنك إظنشاء أقسام واستخدامها كحجوم فيزيائية مختلفة(‪.‬‬

‫تحذير‪ :‬تأكد أظنه ليس لديك قرص صلب باسم ‪ /dev/sdb‬قبل تنفيذ الوامر التيتتة‪ ،‬قتتد تخستتر بعتتض البياظنتتا ت إذا‬
‫ظننفذ ت هذه الوامر على قرص غير فارغ‪.‬‬

‫أوصل‪ ،‬أظنششئ الحجم الفيزيائي بتنفيذ المر التي في الطرفية‪:‬‬

‫‪sudo pvcreate /dev/sdb‬‬

‫ودسع الن مجموعة الحجوم )‪:(VG‬‬

‫‪sudo vgextend vg01 /dev/sdb‬‬

‫استخدم ‪ vgdisplay‬لمعرفة المتدادا ت الفيزيائية أو ‪ ،(physical extents ) PE‬التي هي‬

‫المتتتتدادا ت الفيزيائيتتتة الحتتترة ‪ /‬الحجتتتم ) الحجتتتم التخزينتتتي التتتذي حتتتددته(‪ ،‬ستتتنعتبر أن المستتتاحة‬

‫الفارغة هي ‪) PE 511‬مما يساوي ‪ 2‬غيغابايت إذا كتتان حجتتم ‪ PE‬هتو ‪ 4‬ميغابتتايت(‪ ،‬وسنستتخدم كتل‬

‫المساحة الفارغة المتاحة‪ ،‬ل تننس استخدام رقم ‪- PE‬أو الحجم التخزيني الحر‪ -‬المتوفر عندك‪.‬‬

‫يمسكن توسيع الحجم المنطقي بعددة طرق‪ ،‬وسنشرح كيفية استخدام ‪ PE‬لتوسعة حجم منطقي‪:‬‬

‫▲‬ ‫|‬ ‫‪35‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫‪sudo lvextend /dev/vg01/srv -l +511‬‬

‫إن الخيتتتار ‪ -l‬يستتتمح بتوستتتعة الحجتتتم المنطقتتتي باستتتتخدام ‪ ،PE‬يستتتمح الخيتتتار ‪ -L‬للحجتتتم‬

‫المنطقي بأن نيو نسع باستخدام الميغا‪ ،‬أو الغيغا‪ ،‬أو التيرابايت ‪...‬إلخ‪.‬‬

‫حتتتى وإن كتتان متتن المفتتترض أظنتته باستتتطاعتك توستتيع ظنظتتام ملفتتا ت ‪ ext3‬أو ‪ ext4‬دون فصتتله‬

‫أوصل‪ ،‬لسكن من العادا ت الجيدة فصله على أدية حتال وتفحتص ظنظتام الملفتا ت؛ وبهتذا لتن تختدرب شتيصئا فتي‬

‫اليوم الذي تريد فيه تقليل الحجم المنطقي )إذ يسكون فصل ظنظام الملفا ت في هذه الحالة إلزامصيا(‪.‬‬

‫الوامتتتر التيتتتة لظنظمتتتة الملفتتتا ت ‪ EXT3‬أو ‪ ،EXT4‬إذا كنتتتت تستتتتخدم أظنظمتتتة ملفتتتا ت أختتترى‪،‬‬

‫فتتوفر أدوا ت مختلفة‪:‬‬

‫‪sudo umount /srv‬‬


‫‪sudo e2fsck -f /dev/vg01/srv‬‬

‫الخيار ‪ -f‬يجبر الداة ‪ e2fsck‬على تفحص ظنظام الملفا ت وإن كان يبدو »ظنظيصفا«‪.‬‬

‫في النهاية‪ ،‬غدير حجم ظنظام الملفا ت‪:‬‬

‫‪sudo resize2fs /dev/vg01/srv‬‬

‫ثم ش‬
‫صل ظنظام الملفا ت وتأكد من حجمه التخزيني‪:‬‬

‫‪mount /dev/vg01/srv /srv && df -h /srv‬‬

‫▲‬ ‫|‬ ‫‪36‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫د‪ .‬مصادر‬

‫راجع المقال ت حول ‪ LVM‬في ويسكي أوبنتو‪.‬‬ ‫•‬

‫اظنظر مقالة ‪ LVM HOWTO‬للمزيد من المعلوما ت‪.‬‬ ‫•‬

‫مقالة أخرى جيدة هي » ‪ «Managing Disk Space with LVM‬في موقع ‪O'Reilly‬‬ ‫•‬

‫المدعو ‪.LinuxDevCenter.com‬‬

‫للمزيد من المعلوما ت حول ‪ ،fdisk‬اظنظر صفحة الدليل الخاصة به‪.‬‬ ‫•‬

‫‪ .5‬تفريغ انهيار النواة‬

‫ا‪ .‬مقدمة‬

‫يشير تفريغ اظنهيار النواة )‪ (Kernel Crash Dump‬إلى جزء من محتويا ت ذاكرة الوصول‬

‫العشتتوائي غيتتر الدائمتتة التتتي نتن نستتخ إلتتى القتترص عنتتدما يتعتترض تنفيتتذ النتتواة إلتتى اضتتطراب متتا‪،‬‬

‫الحداث التية تسبب اضطراب النواة‪:‬‬

‫ارتياع النواة )‪.(Kernel Panic‬‬ ‫•‬

‫تقطعا ت غير مقننعة )‪.([NMI] Non Maskable Interrupts‬‬ ‫•‬

‫استثناءا ت تفحص الجهاز )‪.([MCE] Machine Check Exceptions‬‬ ‫•‬

‫عطب في العتاد‪.‬‬ ‫•‬

‫تدخل يدوي‪.‬‬ ‫•‬

‫لبعض تلتك الحتداث )الرتيتتاع‪ ،‬أو ‪ ،(NMI‬ستيسكون رد فعتتل النتواة تلقائصيتتا‪ ،‬ونتطنلتق آليتتة تفريتغ‬

‫اظنهيتتار النتتواة عتتبر ‪ ،kexec‬يلتتزم التتتدخ ن‬


‫ل اليتتدوي فتتي الحتتال ت الختترى للحصتتول علتتى معلومتتا ت‬

‫التتذاكرة‪ ،‬وعنتتدما تقتتع إحتتدى الحتتداث الستتابقة‪ ،‬فيجتتب معرفتتة الستتبب الرئيستتي للتمسكتتن متتن تجنبتته‬

‫مستقب صل؛ يمسكن تحديد السبب بتفحص محتويا ت الذاكرة المنسوخة‪.‬‬

‫▲‬ ‫|‬ ‫‪37‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ب‪ .‬آلية تفريغ انهيار النواة‬

‫عندما يحدث ارتياع النواة‪ ،‬فإن النواة تعتمد على آلية ‪ kexec‬لتعيتتد القلع بستترعة لنستتختة‬

‫جديتتتد تة متتتن النتتتواة فتتي القستتتم المحفتتتوظ متتتن التتتذاكرة المحجتتوزة عنتتتدما أقلتتتع النظتتتام )اظنظتتتر فتتتي‬

‫الستتفل( ‪ ،‬وهتتذا يستتمح لمنطقتتة التتذاكرة المتبقيتتة أن تبقتتى دون أن نتلنمتتس لنستتخها ظنستتصخا آمصنتتا إلتتى‬

‫وسيطة التخزين‪.‬‬

‫ج‪ .‬التثبيت‬

‫نتثنبت أداة تفريغ اظنهيار النواة بالمر التي‪:‬‬

‫‪sudo apt-get install linux-crashdump‬‬

‫د‪ .‬الضبط‬

‫عددل الملف ‪ /etc/default/kdump-tool‬مضيصفا السطر التي‪:‬‬

‫‪USER_KDUMP=1‬‬

‫يجب إعادة إقلع النظام بعد ذلك‪.‬‬

‫▲‬ ‫|‬ ‫‪38‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ه‪ .‬التحقق‬

‫للتأكد من أن آلية تفريغ اظنهيار النواة مفنعلة‪ ،‬فهنالتك عتددة أم ور يجتب التحق ق منهتتا‪ ،‬تأكتد أوصل‬

‫من أن نمعاشمل القلع ‪ crashkernel‬موجوةد )لحظ أن السطر التيتتة قتد نقدستتنمت لسكتي تظهتتر فتي‬

‫السكتاب بشسكل سليم(‪:‬‬

‫‪cat /proc/cmdline‬‬
‫‪BOOT_IMAGE=/vmlinuz-3.2.0-17-server root=/dev/mapper/PreciseS-‬‬
‫‪↪ root ro crashkernel=384M-2G:64M,2G-:128M‬‬

‫لمعامل ‪ crashkernel‬الشسكل العام التي‪:‬‬

‫]‪crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset‬‬
‫‪↪ range=start-[end] 'start' is inclusive and 'end' is exclusive.‬‬

‫لذا‪ ،‬لمعامل ‪ crashkernel‬الذي وجدظناه في ملف ‪ ،/proc/cmdline‬سيسكون لدينا‪:‬‬

‫‪crashkernel=384M-2G:64M,2G-:128M‬‬

‫السطر السابق يعني التي‪:‬‬

‫إذا كاظنت قيمة الذاكرة في النظام أقل من ‪ 384‬ميغابايت‪ ،‬فل نتبقي علتتى شتيء )هتتذه هتتي‬ ‫•‬

‫حالة »الظنقاذ« ]‪.([rescue‬‬

‫إذا كتتتتاظنت قيمتتتتة التتتتذاكرة فتتتتي النظتتتتام بيتتتتن ‪ 384‬ميغابتتتتايت و ‪ 2‬غيغابتتتتايت )بمتتتتا فيهتتتتا ‪2‬‬ ‫•‬

‫غيغابايت(‪ ،‬فحافظ على ‪ 64‬ميغابايت‪.‬‬

‫إذا كان حجم الذاكرة في النظام أكبر من ‪ 2‬غيغابايت‪ ،‬فحافظ عندها على ‪ 128‬ميغابايت‪.‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪39‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ثاظن صيتتا‪ ،‬يجتتب التأكتتد متتن أن النتتواة قتتد حتتافظت علتتى مسكتتان التتذاكرة المطلوبتتة للداة ‪kdump‬‬

‫باستخدام‪:‬‬

‫‪dmesg | grep -i crash‬‬


‫‪...‬‬
‫‪[ 0.000000] Reserving 64MB of memory at 800MB for crashkernel‬‬
‫)‪(System RAM: 1023MB‬‬

‫و‪ .‬اتختبار آلية تفريغ انهيار النواة‬

‫تحظظذير‪ :‬ستتيؤدي اختبتتار آليتتة تفريتتغ اظنهيتتار النتتواة إلتتى إعتتادة إقلع النظتتام‪ ،‬وقتتد يستتبب ذلتتك فقتتداصظنا للبياظنتتا ت فتتي‬
‫حمتت تل شتتديد؛ إذا أرد ت اختبتتار الليتتة فتأكتتد متتن أن ظنظامتتك ل يجتتري أديتتة‬
‫بعتتض الحيتتان إذا كتتان النظتتام تحتتت ش‬
‫عمليا ت مهمة‪ ،‬أو أنظنه تحت حمل خفيف جصدا‪.‬‬

‫تأكد من أن آلية ‪ SysRq‬نمفنعلة بالنظر إلى قيمة معامل النواة في ‪:/pro/sys/kernel/sysrq‬‬

‫‪cat /proc/sys/kernel/sysrq‬‬

‫ن‬
‫إذا أعي ند ت القيمة " صفر" ‪ ،‬فإن تلك الميزة معطلة‪ ،‬وعليك تنفيذ المر التي لتفعيلها‪:‬‬

‫‪sudo sysctl -w kernel.sysrq=1‬‬

‫بعتتد فعتتل ذلتتك‪ ،‬يجتتب أن تصتتبح المستتتخدم الجتتذر حيتتث ل يسكفتتي استتتخدام ‪sudo‬؛ وعليتتك‬

‫كمستخدم جذر تنفيذ المر‪:‬‬

‫‪echo c > /proc/sysrq-trigger‬‬

‫▲‬ ‫|‬ ‫‪40‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫وإذا كنت تستخدم اتصاصل شتتبسك صيا‪ ،‬فستتتفقد تواصتتلك متتع النظتتام ولهتتذا متتن الفضتتل أن تختتتبر‬

‫ذلك عندما تسكون موصو صل للنظام عبر طرفية محلية‪ ،‬مما يجعل عملية تفريغ النواة ظاهرصة أمامك‪.‬‬

‫إن ظناتج فحتص عادي سيسكون شبيصها بما يلي‪:‬‬

‫‪sudo -s‬‬
‫‪[sudo] password for ubuntu:‬‬
‫‪# echo c > /proc/sysrq-trigger‬‬
‫‪[ 31.659002] SysRq : Trigger a crash‬‬
‫‪[ 31.659749] BUG: unable to handle kernel NULL pointer‬‬
‫‪dereference at‬‬ ‫)‪(null‬‬
‫]>‪[ 31.662668] IP: [<ffffffff8139f166‬‬
‫‪sysrq_handle_crash+0x16/0x20‬‬
‫‪[ 31.662668] PGD 3bfb9067 PUD 368a7067 PMD 0‬‬
‫‪[ 31.662668] Oops: 0002 [#1] SMP‬‬
‫‪[ 31.662668] CPU 1‬‬
‫‪....‬‬

‫لقد ناقت شطنعت بقية السجل‪ ،‬لسكن يجب أن تشاهد أن النظتام قتد أعيتد إقلعته فتي مسكتان متا فتي‬

‫السجل‪ ،‬حيث سترى السطر التي‪:‬‬

‫‪Begin: Saving vmcore from kernel crash ...‬‬

‫عند الكمال‪ ،‬س نيعاد تشغيل النظتام لحتالته العتياديتتة‪ ،‬وستتجد ملتتف تفريتغ اظنهيتتار النتواة فتي‬

‫مجلد ‪:/var/crash‬‬

‫‪ls /var/crash‬‬
‫‪linux-image-3.0.0-12-server.0.crash‬‬

‫▲‬ ‫|‬ ‫‪41‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫التثبيت‬

‫ز‪ .‬مصادر‬

‫تفريغ اظنهيار النواة هتو موضتوع واستع يتحتتاج إلتتى ختبرا ت فتتي ظنتواة ليننسكتتس‪ ،‬تستتطيع إيجتاد‬

‫المزيد من المعلوما ت حول الموضوع في‪:‬‬

‫توثيق ‪.kdump‬‬ ‫•‬

‫الداة ‪.crash‬‬ ‫•‬

‫مقالتتة »تحليتل تفريتغ اظنهيتتار ظنتواة ليننسكتتس« ) هتذه المقالتتة مبنيتة علتى فيتدورا‪ ،‬لسكنهتا تشتترح‬ ‫•‬

‫تحليل تفريغ النواة جيصدا(‪.‬‬

‫▲‬ ‫|‬ ‫‪42‬‬


‫إدارة الحزم‬
‫‪3‬‬

‫▲‬ ‫|‬ ‫‪43‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫توفر أوبنتو ظنظام إدارنة حزتم شتام تل للتثتبيت والترقيتة والضتبط وإزالتة البرمجيتا ت‪ ،‬بالضتافة‬

‫إلتتى تتتوفير الوصتتول إلتتى أكتتثر متتن ‪ 35000‬حزمتتة برمجيتتا ت مننظمتتة؛ وأي ص‬
‫ضتتا متتن ميتتزا ت ظنظتتام إدارة‬

‫الحزم حل مشاكل العتماديا ت‪ ،‬والتحقق من وجود تحديثا ت للبرمجيا ت‪.‬‬

‫هنالك عدة أدوا ت متوفرة للتعامتتل متع ظنظتتام إدارة الحتتزم الختاص بتأوبنتو‪ ،‬بتدصءا متن الدوا ت‬

‫البسيطة التي تعمل من سطر الوامر‪ ،‬التي يمسكن بستتهولتة أتمتتنة عملهتتا متن متتدراء النظتتام‪ ،‬ووصتوصل‬

‫إلى واجهة رسومية بسيطة تسكون سهلصة على الوافدين الجدد لنظام أوبنتو‪.‬‬

‫‪ .1‬مقدمة‬
‫ن‬
‫أشتتتت نتق ظنظتتتتام إدارة الحتتتتزم فتتتتي أوبنتتتتتو متتتتن ظنفتتتتس النظتتتتام المستتتتتخدم فتتتتي توزيعتتتتة دبيتتتتان‬

‫غنتتو‪/‬لي ننسكتتس‪ .‬تحتتتوي ملفتتا ت الحتتزم علتتى جميتتع الملفتتا ت اللزمتتة‪ ،‬والبياظنتتا ت الوصتتفية‪ ،‬والتعليمتتا ت‬

‫لتشغيل وظيفة معينة أو برظنامج محدد على حاسوبك العامل بنظام تشغيل أوبنتو‪.‬‬

‫تسكتتتتتون لملفتتتتتا ت حتتتتتزم دبيتتتتتان عتتتتتادصة اللحقتتتتتة »‪ ،«.deb‬وتتواجتتتتتد غالصبتتتتتا فتتتتتي مستتتتتتودعا ت‬

‫)‪ ،(repositories‬التتتتي هتتتي مجموعتتتا ت متتتن الحتتتزم الموجتتتودة فتتتي وستتتائط مختلفتتتة‪ ،‬كتتتأقراص‬

‫‪ ،CD-ROM‬أو على الظنترظنت؛ تلك الحزم نمصنرفة )‪ (compiled‬مسبصقا إلى صيغة ثنائية في غتالب‬

‫الحيان‪ ،‬لذلك يسكون تثبيتها سريصعا‪ ،‬وبالتالي ل تحتاج لبناء البرمجية من المصدر‪.‬‬

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


‫ح »العتماديا ت« ) ‪(dependencies‬؛ العتماديا ت هي‬

‫الحتتتزم الضتتتافية التتتي تتطلبهتتتا حزمتتتة رئيستتتية لداة الوظيفتتة المطلوبتتتة أداصء ستتليصما؛ علتتتى ستتتبيل‬

‫المثتتتال‪ ،‬حزمتتتة تركيتتتب السكلم المستتتماة ‪ festival‬تعتمتتتد علتتتى حزمتتتة ‪ ،libasound2‬التتتتي تتتتوفر‬

‫مسكتبة الصو ت ‪ ALSA‬الضرورية لتشتغيل الصتو ت‪ ،‬ولسكتتي يعمتل ‪ festival‬عمصل صتحيصحا‪ ،‬يجتتب أن‬

‫نيثنبت هو وجميع اعتمادياته؛ حيث نتجري أدوا ت إدارة البرمجيا ت في أوبنتو ذلك تلقائصيا‪.‬‬

‫▲‬ ‫|‬ ‫‪44‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫‪ .2‬الداة ‪dpkg‬‬
‫‪ dpkg‬هو مدير حزم للظنظمة المبينة على دبيان؛ حيث يمسكنه تثتبيت‪ ،‬وحتذف‪ ،‬وبنتتاء الحتتزم‪،‬‬

‫ولسكتتن علتتى النقيتتض متتن بقيتتة أظنظمتتة إدارة الحتتزم‪ ،‬ل يمسكنتته أن نينتتدزل ونيثدبتتت الحتتزم أو اعتمادياتهتتا‬

‫تلقائصيا؛ سيغطي هذا القسم استخدام ‪ dpkg‬لدارة الحزم المثبتة محلصيا‪:‬‬

‫اكتب المر التي في الطرفية لعرض كل الحزم المثبتة على النظام‪:‬‬

‫‪dpkg -l‬‬

‫وبالعتماد على عدد الحزم المثبتة على ظنظامك‪ ،‬يمسكن أن نيودلد المر السابق ظناتصجا ضخصما متتن‬

‫البياظنتتا ت؛ تستتتطيع تمريتتر الناتتتج عتتبر أظنبتتوب للداة ‪ grep‬لمعرفتتة فيمتتا إذا كتتاظنت حزمتتة معينتتة قتتد‬

‫نثدبنتت على النظام‪:‬‬

‫‪dpkg -l | grep apache2‬‬

‫استتتتبدل استتتم الحتتتزم التتتتي تريتتتد البحتتتث عنهتتتا‪ ،‬أو جتتتزصءا منتتته‪ ،‬أو تعتتتبيصرا ظنمطصيتتتا )‪regular‬‬

‫‪ ،(expression‬باسم الحزمة ‪.apache2‬‬

‫لعرض الملفا ت المثبتة بواسطة حزمة ما‪ ،‬في هذه الحالة حزمة ‪ ،ufw‬فأد ش‬
‫خل المر‪:‬‬

‫‪dpkg -L ufw‬‬

‫▲‬ ‫|‬ ‫‪45‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫إذا لم تسكن متأكصدا أدية حزمة قد ثبتت ملصفا ما‪ ،‬فالمر ‪ dpkg -S‬سيخبرك‪ ،‬على سبيل المثال‪:‬‬

‫‪dpkg -S /etc/host.conf‬‬
‫‪base-files: /etc/host.conf‬‬

‫نتظشهر المخرجا ت أنن الملف ‪ /etc/host.conf‬ينتمي إلى الحزمة ‪.base-files‬‬

‫ملحظة‪ :‬العديد من الملفا ت تونلد تلقائ صيا أثناء عملية تثبيت الحزمة‪ ،‬وعلى الرغتم متن أن تلتتك الملفتتا ت موجتتودة‬
‫في ظنظام الملفا ت‪ ،‬فقد ل يعلم ‪ dpkg -S‬أدية حزمة تنتمي إليها تلك الملفا ت‪.‬‬

‫بإمسكاظنك تثبيت ملف حزمة ‪ .deb‬بالمر التي‪:‬‬

‫‪sudo dpkg -i zip_3.0-4_i386.deb‬‬

‫ضع اسم ملف الحزمة التي تريد تثبيتها عندك بدصل من ‪.zip_3.0-4_i386.deb‬‬

‫يمسكن إلغاء تثبيت حزمة معينة بالمر‪:‬‬

‫‪sudo dpkg -r zip‬‬

‫تحذير‪ :‬ليتس من المستحستن ف ي معظتم الحتال ت إلغتاء تثتبيت الح زم باستتخدام ‪ ،dpkg‬م ن الفضتل استتخدام‬
‫متتدير حتتزم يستتتطيع حتتل مشتتاكل العتماديتتا ت للتأكتتد متتن أن النظتتام فتتي حالتتة »متينتتة«‪ ،‬فعلتتى ستتبيل المثتتال‪،‬‬
‫استخدام ‪ dpkg -r zip‬سيحذف حزمة ‪ ،zip‬لسكن أدية حزم تعتمتد عليهتا ستتتبقى مثبتتصة ولسكنهتا لتتن تعمتل بصتتورة‬
‫صحيحة‪.‬‬

‫للمزيد من خيارا ت ‪ ،dpkg‬راجع صفحة الدليل ‪.man dpkg‬‬

‫▲‬ ‫|‬ ‫‪46‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫‪ .3‬الداة ‪Apt-Get‬‬
‫إن الداة ‪ apt-get‬هتتي أداة ستتطر أوامتتر مفيتتدة جتتصدا‪ ،‬إذ تتعامتتل متتع »أداة التحزيتتم المتقدمتتة«‬

‫) ‪ ،([APT] Advanced Packaging Tool‬ونتن دفذ مهاصما كتثبيت حزم البرمجيا ت الجديدة‪ ،‬وترقيتتة‬

‫الحزم البرمجية الموجودة‪ ،‬وتحديث فهرس قائمة الحزم‪ ،‬وحتى ترقية كامل ظنظام أوبنتو‪.‬‬

‫كتون هتذه الداة أداصة ستطرية ) أي تعمتل متن ستطر الوامتر(‪ ،‬فتإن للداة ‪ apt-get‬مزايتا كتثيرصة‬

‫تتميتتز بهتتا عتتن غيرهتتا متتن أدوا ت إدارة الحتتزم المتتتوفرة فتتي أوبنتتتو لمتتدراء الختتواديم‪ ،‬إحتتدى تلتتك‬

‫المزايا هي سهولة الستخدام في جلستا ت الطرفيتة البستيطة )عتبر ‪ ،(SSH‬وقابليتة الستتخدام فتي‬

‫سسكربتا ت إدارة الظنظمة‪ ،‬التي يمسكن أن تؤتمت باستخدام أداة جدولة المهام ‪.cron‬‬

‫بعض المثلة للستخدامات الشائعة للداة ‪:apt-get‬‬

‫تثتتبيت حزمتتة‪ :‬عمليتتة تثتتبيت الحتتزم باستتتخدام أداة ‪ apt-get‬هتتي عمليتتةة ستتهلةة جتتصدا؛ فعلتتى‬

‫سبيل المثال‪ ،‬اكتب المر التي لتثبيت حزمة ماسح الشبسكة ‪:nmap‬‬

‫‪sudo apt-get install nmap‬‬

‫حذف حزمتتة‪ :‬أي ص‬


‫ضتا عمليتة حتذف حزمتتة )أو حتزم( هتي عمليتة مباشترة جتصدا؛ فلحتذف الحزمتتة‬

‫التي ثبتناها في المثال السابق‪ ،‬فإظننا ظنستخدم المر التي‪:‬‬

‫‪sudo apt-get remove nmap‬‬

‫تلميح‪ :‬يمسكنك تحديد أكثر من حزمة لتث نبت أو تحذف‪ ،‬وذلك بتمرير أستماء تلتك الح زم كوستائط للمتر ‪apt-get‬‬
‫مفصولصة بفراغا ت‪.‬‬

‫▲‬ ‫|‬ ‫‪47‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫إن إضافة الخيتار ‪ --purge‬إلتى المتر ‪ apt-get remove‬س يجعل ‪ apt-get‬يحتذف ملفتا ت‬

‫إعتتدادا ت الحزمتتة أي ص‬
‫ضتتا‪ ،‬ربمتتا يسكتتون ‪ -‬أو ل يسكتتون‪ -‬هتتذا متتا تريتتده؛ استتتخدم هتتذا الخيتتار بعتتد أختتذ‬

‫الحيطة والحذر‪.‬‬

‫تحتتديث فهتترس قائمتتة الحتتزم‪ :‬إن فهتترس حتتزم ‪ APT‬هتتو قاعتتدة بياظنتتا ت للحتتزم المتتتوفرة فتتي‬

‫المستودعا ت المعنرفة في ملف ‪ /etc/apt/sources.list‬وفتتي مجلتتد ‪/etc/apt/sources.list.d‬؛‬

‫ن‬
‫فلتحديث فهرس الحزم المحلي والحصتول علتى آختتر التعتتديل ت التتي أجرنيتتت علتى المستتتودعا ت‪،‬‬

‫فعليك تنفيذ المر التي‪:‬‬

‫‪sudo apt-get update‬‬

‫لمعلوما ت حول كيفية الترقية إلى إصدارة جديدة من أوبنتو‪ ،‬ألشق ظنظرصة على قسم »الترقية«‪.‬‬

‫العمليا ت التتتي أجريتتت بواستطة الداة ‪ ،apt-get‬كتثتبيت وحتتذف الحتتزم‪ ،‬سنتستنجل فتتي ملتف‬

‫السجل ‪./var/log/dpkg.log‬‬

‫للمزيتتتد متتتن المعلومتتتا ت حتتتول استتتتخدام ‪ ،APT‬راجتتتع »دليتتتل مستتتتخدم ‪ APT‬فتتتي دبيتتتان«‪،‬‬

‫أو اكتب‪:‬‬

‫‪apt-get help‬‬

‫▲‬ ‫|‬ ‫‪48‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫‪ .4‬الداة ‪Aptitude‬‬
‫ستتتيعطيك تشتتتغيل ‪ Aptitude‬دون خيتتتارا ت ستتتطر الوامتتتر واجهتتتصة ظنصتتتيصة لنظتتتام التحزيتتتم‬

‫المتقتتدم )‪ ،(APT‬العديتتد متتن وظتتائف إدارة الحتتزم الشتتائعة‪ ،‬كتتالتثبيت‪ ،‬والحتتذف‪ ،‬والترقيتتة يمسكتتن‬

‫ ت حالتة صغيرة‪.‬‬ ‫ف واحد‪ ،‬الذي يسكون عادصة بأحر ت‬


‫ف ذا ن‬ ‫إجراؤها في ‪ Aptitude‬بأمتر ذي حر ت‬

‫يعمل ‪ Aptitude‬جيصدا في البيئا ت النصية التي تسكتتون طرفيتتا ت‬


‫ ت دون واجهتتة رستتومية‪ ،‬لعتتدم‬

‫حدوث تضارب في أزرار الوامر؛ يمسكنك بدء واجهة ذا ت قوائم من ‪ Aptitude‬بسكتابة المر التي‬

‫في شمنحث الطرفية‪:‬‬

‫‪sudo aptitude‬‬

‫ستشتتاهد شتتريط القائمتتة فتتي أعلتتى الشاشتتة عنتتدما يبتتدأ ‪ ،Aptitude‬وجزأيتتن تحتتته‪ ،‬يحتتتوي‬

‫الجتتزء العلتوي علتتى تصتتنيفا ت الحتزم‪ ،‬كتتالحزم الجديتدة‪ ،‬والحتزم غيتتر المثبتتتة؛ وأمتتا الجتزء الستتفلي‬

‫فيحتوي على معلوما ت تتعلق بالحزم وتصنيفاتها‪.‬‬

‫ل واجهتتنة‬
‫عمليتتة استتتخدام ‪ Aptitude‬لدارة الحتتزم هتتي عمليتتة مباشتترة إلتتى حتتتد متتا؛ وتجعتت ن‬

‫المستتتخدشم متتن المهتتام الشتتائعة أمتتصرا هيصنتتا ليقتتام بتته؛ متتا يلتتي أمثلتتةة عتتن كيفيتتة تنفيتتذ وظتتائف إدارة‬

‫الحزم الساسية في ‪:Aptitude‬‬

‫تثبيت الحتزم‪ :‬لتثتبيت حزمتة متا‪ ،‬حت ددد الحزمتة فتي تصتنيف »الحتزم غيتر المثبتتة«‪ ،‬وذلتك‬ ‫•‬

‫باستتتخدام أزرار الستتهم فتتي الحاستتوب وزر ‪ ،Enter‬عدلتتم علتتى الحتتزم النمتتراد تثبيتهتتا ثتتم‬

‫اضغط على زر ‪ ،+‬حيتث ستيتب ندل لتون مدخلتتة الحزمتتة إلتتى اللتون الخضتتر‪ ،‬ممتا يشتير إلتى‬

‫أظنها قد نحددند ت للتثبيت؛ اضغط الن على الزر ‪ g‬لظهار ملخص عن الفعال التي ستتنتجرى‬

‫▲‬ ‫|‬ ‫‪49‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫علتى الحتزم‪ ،‬اضتغط علتى ‪ g‬مترصة أخترى‪ ،‬وس نيطنلب منتك أن تصتبح جتذصرا لكمتال التثتبيت‪،‬‬

‫اضغط على ‪ ،Enter‬وسنيط نلب منك إدخال كلمة المرور‪ ،‬أدخل كلمة المرور لتصتتبح جتذصرا؛‬

‫فتتي النهايتتة‪ ،‬اضتتغط علتتى ‪ g‬متترصة أختترى‪ ،‬فس نتستتأل عتتن تنزيتتل تلتتك الحزمتتة اضتتغط علتتى‬

‫‪ Enter‬للمتابعة‪ ،‬ثم سنتجرى عملية تنزيل وتثبيت الحزمة‪.‬‬

‫حذف الحزم‪ :‬لحتذف حزمتة متا‪ ،‬حتتدد الحزمتة فتي تصتنيف »الحتزم المثبتتة«‪ ،‬وذلتك باستتخدام‬ ‫•‬

‫أزرار السهم في الحاسوب وزر ‪ ،Enter‬عدلم على الحزم النمراد حتتذفها ثتتم اضتتغط علتتى زر "‪،"-‬‬

‫حيث سيتب ندل لون مدخلة الحزمتة إلتى اللتون التوردي‪ ،‬ممتا يشتير إلتى أظنهتا قتد نحتددند ت للحتذف؛‬

‫اضغط الن على الزر ‪ g‬لظهار ملختص عتن الفعتتال التتي ستنتجرى علتتى الحتزم‪ ،‬اضتتغط علتى ‪g‬‬

‫متتر صة أختترى‪ ،‬وستتيطلب منتتك أن تصتتبح جتتذصرا لكمتتال التثتتبيت‪ ،‬اضتتغط علتتى ‪ ،Enter‬وستتنيطلب‬

‫منتتك إدختتال كلمتتة المتترور‪ ،‬أدختتل كلمتتة المتترور لتصتتبح جتتذصرا؛ فتتي النهايتتة‪ ،‬اضتتغط علتتى ‪ g‬متترصة‬

‫أخرى‪ ،‬واضغط على ‪ Enter‬للمتابعة‪ ،‬ثم سنتجرى عملية إزالة الحزمة‪.‬‬

‫تحديث فهرس الحزم‪ :‬لتحديث فهرس الحزم‪ ،‬اضغط ببساطة على الزر ‪ ،u‬وسنتسأل عدمتتا‬ ‫•‬

‫إذا كنتتت تريتتد أن تصتتبح جتتذصرا وتسكمتتل التحتتديث‪ ،‬اضتتغط علتتى ‪ ،Enter‬وستتنتطالب بسكلمتتة‬

‫المتترور‪ ،‬أدختتل كلمتتة المتترور لتصتتبح جتتذصرا‪ ،‬وستتيبدأ تحتتديث فهتترس الحتتزم؛ اضتتغط علتتى‬

‫‪ Enter‬على زر ‪ OK‬في مربع الحوار الذي سيظهر عندما تنتهي عملية التنزيل‪.‬‬

‫ترقية الحزم‪ :‬لترقية الحزم‪ ،‬عليك أوصل تحديث فهرس الحزم كما و د‬
‫ضح سابصقا‪ ،‬ثم اضغط‬ ‫•‬

‫علتتى الحتترف ‪ U‬لتحديتتد جميتتع الحتتزم التتتي لهتتا تحتتديثا ت‪ ،‬اضتتغط الن علتتى التتزر ‪ g‬حيتتث‬

‫ستتنيعنرض لتتك ملختتص عتتن الفعتتال التتتي ستتنتجرى علتتى الحتتزم‪ ،‬اضتتغط علتتى ‪ g‬متترة أختترى‪،‬‬

‫وستت نيطلب منتتك أن تصتتبح جتتذصرا لكمتتال التثتتبيت‪ ،‬اضتتغط علتتى ‪ ،Enter‬وستتنتطالب بسكلمتتة‬

‫المرور‪ ،‬أدخل كلمة مرور الجذر ثم اضغط على ‪ g‬مرة أختترى‪ ،‬وسنتستتأل عتتن تنزيتتل الحتتزم‪،‬‬

‫اضغط على ‪ Enter‬للكمال‪ ،‬وستبدأ عملية ترقية الحزم‪.‬‬

‫▲‬ ‫|‬ ‫‪50‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫العمود الول من المعلوما ت الظاهر في الجزء العلوي في قائمتتة الحتتزم يعترض حالتتة الحزمتتة‪،‬‬

‫المفاتيح التية تصف حالة الحزمة‪:‬‬

‫‪ :i‬الحزمة مثبتة‪.‬‬ ‫•‬

‫‪ :c‬الحزمة غير مثبتة‪ ،‬لسكن إعدادا ت الحزمة ما زالت باقيصة على النظام‪.‬‬ ‫•‬

‫‪ :p‬حذفت الحزمة حذصفا كامصل من النظام )هي وإعداداتها(‪.‬‬ ‫•‬

‫‪ :v‬حزمة ظاهرية )‪.(Virtual package‬‬ ‫•‬

‫‪ :B‬حزمة محطمة )‪.(Broken package‬‬ ‫•‬

‫‪ :u‬ملفا ت الحزمة قد نف ن‬
‫ك ضغطها‪ ،‬لسكن الحزمة لم نتنعدد بعد‪.‬‬ ‫•‬

‫‪ :C‬الحزمة ظنصف مضبوطة‪ ،‬أي أن الضبط قد فشل‪ ،‬ويلزمه إصلح‪.‬‬ ‫•‬

‫‪ :H‬الحزمة ظنصف مثبتة‪ ،‬فشل الحذف‪ ،‬ويلزمه إصلح‪.‬‬ ‫•‬

‫للختتروج متتن ‪ ،Aptitude‬اضتتغط علتتى حتترف ‪ ، q‬ووافتتق أظنتتك تريتتد الختتروج؛ يمسكتتن الوصتتول‬

‫لوظائف عديدة من وظائف ‪ Aptitude‬بالضغط على زر ‪.F10‬‬

‫ا‪ .‬استخدام ‪ Aptitude‬افي سطر الوامر‬

‫يمسكنتتتتك استتتتتخدام ‪ Aptitude‬كتتتتأدا تة ستتتتطرية )تعمتتتتل متتتتن ستتتتطر الوامتتتتر( استتتتتخداصما شتتتتبيصها‬

‫باستخدام ‪apt-get‬؛ فلتثبيت حزمة ‪ nmap‬مع جميع العتماديتا ت اللزمتة‪ ،‬كمتا فتي مث ال ‪،apt-get‬‬

‫فسنستخدم المر التي‪:‬‬

‫‪sudo aptitude install nmap‬‬

‫▲‬ ‫|‬ ‫‪51‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫ولحذف ظنفس الحزمة‪ ،‬سنستخدم المر‪:‬‬

‫‪sudo aptitude remove nmap‬‬

‫راجتتتتتع صتتتتتفحا ت التتتتتدليل ‪ man‬لمزيتتتتتد متتتتتن المعلومتتتتتا ت حتتتتتول الخيتتتتتارا ت الستتتتتطرية للداة‬

‫‪.aptitude‬‬

‫‪ .5‬التحديثات التلقائية‬
‫يمسكن استخدام الحزمة ‪ unattended-upgrades‬لتثبيت تحديثا ت الحزم تلقائصيا‪ ،‬ويمسكن‬

‫ضتتبطها لتحتتديث كتتل الحتتزم‪ ،‬أو تثتتبيت التحتتديثا ت المنيتتة فقتتط؛ لسكتتن أوصل يجتتب تثتتبيت الحزمتتة‬

‫بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install unattended-upgrades‬‬

‫لضبط ‪ ،unattended-upgrades‬عددل مما يلي في الملف التالي‪:‬‬

‫‪vim /etc/apt/apt.conf.d/50unattended-upgrades‬‬

‫ليوافق ما تحتاج‪:‬‬

‫{ ‪Unattended-Upgrade::Allowed-Origins‬‬
‫;"‪"Ubuntu trusty-security‬‬
‫‪//‬‬ ‫;"‪"Ubuntu trusty-updates‬‬
‫;}‬

‫▲‬ ‫|‬ ‫‪52‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫ويمسكن أي ص‬
‫ضا وضع بعض الحتزم فتي » القائمتتة الستوداء« ممتا يتؤدي إلتى عتدم تحتديثها تلقائييتتا؛‬

‫لضافة حزمة ما إلى القائمة السوداء‪:‬‬

‫{ ‪Unattended-Upgrade::Package-Blacklist‬‬
‫‪//‬‬ ‫;"‪"vim‬‬
‫‪//‬‬ ‫;"‪"libc6‬‬
‫‪//‬‬ ‫;"‪"libc6-dev‬‬
‫‪//‬‬ ‫;"‪"libc6-i686‬‬
‫;}‬

‫ملحظة‪ :‬الشارة »‪ «//‬تعمل كتعليق )‪ ،(comment‬أي أن كل ما يتبع ‪ //‬لن نيفنسر‪.‬‬

‫لتفعيتتتتل التحتتتتديثا ت التلقائيتتتتة‪ ،‬عتتتتددل ملتتتتف ‪ /etc/apt/apt.conf.d/10periodic‬واضتتتبط‬

‫إعدادا ت ‪ apt‬المناسبة‪:‬‬

‫;"‪APT::Periodic::Update-Package-Lists "1‬‬
‫;"‪APT::Periodic::Download-Upgradeable-Packages "1‬‬
‫;"‪APT::Periodic::AutocleanInterval "7‬‬
‫;"‪APT::Periodic::Unattended-Upgrade "1‬‬

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

‫و»نيندظف« أرشيف التنزيل المحلي كل أسبوع‪.‬‬

‫ملحظة‪ :‬يمسكنك قراءة المزيد عن خيارا ت ضبط ‪ apt‬الزمنية في ترويسة سسكربت ‪./etc/cron.daily/apt‬‬

‫سنيسنجل ظناتج ‪ unattended-upgrades‬إلى ملف ‪./var/log/unattended-upgrades‬‬

‫▲‬ ‫|‬ ‫‪53‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫ا‪ .‬الشعارات‬

‫ضبط المتغير ‪ Unattended-Upgrade::Mail‬في ملتتف ‪/etc/apt/apt.conf.d/50una‬‬

‫‪ ttended-upgrades‬ستتتيجعل ‪ unattended-upgrades‬يرستتتل بريتتتصدا إلسكتروظنصيتتتا إلتتتى متتتدير‬

‫النظام نيف د‬
‫صل فيه الحزم التي تحتاج إلى ترقية‪ ،‬أو التي تتعرض لمشاكل‪.‬‬

‫حزمتتتتة أختتتترى مفيتتتتدة هتتتتي ‪ ،apticron‬التتتتتي تضتتتتبط عمصل مجتتتتدوصل )‪ (cron‬لرستتتتال بريتتتتد‬

‫إلسكتروظني لمتدير النظتام‪ ،‬يحتتوي علتى معلومتا ت حتول أ ديتة حتزم فتي النظتام لهتتا تحتديثا ت مت وفرة‪،‬‬

‫وملخص عن التغيرا ت في كل حزمة‪.‬‬

‫أد ش‬
‫خل المر التي في سطر الوامر لتثبيت حزمة ‪:apticron‬‬

‫‪sudo apt-get install apticron‬‬

‫بعتتد اظنتهتتاء تثتتبيت الحزمتتة‪ ،‬عتتددل الملتتف ‪ /etc/apticron/apticron.conf‬لضتتبط عنتتوان‬

‫البريد اللسكتروظني والخيارا ت الخرى‪:‬‬

‫"‪EMAIL="root@example.com‬‬

‫‪ .6‬الضبط‬
‫الضتتتتتتتبط الختتتتتتتاص بمستتتتتتتتودعا ت أداة التحزيتتتتتتتم المتقدمتتتتتتتة )‪ (APT‬نمختتتتتتتنزةن فتتتتتتتي ملتتتتتتتف‬

‫‪ /etc/apt/sources.list‬ومجلتتتتتد ‪ ،/etc/apt/sources.list.d‬ستتتتتنتذنكر معلومتتتتتا ت عتتتتتن طريقتتتتتة‬

‫إضافة أو إزالة المستودعا ت من الملف في هذا القسم‪.‬‬

‫▲‬ ‫|‬ ‫‪54‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫بإمسكاظنك تعديل الملف لتفعيتل المستتودعا ت أو تعطيلهتا؛ علتى ستبيل المثتال‪ ،‬لتعطيتل ضترورة‬

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

‫التعليق قبل السطر الموافق لقرص ‪ ،CD-ROM‬الذي يظهر في أول الملف‪:‬‬

‫‪# no more prompting for CD-ROM please‬‬


‫‪# deb cdrom:[Ubuntu 14.04 _Trusty Tahr_ - Release i386‬‬
‫‪↪ (20111013.1)]/ trusty main restricted‬‬

‫ا‪ .‬مستودعات إضاافية‪.‬‬

‫بالضتتافة إلتتى مستتتودعا ت الحتتزم الرستتمية المدعومتتة المتتتوفرة لوبنتتتو‪ ،‬هنالتتك مستتتودعا ت‬

‫مصتتاظنة متتن المجتمتتع تمنحتتك إمسكاظنيتتة تثتتبيت اللف متتن الحتتزم الضتتافية‪ ،‬أشتتهر اثنيتتن منهتتا همتتا‬

‫مستودعا »‪ «Universe‬و »‪ ،«Multiverse‬هذان المستودعان غيتتر متتدعومين متتن أوبنتتو رستتمصيا؛‬

‫لسكنهما مصاظنان من المجتمع‪ ،‬حيث يوفران حزصما آمنة لستخدامها على حاسوبك‪.‬‬

‫ملحظظظة‪ :‬قتتد يسكتتون فتتي الحتتزم الموجتتودة فتتي مستتتودع » ‪ «Multiverse‬مشتتاك ة‬


‫ل فتتي التتترخيص ممتتا يمنتتع متتن‬
‫توزيعها مع ظنظام التشغيل الحر‪ ،‬وقد يسكوظنون غير قاظنوظنيين في منطقتك‪.‬‬

‫تحظظذير‪ :‬لحتتظ أن أييتتا متتن مستتتودعي »‪ «Universe‬و » ‪ «Multiverse‬ل يحتويتتان حزصمتتا مدعومتتصة رستتمصيا متتن‬
‫أوبنتو‪ ،‬وهذا يعني أظنها قد ل تسكون هنالك تحديثا ت أمنية لتلك الحزم‪.‬‬

‫هنالك مصادر عديدة للحزم‪ ،‬وأحياصظنا توفر تلك المصادر حزمصة واحدصة فقتتط‪ ،‬فتتي هتتذه الحالتتة‪،‬‬

‫تسكتتون مصتتادر الحزمتتة متتوفرة متتن مطتتور تطتتبيق واحتتد؛ يجتتب أن تسكتتون حتتذصرا جتتصدا عنتتد استتتخدام‬

‫مصادر غير قياسية للحزم؛ وعليك ‪-‬على أي حال‪ -‬البحث عن المصدر جيصدا قبل القيتتام بأيتتة عمليتتة‬

‫تثبيت‪ ،‬فقد تجعل بعض تلك الحزم من النظام غير مستقتر أو ل يؤدي وظائفه في بعض الجواظنب‪.‬‬

‫▲‬ ‫|‬ ‫‪55‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫إدارة الحزم‬

،‫ لسكن إذا أرد ت تعطيلهتتا‬،‫« مفنعلة افتراضصيا‬Multiverse» ‫« و‬Universe » ‫تسكون مستودعا ت‬

:‫ضلع تعليصقا قبل السطر التية‬


‫ و ن‬/etc/apt/sources.list ‫فعددل الملف‬

deb http://archive.ubuntu.com/ubuntu trusty universe multiverse


deb-src http://archive.ubuntu.com/ubuntu trusty universe
multiverse

deb http://us.archive.ubuntu.com/ubuntu/ trusty universe


deb-src http://us.archive.ubuntu.com/ubuntu/ trusty universe
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates
universe
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates
universe

deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse


deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates
multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates
multiverse

deb http://security.ubuntu.com/ubuntu trusty-security universe


deb-src http://security.ubuntu.com/ubuntu trusty-security
universe
deb http://security.ubuntu.com/ubuntu trusty-security
multiverse
deb-src http://security.ubuntu.com/ubuntu trusty-security
multiverse

‫ مصادر‬.7
‫أغلبيتتة المعلومتا ت التتي نأع ش‬
‫ التتي يتتوفر‬،‫طيتت فتتي هتتذا الفصتل موجتتودةة فتي صتفحا ت التتدليل‬

:‫كثير منها على الظنترظنت‬

.‫« فيها بعض المعلوما ت‬InstallingSoftware» ‫صفحة ويسكي أوبنتو‬ •

.man dpkg ‫ راجع صفحة الدليل‬،dpkg ‫للمزيد من التفاصيل عن‬ •

▲ | 56
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫إدارة الحزم‬

‫مقالتتة »‪ ،«APT HOWTO‬وصتتفحة التتدليل ‪ ،man apt-get‬تتتوفر معلومتتا ت مفيتتدة عتتن‬ ‫•‬

‫كيفية استخدام ‪.apt-get‬‬

‫راجع صفحة الدليل ‪ man aptitude‬للمزيد من الخيارا ت الخاصة بأداة ‪.Aptitude‬‬ ‫•‬

‫صفحة ويسكتتي أوبنتتتو »‪ «Adding Repositories HOWTO‬تحتتتوي معلومتتا ت مفيتتدة‬ ‫•‬

‫عن طريقة إضافة المستودعا ت‪.‬‬

‫▲‬ ‫|‬ ‫‪57‬‬


‫الشبكات‬
‫‪4‬‬

‫▲‬ ‫|‬ ‫‪58‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫تتسكتتون الشتتبسكا ت متتن جهتتازين أو أكتتثر‪ ،‬كأظنظمتتة الحواستتيب والطابعتتا ت وغيرهتتا متتن المعتتدا ت‬

‫المتعلقتتة بهتتا والتتتي يمسكتتن أن تتصتتل إمتتا باستتتخدام كبتتل فيزيتتائي أو بتتالروابط اللستتلسكية؛ وذلتتك‬

‫لمشاركة وتوزيع المعلوما ت بين الجهزة المتصلة‪.‬‬

‫ ت عامتتة وأختترى متخصصتتة تتعلتتق بالشتتبسكا ت‪ ،‬وتتضتتمن لمحتتصة عتتن‬


‫يتتوفر هتتذا الفصتتل معلومتتا ت‬

‫صصل عن بروتوكول ت الشبسكة الشائعة‪.‬‬


‫مفاهيم الشبسكة‪ ،‬وظنقاصشا مف ن‬

‫‪ .1‬ضبط الشبكة‬
‫تأتي أوبنتو مع عدد من الدوا ت الرسومية لضبط أجهزة الشتتبسكة‪ ،‬هتتذا السكتتتاب متتونجه لمتتدراء‬

‫الخواديم‪ ،‬وسنيردكز على إدارة الشبسكة من سطر الوامر‪.‬‬

‫ا‪ .‬بطاقات إيثرنت‬

‫نتعنرف بطاقا ت إيثرظنت )‪ (Ethernet interfaces‬في النظام باستخدام السم الصتتطلحي‬

‫‪ ،ethX‬حيتتث تمثتتل ‪ X‬قيمتتصة رقميتتصة‪ ،‬ونتعتتنرف أول بطاقتتة إيتتثرظنت بالستتم ‪ ،eth0‬والثاظنيتتتة بالستتم‬

‫هيلنم جصرا للبقية‪ ،‬حيث نترنتب ترتيصبا رقمصيا‪.‬‬


‫‪ ،eth1‬و ن‬

‫التعرف على بطاقات إيثرنت‬

‫يمسكنك استخدام المر ‪ ifconfig‬كما يلي للتعرف على جميع بطاقا ت إيثرظنت بسرعة‪:‬‬

‫‪ifconfig -a | grep eth‬‬


‫‪eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a‬‬

‫▲‬ ‫|‬ ‫‪59‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫برمجيتت ةة أختترى تستتاعدك فتتي التعتترف علتتى جميتتع بطاقتتا ت الشتتبسكة المتتتوفرة فتتي ظنظامتتك هتتي‬

‫المر ‪lshw‬؛ نيظشهر المر ‪ lshw‬في المثال التي بطاقة إيثرظنت واحدة باستتمها المنطقتتي ‪ ،eth0‬متتع‬

‫معلوما ت الناقل )‪ (bus‬وتفاصيل التعريف وكل المسكاظنيا ت المدعومة‪:‬‬

‫‪sudo lshw -class network‬‬


‫‪*-network‬‬
‫‪description: Ethernet interface‬‬
‫‪product: BCM4401-B0 100Base-TX‬‬
‫‪vendor: Broadcom Corporation‬‬
‫‪physical id: 0‬‬
‫‪bus info: pci@0000:03:00.0‬‬
‫‪logical name: eth0‬‬
‫‪version: 02‬‬
‫‪serial: 00:15:c5:4a:16:5a‬‬
‫‪size: 10MB/s‬‬
‫‪capacity: 100MB/s‬‬
‫‪width: 32 bits‬‬
‫‪clock: 33MHz‬‬
‫)‪capabilities: (snipped for brevity‬‬
‫)‪configuration: (snipped for brevity‬‬
‫‪resources: irq:17 memory:ef9fe000-ef9fffff‬‬

‫السماء المنطقية لبطاقات إيثرنت‬

‫نتعتتتتنرف الستتتتماء المنطقيتتتتة للبطاقتتتتا ت فتتتتي الملتتتتف ‪/etc/udev/rules.d/70-persistent-‬‬

‫‪ ، net.rules‬إذا أرد ت التحسكتتم فتتي بطاقتتة التتتي ستحصتتل علتتى استتم منطقتتي معيتتن‪ ،‬فتتابحث عتتن‬

‫الستتتطر التتتذي يطتتتابق عنتتتوان ‪ MAC‬الفيزيتتتائي للبطاقتتتة‪ ،‬وعتتتددل قيمتتتة ‪ NAME=ethX‬إلتتتى الستتتم‬

‫المنطقي المطلوب؛ أعد إقلع النظام لتطبيق التغيرا ت التي أجريتها‪.‬‬

‫▲‬ ‫|‬ ‫‪60‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الشبسكا ت‬

‫إعدادات بطاقة إيثرنت‬

‫ هتتتتو برظنامتتتتج نيظشهتتتتر ويعتتتت ددل إعتتتتدادا ت بطاقتتتتة إيتتتتثرظنت كالمفاوضتتتتة التلقائيتتتتة‬ethtool ‫إن‬

،(‫ أم باتجتتتاهين‬،‫ ) اتصتتتال باتجتتتاه وحيتتتد‬duplex ‫ وظنمتتتط‬،‫ وستتترعة المنفتتتذ‬،(auto-negotiation)

‫(؛ هتتذا البرظنامتتج‬Wake-on-LAN) WoL ‫وخاصية الستيقاظ عند وصول إشارة معينة من شبسكة‬

:‫ لسكنه متوفر في المستودعا ت للتثبيت‬،‫غير مثنبت افتراضصيا‬

sudo apt-get install ethtool

‫ما يلي مثا ة‬


:‫ وضبط إعدادا ت بطاقة إيثرظنت‬،‫ل عن عرض الميزا ت المدعومة‬

sudo ethtool eth0


Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: yes

▲ | 61
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫ن‬
‫التغيرا ت التي أجريت بالداة ‪ ethtool‬هي تغيتترا ت مؤقتتة‪ ،‬وستتزول بعتد إعتادة القلع‪ ،‬إذا‬

‫أرد ت الحفاظ على تلك الخيارا ت‪ ،‬فأضف أمر ‪ ethtool‬الذي تريده إلى عبارة ‪) pre-up‬التي نتننفذ‬

‫عند تهيئة البطاقة وقبل استخدامها(‪ ،‬في ملف العدادا ت ‪./etc/network/interfaces‬‬

‫يوضح المثال التي كيتف يمسكتن ضتبط إعتدادا ت بطاقتتة نمعنرفتة علتى أظنهتتا ‪ eth0‬بسترعة منفتذ‬

‫تساوي ‪ 1000Mb/s‬وتعمل في ظنمط ‪) full duplex‬اتصال باتجاهين(‪:‬‬

‫‪auto eth0‬‬
‫‪iface eth0 inet static‬‬
‫‪pre-up /sbin/ethtool -s eth0 speed 1000 duplex full‬‬

‫ملحظة‪ :‬علتتى الرغتم متن أن المثتتال الستابق يستتخدم الطريقتتة »‪ ،«static‬إل أظنتته يعمتتل متع الطتترق الخترى أي ص‬
‫ضتتا‪،‬‬
‫كاستتتخدام ‪ DHCP‬؛ فتتالغرض متتن المثتتال الستتابق هتتو توضتتيح المسكتتان الصتتحيح لوضتتع عبتتارة ‪ pre-up‬فتتي ملتتف‬
‫إعدادا ت البطاقة وحسب‪.‬‬

‫ب‪ .‬عناوين ‪IP‬‬

‫سيشتتتترح القستتتتم التتتتتي طريقتتتتة إعتتتتداد عنتتتتاوين ‪ IP‬لنظامتتتتك‪ ،‬وضتتتتبط البوابتتتتة )‪(gateway‬‬

‫الفتراضية اللزمة للتواصل على الشبسكة المحلية والظنترظنت‪.‬‬

‫إسناد مؤقت لعنوان ‪IP‬‬

‫يمسكتتتتتن استتتتتتخدام الوامتتتتتر القياستتتتتية عنتتتتتد الضتتتتتبط المتتتتتؤقت للشتتتتتبسكة‪ ،‬كتتتتتالمر ‪ ip‬و ‪ifconfig‬‬

‫و ‪ route‬التتتي يمسكنتتك إيجادهتتا فتتي أغلتتب أظنظمتتة تشتتغيل غنتتو‪/‬ليننسكتتس؛ تستتمح لتتك هتتذه الوامتتر بضتتبط‬

‫العدادا ت التي تأخذ حيز التنفيذ فورصيا‪ ،‬لسكنها ليست دائمة؛ أي أظنها لن تبقى نمفنعلصة بعد إعادة التشغيل‪.‬‬

‫▲‬ ‫|‬ ‫‪62‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الشبسكا ت‬

‫ وقنتاع‬IP ‫ لتعتديل عنتوان‬:‫ بالطريقتتة التيتة‬ifconfig ‫ استخدم المر‬،‫ مؤقصتا‬IP ‫لضبط عنوان‬

:‫( لمطابقة متطلبا ت الشبسكة‬subnet mask) ‫الشبسكة الفرعية‬

sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0

:eth0 ‫ للبطاقة‬IP ‫للتأكد من ضبط عنوان‬

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a
inet addr:10.0.0.100 Bcast:10.0.0.255
Mask:255.255.255.0
inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:466475604 errors:0 dropped:0 overruns:0
frame:0
TX packets:403172654 errors:0 dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:1000
RX bytes:2574778386 (2.5 GB) TX bytes:1618367329
(1.6 GB)
Interrupt:16

‫ حيث عليك تغييتتر‬:‫ بالطريقة التية‬route ‫ يمسكنك استخدام المر‬،‫لضبط البوابة الفتراضية‬

:‫عنوان البوابة الفتراضية لمطابقة متطلبا ت شبسكتك‬

sudo route add default gw 10.0.0.1 eth0

▲ | 63
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫يمسكنك استخدام المر ‪ route‬بهذه الطريقة للتأكد من ضبط البوابة الفتراضية‪:‬‬

‫‪route -n‬‬
‫‪Kernel IP routing table‬‬
‫‪Destination Gateway Genmask‬‬ ‫‪Flags Metric Ref Use Iface‬‬
‫‪10.0.0.0‬‬ ‫‪0.0.0.0 255.255.255.0‬‬ ‫‪U‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪eth0‬‬
‫‪0.0.0.0‬‬ ‫‪10.0.0.1 0.0.0.0‬‬ ‫‪UG‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪eth0‬‬

‫إذا كنت تحتاج إلى ‪ DNS‬لعدادا ت شبسكتك المؤقتة‪ ،‬فيمسكنتتك إضتتافة عنتتاوين ‪ IP‬لختتواديم ‪DNS‬‬

‫فتتي الملتتف ‪ ،/etc/resolv.conf‬لسكتتن ليتتس متتن المستحستتن عموصمتتا تعتتديل الملتتف ‪/etc/resolv.conf‬‬

‫مباشر صة‪ ،‬لسكن هذا ضبط مؤقت وغيتر دائتتم؛ يوضتح المثتال التتي طريقتة إضتافة عنتاوين ختادونمي ‪DNS‬‬

‫إلتتى ملتتف ‪/etc/resolv.conf‬؛ التتتي يجتتب أن نتبتتندل إلتتى الختتواديم الملئمتتة لشتتبسكتك؛ شتترةح مطتتول عتتن‬

‫ضبط إعدادا ت عميل ‪ DNS‬سيأتي في القسم التي‪.‬‬

‫‪nameserver 8.8.8.8‬‬
‫‪nameserver 8.8.4.4‬‬

‫إذا لتتتم تعتتتد بحاجتتتة لهتتتذا الضتتتبط وتريتتتد مستتتح كتتتل إعتتتدادا ت ‪ IP‬متتتن بطاقتتتة معينتتتة‪ ،‬فعليتتتك‬

‫استخدام المر ‪ ip‬مع الخيار ‪ flush‬كما يلي‪:‬‬

‫‪ip addr flush eth0‬‬

‫ملحظة‪ :‬عملية إزالة ضبط ‪ IP‬باستخدام المتر ‪ ip‬ل تمستح محتويتا ت ملتتف ‪ ،/etc/resolv.conf‬فعليتتك حتتذف‬
‫أو تعديل محتوياته يدوصيا‪.‬‬

‫▲‬ ‫|‬ ‫‪64‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫إسناد ديناميكي لعنوان ‪) IP‬عميل ‪(DHCP‬‬

‫لعداد الخادوم لسكي يستخدم ‪ DHCP‬لسناد العنوان ديناميسكصيا‪ ،‬فأضتتف الطريقتتة ‪ dhcp‬إلتتى‬

‫عبارة »عائلة العنوان« ) ‪ (address family‬في ‪ inet‬للبطاقة المطلوبة في ملف ‪/etc/network‬‬

‫‪ ،/interfaces‬يفترض المثال التي أظنك نتشعدد بطاقة إيثرظنت الولى المعنرفة باسم ‪:eth0‬‬

‫‪auto eth0‬‬
‫‪iface eth0 inet dhcp‬‬

‫بإضافة ضبط للبطاقة كما في المثال السابق‪ ،‬يمسكنك أن تفدعل البطاقة باستتتخدام المتتر ‪ifup‬‬

‫يء ‪ DHCP‬باستخدام ‪.dhclient‬‬


‫الذي يه د‬

‫‪sudo ifup eth0‬‬

‫لتعطيل البطاقة يدوصيا‪ ،‬يمسكنتتك استتتخدام المتتر ‪ ،ifdown‬التتذي بتدوره يه د‬


‫يتتء عمليتة الطلق‬

‫)‪ (release‬الخاصة بنظام ‪ ،DHCP‬ويوقف عمل البطاقة‪.‬‬

‫‪sudo ifdown eth0‬‬

‫إسناد عنوان ‪ IP‬ثابت‬

‫لعتتتداد ظنظامتتتك لستتتتخدام عنتتتوان ‪ IP‬ثتتتابت‪ ،‬فاستتتتخدم الطريقتتتة ‪ static‬فتتتي عبتتتارة »عائلتتتة‬

‫العنتتتوان« فتتتي ‪ inet‬للبطاقتتتة المطلوبتتتة فتتتي ملتتتف ‪ ،/etc/network/interfaces‬يفتتتترض المثتتتال‬

‫التي أظنك نتشعدد بطاقة إيثرظنت الولى المعنرفة باسم ‪.eth0‬‬

‫▲‬ ‫|‬ ‫‪65‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الشبسكا ت‬

‫( إلتتى القيتتم التتتي‬gateway ) ‫( والبوابتتة‬netmask) ‫( وقناع الشتتبسكة‬address) ‫عددل العنوان‬

:‫تتطلبها شبسكتك‬

auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1

:ifup ‫ يمسكنك أن تفدعل البطاقة باستخدام المر‬،‫بعد إضافة ضبط للبطاقة كما في المثال السابق‬

sudo ifup eth0

:‫ لتعطيل البطاقة يدوصيا‬ifdown ‫يمسكنك استخدام المر‬

sudo ifdown eth0

loopback ‫بطاقة‬

‫ ولهتتا عنتوان‬،lo ‫ معنرفة من النظام بالستتم‬،(‫ ) التي هي المضيف المحلي‬loopback ‫إن بطاقة‬

:ifconfig ‫ ويمسكن أن نتعنرض باستخدام المر‬،127.0.0.1 ‫ الفتراضي‬IP

ifconfig lo
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2718 errors:0 dropped:0 overruns:0 frame:0
TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB)

▲ | 66
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫افتراضصيا‪ ،‬يجب أن يسكون هنالتتك ستتطران فتتي ملتتف ‪ /etc/network/interfaces‬مستؤولن‬

‫عن ضبط بطاقة ‪ loopback‬تلقائ صيا‪ ،‬ومن المستحسن أن تبقي علتتى العتتدادا ت الفتراضتتية متتا لتتم‬

‫ض محدد من تغييرها؛ مثال على السطرين الفتراضيين‪:‬‬‫يسكن لك غر ة‬

‫‪auto lo‬‬
‫‪iface lo inet loopback‬‬

‫ج‪ .‬استبيان السماء‬

‫إن استبيان السماء )‪ (Name resolution‬الذي يتعلق بشبسكا ت ‪ ،IP‬هو عملية ربط عناوين‬

‫‪ IP‬إلى أسماء المضيفين‪ ،‬جاع صل من السهل تمييز الموارد على الشبسكة؛ سيشتترح القستتم التتتي كيتتف‬

‫نينعتتتدد النظتتتام لستتتتبيان الستتتماء باستتتتخدام ‪ ،DNS‬وستتتجل ت أستتتماء المضتتتيفين الثابتتتتة )‪static‬‬

‫‪.(hostname records‬‬

‫ضبط إعدادات عميل ‪DNS‬‬

‫ت ل تحتتتاج لتعتتديله إل ظنتتادصرا‪ ،‬أو كتتان‬ ‫تقليدصيا‪ ،‬كان الملف ‪ /etc/resolv.conf‬ملف ضتتب ت‬
‫ط ثتتاب ت‬

‫نيعندل تلقائصيا عبر عميل ‪DHCP‬؛ أما حالصيا فيمسكتتن أن نيبتددل الحاستوب بيتتن شتبسكتة وأخترى متتن حيتن‬

‫لخر‪ ،‬وأصبح نيستخندم إطار العمل ‪ resolvconf‬لنتنت يبع هذه التغيرا ت وتحديث إعدادا ت استتتبيان‬

‫الستتتماء تلقائ صيتتتا؛ فتتتي الواقتتتع هتتتو وستتتيط بيتتتن البرامتتتج التتتتي تتتتوفر معلومتتتا ت استتتتبيان الستتتماء‪،‬‬

‫والتطبيقا ت التي تحتاج إلى تلك المعلوما ت‪.‬‬

‫▲‬ ‫|‬ ‫‪67‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫نينغتتنذى ‪ Resolvconf‬بالمعلومتتا ت عتتبر مجموعتتة متتن الستتسكربتا ت التتتي تتعلتتق بإعتتدادا ت بطاقتتة‬

‫الشبسكة‪ ،‬الفرق الوحيد بالنسبة للمستتتخدم هتي أن أديتة تعتديل ت حتدثت علتتى ملتف ‪/etc/resolv.conf‬‬

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


‫ث متتا ‪resolvconf‬؛ فبتتدصل متتن ذلتتك‪ ،‬يستتتخدم‬

‫‪ resolvconf‬عميتتتل ‪ DHCP‬وملتتتف ‪ /etc/network/interfaces‬لتوليتتتد قائمتتتة بختتتواديم الستتتماء‬

‫والنطاقا ت ليضعها في ملف ‪ ،/etc/resolv.conf‬الذي هو الن وصلةة رمزية )‪:(symlink‬‬

‫‪/etc/resolv.conf -> ../run/resolvconf/resolv.conf‬‬

‫لضبط استبيان السماء‪ ،‬أضف عناوين ‪ IP‬لخواديم السماء الملئمة لشبسكتك في ملتتف ‪/etc/‬‬

‫‪ ،network/interfaces‬يمسكنتتتك إضتتتافة قائمتتتة بحتتتث اختياريتتتة للحقتتتة ‪DNS suffix) DNS‬‬

‫‪ (search-lists‬لمطابقة أستتماء ظنطاقتتا ت الشتتبسكة‪ ،‬ولسكتتل خيتتار ضتتبط ‪ resolv.conf‬صتتالح‪ ،‬يمسكنتتك‬

‫تضمين سطر واحد يبدأ باسم الخيار مع السابقة ‪ dns-‬مما ينتج ملصفا شبيصها بالملف التي‪:‬‬

‫‪iface eth0 inet static‬‬


‫‪address 192.168.3.3‬‬
‫‪netmask 255.255.255.0‬‬
‫‪gateway 192.168.3.1‬‬
‫‪dns-search example.com‬‬
‫‪dns-nameservers 192.168.3.45 192.168.8.10‬‬

‫يمسكتتتتن أن نيستتتتتخندم الخيتتتتار ‪ search‬متتتتع عتتتتددة أستتتتماء ظنطاقتتتتا ت‪ ،‬وستتتتنتلنحق طلبيتتتتا ت ‪DNS‬‬

‫في التسلسل الذي نأد ش‬


‫خ نلت به؛ على سبيل المثال‪ ،‬ربما يسكون لشبسكتك ظنطاقا ت فرعيتتة يجتتب البحتتث‬

‫فيهتتتتتتتتا؛ ظنطتتتتتتتتاق رئيستتتتتتتتي » ‪ ،«example.com‬وظنطتتتتتتتتاقين فرعييتتتتتتتتن »‪،«sales.example.com‬‬

‫و » ‪.«dev.example.com‬‬

‫▲‬ ‫|‬ ‫‪68‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫إذا كنت تريد البحث في عددة ظنطاقا ت فرعية‪ ،‬فسيسكون ملف الضبط كالتي‪:‬‬

‫‪iface eth0 inet static‬‬


‫‪address 192.168.3.3‬‬
‫‪netmask 255.255.255.0‬‬
‫‪gateway 192.168.3.1‬‬
‫‪dns-search example.com sales.example.com dev.example.com‬‬
‫‪dns-nameservers 192.168.3.45 192.168.8.10‬‬

‫إذا كنت تحاول عمل ‪ ping‬للمضيف ذي السم ‪ ،server1‬فسيطلب النظام تلقائصيا طلبية ‪DNS‬‬

‫لسم النطاق السكامل )‪ ،([FQDN] Fully Qualified Domain Name‬في الترتيب التي‪:‬‬

‫‪server1.example.com‬‬ ‫‪.1‬‬

‫‪server1.sales.example.com .2‬‬

‫‪server1.dev.example.com .3‬‬

‫إذا لتتم نيعنثتتر علتتى أديتتة مطابقتتا ت‪ ،‬فستتيزودظنا ختتادوم ‪ DNS‬بنتيجتتة »‪ ،«notfound‬وستفشتتل‬

‫طلبية ‪.DNS‬‬

‫أسماء المضيفين الثابتة‬

‫يمسكن تعريف أسماء ثابتة للمضيفين تربط بين اسم المضيف وعنوان ‪ IP‬في ملف ‪/etc/hosts‬؛‬

‫المدخل ت فتي ملتف ‪ hosts‬ستستبق طلبي ا ت ‪ DNS‬افتراض صيا‪ ،‬هتذا يعنتي لتو أن ظنظامتك ح اول تفس ير‬

‫اسم مضيف‪ ،‬وكان هذا السم يطابق مدخلصة فتي ملتف ‪ ،/etc/hosts‬فلتن يحتاول البحتث فتي ستجل ت‬

‫صتتا عنتتدما ل نينتنطلتتب الوصتتول إلتتى الظنتتترظنت‪ -‬يمسكتتن أن‬


‫‪DNS‬؛ وفتتي بعتتض حتتال ت الستتتخدام ‪-‬وخصو ص‬

‫تتعرف الخواديم الموصولة بعدد قليل من المتوارد الشتبسكية عل ى بعضتها باستتخدام أستماء المضتيفين‬

‫الثابتة بدصل من ‪.DNS‬‬

‫▲‬ ‫|‬ ‫‪69‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫المثتتال التتتي هتتو ملتتف ‪ ،hosts‬حيتتث ظنجتتد عتتدصدا متتن الختتواديم المحليتتة قتتد نعدرنفتتت بأستتماء‬

‫مضيفين بسيطة‪ ،‬وأسماتء بديلة‪ ،‬وأسماء النطاقا ت السكاملة المسكافئة لها‪:‬‬

‫‪127.0.0.1‬‬ ‫‪localhost‬‬
‫‪127.0.1.1‬‬ ‫‪ubuntu-server‬‬
‫‪10.0.0.11‬‬ ‫‪server1 vpn server1.example.com‬‬
‫‪10.0.0.12‬‬ ‫‪server2 mail server2.example.com‬‬
‫‪10.0.0.13‬‬ ‫‪server3 www server3.example.com‬‬
‫‪10.0.0.14‬‬ ‫‪server4 file server4.example.com‬‬

‫ن‬
‫ملحظة‪ :‬لحظ أن كتل ختادوم متتن الختواديم فتي المثتال الستابق قتد أعطتي أستماصء بديلتصة بالضتتافة إلتتى أستتمائها‬
‫الساسية‪ ،‬وأسماء النطاقا ت السكاملة؛ حيت نرشبنط ‪ server1‬مع السم ‪ ،vpn‬و ‪ server2‬نيشتتار إليته بالستتم ‪،mail‬‬
‫و ‪ server3‬بالسم ‪ ،www‬و ‪ server4‬بالسم ‪.file‬‬

‫ضبط تبديل تخدمة السماء‬

‫التتتترتيب التتتذي يتدبعتتته ظنظامتتتك لختيتتتار طريقتتتتة لتحويتتتل أستتتماء المضتتتيفين إلتتتى عنتتتاوين ‪IP‬‬

‫نمنتنحنسكتتتةم بتتته متتتن ملتتتف إعتتتدادا ت »نمنبتتتددل خدمتتتة الستتتماء« )‪([NSS] Name Service Switch‬‬

‫الموجود في ‪/etc/nsswitch.conf‬؛ وكما نذشكتت نر فتتي القستتم الستتابق‪ ،‬فتتإن أستماء المضتتيفين الثابتتتة‬

‫المعنرفة في ملتف ‪ /etc/hosts‬تستبق استتتخدام ستجل ت ‪DNS‬؛ المثتتال التتتي يحتتوي علتتى الستطر‬

‫المسؤول عن ترتيب البحث عن أسماء المضيفين في ملف ‪:/etc/nsswitch.conf‬‬

‫‪hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4‬‬

‫▲‬ ‫|‬ ‫‪70‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫‪ :files‬المحاولتتتة أو صل للحصتتتول علتتتى العنتتتاوين متتتن ملتتتف أستتتماء المضتتتيفين الثابتتتتة فتتتي‬ ‫•‬

‫‪./etc/hosts‬‬

‫‪ :mdns4_minimal‬محاولة الحصول على العناوين باستخدام ‪.Mulitcast DNS‬‬ ‫•‬

‫] ‪ :[NOTFOUND=return‬تعنتتتتي أن أي جتتتتواب يسكتتتتون ‪ notfound‬أتتتتتى متتتتن عمليتتتتة‬ ‫•‬

‫‪ mdns4_minimal‬الستتتتابقة ستتتتنيعا نمل بموثقيتتتتة‪ ،‬ولتتتتن يحتتتاول النظتتتتام الستتتتتمرار فتتتتي‬

‫محاولة الحصول على جواب‪.‬‬

‫‪ :dns‬تمثل طلبية ‪ Unicast DNS‬قديمة‪.‬‬ ‫•‬

‫‪ :mdns4‬تمثل طلبية ‪.Mulitcast DNS‬‬ ‫•‬

‫لتعديل ترتيب طرائتق استتبيان الستماء ) ‪ (name resolution‬المتتذكورة آظنصفتتا‪ ،‬يمسكنتك بسكتتل‬

‫بستتتاطة تعتتتديل قيمتتتة عبتتتارة »‪ «hosts‬للقيمتتتة التتتي تريتتتدها؛ علتتتى ستتتبيل المثتتتال‪ ،‬لتتتو كنتتتت تفضتتتل‬

‫استتتخدام ‪ Unicast DNS‬القتتديم‪ ،‬بتتدصل متتن ‪ ،Mulitcast DNS‬فتستتتطيع تغييتتر تلتتك السلستتلة‬

‫النصية في ملف‪ /etc/nsswitch.conf‬كما يلي‪:‬‬

‫‪hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4‬‬

‫د‪ .‬إنشاء الجسور‬

‫إظنشاء جسر )‪ (bridge‬بين عدة بطاقا ت شبسكية هو ضبط متقتتدم جتتصدا‪ ،‬لسكنتته مفيتتد كتتثيصرا فتتي‬

‫حال ت عديدة‪ ،‬أحتد تلتك الحتال ت هتو إظنشتتاء جستتر بيتن عتتدة اتصتتال ت شتبسكية‪ ،‬ثتم استتخدام جتدار‬

‫ظناري لترشيح )‪ (filter‬ما يمر بين قسمين من الشتبسكة؛ حالتةة أخترى هتي استتخدام إحتدى البطاقتتا ت‬

‫لتمسكيتتتن »الل ت الوهميتتة« )‪ (Virtual Machines‬متتن الوصتتول إلتتى الشتتتبسكة الخارجيتتتة؛ يشتترح‬

‫المثال التي الحالة الخيرة‪.‬‬

‫▲‬ ‫|‬ ‫‪71‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫قبتتتل ضتتتبط إعتتتدادا ت الجستتتر‪ ،‬عليتتك تثتتبيت حزمتتتة ‪ ،bridge-utils‬أد ش‬


‫ختتتل المتتتر التتتي فتتتي‬

‫الطرفية لتثبيت هذه الحزمة‪:‬‬

‫‪sudo apt-get install bridge-utils‬‬

‫ثم اضبط الجسر بتعديل ملف ‪:/etc/network/interfaces‬‬

‫‪auto lo‬‬
‫‪iface lo inet loopback‬‬

‫‪auto br0‬‬
‫‪iface br0 inet static‬‬
‫‪address 192.168.0.10‬‬
‫‪network 192.168.0.0‬‬
‫‪netmask 255.255.255.0‬‬
‫‪broadcast 192.168.0.255‬‬
‫‪gateway 192.168.0.1‬‬
‫‪bridge_ports eth0‬‬
‫‪bridge_fd 9‬‬
‫‪bridge_hello 2‬‬
‫‪bridge_maxage 12‬‬
‫‪bridge_stp off‬‬

‫ملحظة‪ :‬أد ش‬
‫خل القيم الملئمة لبطاقتك الفيزيائية‪ ،‬والشبسكة عندك‪.‬‬

‫ثم شدغل بطاقة الجسر‪:‬‬

‫‪sudo ifup br0‬‬

‫▲‬ ‫|‬ ‫‪72‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫يجب أن تعمل بطاقة الجسر تلقائصيا الن‪ ،‬نتودفر الداة ‪ brctl‬معلوما ت‬


‫ ت حول حالة الجسر‪ ،‬وتتحسكم‬

‫بالبطاقا ت التي تسكدون جزصءا من الجسر؛ راجع صفحة الدليل ‪ man brctl‬لمزيد من المعلوما ت‪.‬‬

‫ه‪ .‬مصادر‬

‫هنالك وصل ت في صتفحة ويسكتتي أوبنتتو »‪ «Network‬تشتتير إلتى مقتتال ت تشتترح الضتتبط‬ ‫•‬

‫المتقدم جصدا للشبسكة‪.‬‬

‫صتتتتتتتفحة التتتتتتتدليل الخاصتتتتتتتة بالبرمجيتتتتتتتة ‪ resolvconf‬فيهتتتتتتتا بعتتتتتتتض المعلومتتتتتتتا ت عتتتتتتتن‬ ‫•‬

‫‪.resolvconf‬‬

‫ ت أختتتترى لملتتتتف‬
‫صتتتتفحة دليتتتل ‪ man interfaces‬تحتتتتوي علتتتتى تفاصتتتتيل عتتتتن خيتتتتارا ت‬ ‫•‬

‫‪./etc/network/interfaces‬‬

‫صتتتفحة دليتتتل ‪ man dhclient‬تحتتتتوي علتتتى تفاصتتتيل عتتتن الخيتتتارا ت الختتترى لضتتتبط‬ ‫•‬

‫إعدادا ت عميل ‪.DHCP‬‬

‫للمزيتد متن المعلومتا ت ح ول ض بط عميتل ‪ ،DNS‬راجتع صتفحة التدليل ‪man resolver‬؛‬ ‫•‬

‫راجتتع أي ص‬
‫ضتتا الفصتتل الستتادس متتن السكتتتاب المنشتتور متتن ‪Linux Network» : O'Reilly‬‬

‫‪«Administrator's Guide‬؛ الذي هو مصدر جيتتد للمعلومتتا ت حتتول ضتبط ‪،resolver‬‬

‫وخدمة السماء‪.‬‬

‫لمزيتتتتد متتتتن المعلومتتتتا ت حتتتتول الجستتتتور‪ ،‬راجتتتتع صتتتتفحة التتتتدليل ‪ ،man brctl‬وصتتتتفحة‬ ‫•‬

‫‪ Networking-bridge‬في موقع مؤسسة ليننسكس )‪.(Linux Foundation‬‬

‫▲‬ ‫|‬ ‫‪73‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫‪ .2‬بروتوكول ‪TCP/IP‬‬
‫إن بروتوكول التحسكم فتي ظنقتل البياظنتا ت ) ‪ (Transmission Control Protocol‬وبروتوكتول‬

‫الظنترظنت )‪ (Internet Protocol‬المستمى اختص اصرا ‪ TCP/IP‬هتو معيتار يضتم مجموعتة بروتوكتول ت‬
‫ ت‬

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

‫) ‪ ،([DARPA] Defense Advanced Research Projects Agency‬كطتتتترق للتواصتتتتل بيتتتتن‬

‫مختلف أظنواع الحواسيب وشبسكا ت الحواسيب؛ إن بروتوكول ‪ TCP/IP‬هو العصتتب المحتترك للظنتتترظنت‪،‬‬

‫وهذا ما يجعله أشهر مجموعة بروتوكول ت شبسكدية على وجه الرض‪.‬‬

‫ا‪ .‬مقدمة عن ‪TCP/IP‬‬

‫المسكوظنتتان الرئيستتيان متتن مسكوظنتتا ت ‪ TCP/IP‬يتعتتاملن متتع مختلتتف ظنتتواحي شتتبسكة الحاستتوب؛‬

‫بروتوكول الظنترظنت ‪-‬جزء »‪ «IP‬من ‪ -TCP/IP‬هتتو بروتوكتتول عتتديم التصتتال ) ‪(connectionless‬‬

‫يتعامتتل متتع طريقتتة تتتوجيه ) ‪ (routing‬التترزم الشتتبسكية مستتتخدصما متتا يستتمى » ‪«IP Datagram‬‬

‫كوحتتتدة رئيستتتية للمعلومتتتا ت الشتتتبسكية؛ تتسكتتتون ‪ IP Datagram‬متتتن ترويستتتة‪ ،‬يتبعهتتتا رستتتالة‪ .‬إن‬

‫بروتوكول التحسكتم فتي ظنقتل البياظنتا ت هتو »‪ «TCP‬متن ‪ ،TCP/IP‬ونيمدسكتتن مضتيفي الشتبسكة متن إظنشتتاء‬

‫ ت يستتتتطيعون استتتتخدامها لتبتتتادل مجتتتاري البياظنتتتا ت )‪(data streams‬؛ ونيضتتتنمن أي ص‬


‫ضتتتا‬ ‫اتصتتتال ت‬

‫ن‬
‫بروتوكتتول ‪ TCP‬أن البياظنتتا ت التتتي أرشستتنلت بواستتطة تلتتك التصتتال ت سنتنستتنلم وتصتتل إلتتى مضتتيف‬

‫ن‬
‫الشبسكة النمستقشبل كما أرشسنلت تماصما وبنفس الترتيب من النمرشسل‪.‬‬

‫▲‬ ‫|‬ ‫‪74‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫ب‪ .‬ضبط ‪TCP/IP‬‬

‫يتسكتتتون ضتتتبط ‪ TCP/IP‬متتتن عتتتددة عناصتتتر التتتتي يمسكتتتن أن نتغ نيتتتر بتعتتتديل ملفتتتا ت العتتتدادا ت‬

‫الملئمتتة‪ ،‬أو باستتتخدام حلتتول مثتتل ختتادوم »بروتوكتتول ضتتبط المضتتيف التتديناميسكي« ) ‪Dynamic‬‬

‫‪ ،([DHCP] Host Configuration Protocol‬الذي يمسكن أن نيضتتنبط لتتوفير إعتتدادا ت ‪TCP/IP‬‬

‫صالحة لعملء الشبسكة تلقائصيا‪ ،‬يجب أن نتضبط قيم تلك العدادا ت ضبصطا صحيصحا لسكي تساعد فتتي‬

‫عمل الشبسكة عمصل سليصما في ظنظام أوبنتو عندك‪.‬‬

‫عناصر الضبط الخاصة ببروتوكول ‪ TCP/IP‬ومعانيها هي‪:‬‬

‫عنوان ‪ :IP‬هو سلسة ظنصية فريدة نيع نبر عنها بأربع مجموعا ت من أرقتتام تتتتراوح بيتتن الصتتفر‬ ‫•‬

‫)‪ ،(0‬ومئتتتان وخمتتةس وخمستتون )‪ ،(255‬مفصتتولةة بنقتتط‪ ،‬وكتتل أربعتتة أرقتتام تمثتتل ثماظنيتتة ) ‪(8‬‬

‫بتتتا ت متتن العنتتوان التتذي يسكتتون طتتوله السكامتتل اثنتتان وثلثتتون ) ‪ (32‬بصتتتا‪ ،‬نتستتمى هتتذه الصتتيغة‬

‫باسم »‪.«dotted quad notation‬‬

‫قناع الشبسكة‪ :‬قنتاع الشتبسكة الفرعيتة )أو باختصتار‪ :‬قنتاع الشتبسكة ] ‪ ،([netmask‬هتو قنتاع‬ ‫•‬

‫ثنتتائي يفصتتل قستتم عنتتوان ‪ IP‬المهتتم للشتتبسكة‪ ،‬عتتن قستتم العنتتوان المهتتم للشتتبسكة الفرعيتتة‬

‫) ‪(Subnetwork‬؛ علتتى ستتبيل المثتتال‪ ،‬فتتي شتتبسكة ذا ت الفئتتة ‪،(Class C network) C‬‬

‫قناع الشبسكة الفتراضي هو ‪ ،255.255.255.0‬الذي يحجز أول ثلثة بايتا ت من عنوان‬

‫‪ IP‬للشتتبسكة‪ ،‬ويستتمح لختتر بتتايت متتن عنتتوان ‪ IP‬أن يبقتتى متاصحتتا لتحديتتد المضتتيفين علتتى‬

‫الشبسكة الفرعية‪.‬‬

‫▲‬ ‫|‬ ‫‪75‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫عنتتوان الشتتبسكة‪ :‬يمثتتل عنتتوان الشتتبسكة )‪ (Network Address‬البايتتتا ت اللزمتتة لتمثيتتل‬ ‫•‬

‫الجتتزء الختتاص متتن الشتتبسكة متتن عنتتوان ‪ ،IP‬علتتى ستتبيل المثتتال‪ ،‬المضتتيف صتتاحب العنتتوان‬

‫‪ 12.128.1.2‬فتتتي شتتتبسكة ذا ت الفئتتتة ‪ A‬يستتتتطيع استتتتخدام ‪ 12.0.0.0‬كعنتتتوان الشتتتبسكة‪،‬‬

‫حيتتتث يمثتتتل الرقتتتم ‪ 12‬البتتتايت الول متتتن عنتتتوان ‪ ) IP‬جتتتزء الشتتتبسكة(‪ ،‬وبقيتتتة الصتتتفار فتتتي‬

‫البايتا ت الثلثة المتبقية تمثتل قيتم مضتتيفين محتمليتن فتتي الشتبسكة؛ وفتي مضتتيف شتبسكة‬

‫يستخدم عنوان ‪ IP‬الخاص ‪ 192.168.1.100‬الذي يستخدم بدوره عنوان الشتتبسكة ‪192.‬‬

‫‪ 168.1.0‬التتتتتتذي يحتتتتتتدد أول ثلثتتتتتتة بايتتتتتتتا ت متتتتتتن شتتتتتتبسكة ذا ت الفئتتتتتتة ‪ C‬والتتتتتتتي هتتتتتتي‬

‫‪ ،192.168.1‬وصفصرا الذي نيمدثل جميع القيم المحتملة للمضيفين على الشبسكة‪.‬‬

‫عنوان البث‪ :‬عنوان البث )‪ (Broadcast Address‬هو عنوان ‪ IP‬يسمح لبياظنا ت الشتتبسكة‬ ‫•‬

‫بتتأن نترنستتل إلتتى كتتل المضتتيفين مصعتتا فتتي شتتبسكة محليتتة بتتدصل متتن إرستتالها لمضتتيف محتتدد‪.‬‬

‫العنوان القياسي العام للبث لشبسكا ت ‪ IP‬هو ‪ ،255.255.255.255‬لسكن ل يمسكتتن استتتخدام‬

‫هتتذا العنتتوان لبتتث الرستتائل لسكتتل مضتتيف علتتى شتتبسكة الظنتتترظنت‪ ،‬لن الموجهتتا ت ) ‪(routers‬‬

‫تحجبها؛ ومن الملئتم أن نيضت نبط عن وان البتث لمطابقتة شتبسكة فرعيتة محتددة‪ ،‬علتى س بيل‬

‫المثال‪ ،‬في شبسكة خاصة ذا ت الفئة ‪ ،C‬أي ‪ ،192.168.1.0‬يسكون عنوان البث ‪192.168.1‬‬

‫‪.255‬؛ نتونلد رسائل البث عادصة من بروتوكول ت شتتبسكدية مثتتل بروتوكتتول استتتبيان العنتتاوين‬

‫) ‪ ،([ARP] Address Resolution Protocol‬وبروتوكتتتتتتول معلومتتتتتتا ت التتتتتتتوجيه‬

‫) ‪.([RIP] Routing Information Protocol‬‬

‫▲‬ ‫|‬ ‫‪76‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫عنتتتوان البوابتتتة‪ :‬إن عنتتتوان البوابتتتة ) ‪ (Gateway Address‬هتتتو عنتتتوان ‪ IP‬التتتذي يمسكتتتن‬ ‫•‬

‫الوصول عبره إلى شبسكة معينة أو إلتتى مضتتيف معيتتن علتى شتتبسكة؛ فتتإذا أراد أحتتد مضتتيفي‬

‫الشبسكة التواصل مع مضتي تف آختر‪ ،‬ولسكتن المضتيف الختر ليتس عل ى ظنفتس الشتبسكة‪ ،‬فيجتب‬

‫عندئ تذ استخدام البوابة؛ في حال ت عديدة‪ ،‬يسكون عنوان البوابة في شبسكتة ما هتتو المتتوجه‬

‫)‪ (router‬على تلك الشتبسكة‪ ،‬التتذي بتدوره نيمتت درر البياظنتتا ت إلتى بقيتتة الشتتبسكا ت أو المضتيفين‬

‫كمضيفي الظنترظنت على سبيل المثال‪ .‬يجب أن تسكتتون قيمتتة عنتتوان البوابتتة صتتحيحصة‪ ،‬وإل‬

‫فلن يستطيع ظنظامك الوصول إلى أي مضيف خارج حدود شبسكته ظنفسها‪.‬‬

‫عنتتوان ختتادوم الستتماء‪ :‬عنتتاوين ختتادوم الستتماء ) ‪ (Nameserver Addresses‬تمثتتل‬ ‫•‬

‫عناوين ‪ IP‬لخواديم خدمة أستتماء المضتتيفين ‪ ،DNS‬التتتي تستتتطيع استتتبيان )‪(resolve‬‬

‫أسماء مضيفي الشبسكة وتحويلها إلى عناوين ‪IP‬؛ هنالك ثلث طبقا ت من عناوين ختتادوم‬

‫الستتتتتماء‪ ،‬التتتتتتي يمسكتتتتتن أن نتحتتتتت ندد بتتتتتترتيب استتتتتتخدامها‪ :‬ختتتتتادوم الستتتتتماء الرئيستتتتتي‬

‫)‪ ،(Primary‬وختتتتتادوم الستتتتتماء الثتتتتتاظنوي )‪ ،(Secondary‬وختتتتتادوم الستتتتتماء الثلثتتتتتي‬

‫)‪ ،(Tertiary‬ولسكتتي يستتتطيع ظنظامتتك استتتبيان أستتماء أستتماء مضتتيفي الشتتبسكة وتحويلهتتا‬

‫إلى عناوين ‪ IP‬الموافقة لهم‪ ،‬فيجب عليك تحديتد عنتاوين ختادوم الستماء التذي تثتق بته‬

‫ ت عديدة‪ ،‬نتونفر هذه العناوين من موزع‬


‫لستخدامه في ضبط ‪ TCP/IP‬لنظامك؛ في حال ت‬

‫خدمتتتة شتتتبسكتك‪ ،‬لسكتتتن هنالتتتك ختتتواديم أستتتماء عديتتتدة متتتتوفرة مجاصظنتتتا للعمتتتوم‪ ،‬كختتتواديم‬

‫‪ (Verizon) Level3‬بعناوين ‪ IP‬تتراوح بين ‪ 4.2.2.1‬إلى ‪.4.2.2.6‬‬

‫▲‬ ‫|‬ ‫‪77‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫تنبيه‪ :‬إن عنوان ‪ ،IP‬وقناع الشبسكة‪ ،‬وعنوان الشبسكة‪ ،‬وعنوان البث‪ ،‬وعنوان البوابة نتحندد عتتادصة بالمسكتتان الملئمتتة‬
‫لهتتا فتتي ملتتف ‪ ،/etc/network/interfaces‬عنتتاوين ختتادوم الستتماء نتحتتندد عتتادة فتتي قستتم ‪ nameserver‬فتتي‬
‫ملتتف ‪ ،/etc/resolve.conf‬للمزيتتد متتن المعلومتتا ت‪ ،‬راجتتع صتتفحة التتدليل لسكتتتل متتن ‪ interfaces‬و ‪resolv.conf‬‬
‫على التوالي وبالترتيب‪ ،‬وذلك بسكتابة الوامر التية في محث الطرفية‪:‬‬

‫للوصول إلى صفحة دليل ‪ ،interfaces‬اكتب المر التي‪:‬‬


‫‪man interfaces‬‬
‫وللوصول إلى صفحة دليل ‪:resolv.conf‬‬
‫‪man resolv.conf‬‬

‫ج‪ .‬توجيه ‪IP‬‬

‫يمدثتتل تتتوجيه ‪ (IP Routing) IP‬الوستتائل اللزمتتة لتحديتتد واكتشتتاف الطتترق فتتي شتتبسكا ت‬

‫‪ TCP/IP‬بالضافة إلى تحديد بياظنا ت الشبسكة التي سنترنسل‪ ،‬نيستتتخشدم التتتوجيه متتا يستتمى »جتتداول‬

‫التتتوجيه« )‪ (routing tables‬لدارة تمريتتر رزم بياظنتتا ت الشتتبسكة متتن مصتتدرها إلتتى وجهتهتتا؛ وذلتتك‬

‫عتتادة بواستتطة عقتتد شتتبسكدية وستتيطة تستتمى »موجهتتا ت« )‪(routers‬؛ وهنالتتك ظنوعتتان رئيستتيان متتن‬

‫توجيه ‪ :IP‬التوجيه الثابت ) ‪ ،(static routing‬والتوجيه الديناميسكي )‪.(dynamic routing‬‬

‫يشتمل التوجيه الثابت على إضافة توجيها ت ‪ IP‬يدوييا إلى جدول توجيها ت النظام‪ ،‬ويتم ذلتتك‬

‫عادصة بتعديل جدول التوجيها ت باستخدام المر ‪route‬؛ يتمتع التوجيه الثابت بعددة مزايا تميتتزه عتتن‬

‫التتتوجيه التتديناميسكي‪ ،‬كستتهولة استتتخدامه فتتي الشتتبسكا ت الصتتغيرة‪ ،‬وقابليتتة التوقتتع )نيحنستتب جتتدول‬

‫التوجيها ت مستب صقا دائصمتا‪ ،‬وهتتذا متتا يتؤدي إلتتى استتتخدام ظنفتتس المستار فتي كتتل متترة(‪ ،‬ويتؤدي إلتى ش‬
‫حمتتتل‬

‫قليتتتتل علتتتتى الموجهتتتتا ت الختتتترى ووصتتتتل ت الشتتتتبسكة ظنتيجتتتتصة لعتتتتدم استتتتتخدام بروتوكتتتتول ت التتتتتوجيه‬

‫الديناميسكي؛ لسكن يواجه التوجيه الثتتابت بعتتض الصتتعوبا ت أي ص‬


‫ضتا؛ فعلتتى ستتبيل المثتال‪ ،‬التتتوجينه الثتاب ن‬
‫ت‬

‫محتتتدوةد للشتتتبسكا ت الصتتتغيرة‪ ،‬ول يمسكتتتن أن يتونستتتع توستتتصعا ستتتهصل‪ ،‬ويصتتتعب عليتتته التتتتأقلم متتتع ظنقصتتتان‬

‫أو فشل معدا ت الشبسكة في الطريق المسلوك ظنتيجصة للطبيعة الثابتة لذاك الطريق‪.‬‬

‫▲‬ ‫|‬ ‫‪78‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

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

‫المسلوكة من المصتتدر إلتتى الوجهتتة‪ ،‬ونتستتتخ ندم بروتوكتتول ت تتوجيه خاصتتة‪ ،‬كتتبروتوكول معلومتتا ت‬

‫الموجه )]‪ ،(Router Information Protocol [RIP‬الذي يتتونلى أمتتر التعتتديل ت التلقائيتتة فتتي‬

‫جداول التوجيه‪ ،‬مما يجعل من التوجيه الديناميسكي أمصرا ممسكصنتتا؛ وللتتوجيه التتديناميسكي مزايتتا عتتددة‬

‫عن التوجيه الثابت‪ ،‬كإمسكاظنية التوسع بستتهولة‪ ،‬والتتتأقلم متتع ظنقصتتان أو فشتتل معتتدا ت الشتتبسكة خلل‬

‫ ت قليلتتتة ظنستتبصيا لجتتداول التتتوجيه‪ ،‬لن‬


‫الطريق المسلوك فتتي الشتتبسكة‪ ،‬بالضتتافة إلتتى الحاجتتة لعتتدادا ت‬

‫الموجها ت تعلم عن وجتود وتتوفر بعضتها بع ص‬


‫ضتا؛ وهتذه الطريقتة تمنتع حتدوث مشتتاكل فتي التتوجيه‬

‫ظنتيج صة لخطأ بشري في جداول الت وجيه‪ .‬لسكتن التتوجيه التديناميسكي ليتس كتامصل‪ ،‬ويتأتي متع عيتوب‪،‬‬

‫كالتعقيد‪ ،‬وال ش‬
‫حمل الزائتد علتى الشتبسكة بستبب التواصتل بيتن الموجهتا ت‪ ،‬التتي ل تفيتد المستتخدمين‬

‫المباشرين فورصيا‪ ،‬وتستهلك التراسل الشبسكي‪.‬‬

‫د‪ .‬بروتوكوللي ‪ TCP‬و ‪UDP‬‬

‫إن بروتوكول ‪ TCP‬هو بروتوكول مبني علتتى التصتتال ) ‪ ،(connection-based‬ويتتوفر آليتتصة‬

‫لتصتتحيح الخطتتاء‪ ،‬وضتتماظنصة لتستتليم البياظنتتا ت عتتبر متتا نيعتتنرف بالمصتتطلح »التحسكتتم فتتي الجريتتان«‬

‫)‪ ،(flow control‬نيح ددد التحسكم في الجريان متى يجب إيقاف ظنقل البياظنا ت‪ ،‬وإعادة إرسال الرزم‬

‫ن‬
‫التي أرشسنلت ساب صقا والتتي واجهتتة مشتتاكل كالتصتادما ت )‪(collisions‬؛ إذ أنن التأكيتتد علتتى الوصتول‬

‫التدقيق والسكامتتل للبياظنتتا ت عتبر بروتوكتول ‪ TCP‬هتو أمتر جتوهري فتي عمليتتة تبتتادل البياظنتتا ت المهمتة‬

‫كالتحويل ت في قواعد البياظنا ت‪.‬‬

‫▲‬ ‫|‬ ‫‪79‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫أمتتا بروتوكتتول ‪ (User Datagram Protocol ) UDP‬علتتى الجهتتة الختترى‪ ،‬هتتو بروتوكتتول‬

‫عديم التصتتال )‪ ،(connectionless‬التذي ظنتتادصرا متتا يتعامتتل متع عمليتتا ت ظنقتل البياظنتتا ت المهمتتة لظنته‬

‫يفتقر إلى التحسكم في جريان البياظنا ت أو أ دية طريقة أخرى للتأكد متتن توصتتيل البياظنتتا ت عملصيتتا؛ لسكتتن‬

‫بروتوكتتتتول ‪ UDP‬نيستتتتتخندم استتتتتخداصما شتتتتائصعا فتتتتي التطبيقتتتتا ت كتتتتتدفق ) ‪ (streaming‬الصتتتتو ت‬

‫والصورة‪ ،‬حيث أظنه أسرع بسكثير من ‪ TCP‬لظنه ل يحتوي على آليتة لتصحيح الخطاء والتحسكم في‬

‫الجريان‪ ،‬وفي الماكن التي ل يهم فيها فقدان بعض الرزم الشبسكية كثيصرا‪.‬‬

‫ه‪ .‬بروتوكول ‪ICMP‬‬

‫إن بروتوكتتتول ‪ (Internet Control Messaging Protocol) ICMP‬هتتتو إضتتتافة إلتتتى‬

‫بروتوكول الظنترظنت )‪ (IP‬الذي نيعتتنرف فتتي ‪ (Request For Comments) RFC‬ذي الرقتتم ‪#792‬‬

‫ويتتدعم التحسكتتم فتتي احتتتواء التترزم الشتتبسكية والخطتتاء ورستتائل المعلومتتا ت‪ ،‬نيستتتخندم بروتوكتتول‬

‫‪ ICMP‬بتطبيقتتتا ت شتتبسكدية كتتأداة ‪ ،ping‬التتتتي تستتتتطيع تحديتتتد إذا متتتا كتتتان جهتتتاةز متتتا متاصحتتتا علتتى‬

‫الشبسكة‪ ،‬أمثلة عن رسالة الخطأ النمعاندة من ‪- ICMP‬التتتي تسكتتون مفيتتدصة لمضتتيفي الشتتبسكة وللجهتتزة‬

‫كالموجها ت‪ -‬تتضمن رسالنتي »‪ «Destination Unreachable‬و »‪.«Time Exceeded‬‬

‫و‪ .‬العفاريت‬

‫العفتتاريت )‪ (Daemons‬هتتتي تطبيقتتتا ت ظنظتتتام خاصتتة التتتتي تعمتتل عتتادصة عمصل دائصمتتا فتتي الخلفيتتة‪،‬‬

‫ ت للوظائف التي توفرها من التطبيقا ت الخرى‪ ،‬يتمحور عمتل العديتد متن العفتاريت حتول‬
‫وتنتظر طلبيا ت‬

‫الشبسكة‪ ،‬وبالتالي فإن عتد صدا كتبيصرا متن العفتاريت ال تي تعمتل فتي الخلفيتة فتي ظنظتام أوبنتتو نت ودفر وظتائف‬

‫تتعلتتق بالشتتبسكة؛ بعتتض المثلتتة عتتن عفتتاريت الشتتبسكة تتضتتمن »عفريتتت بروتوكتتول ظنقتتتل النتتص الفتتائق«‬

‫▲‬ ‫|‬ ‫‪80‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫) ‪ ،([httpd] HyperText Transport Protocol Daemon‬التتتذي يتتتوفر وظيفتتتة ختتتادوم التتتويب؛‬

‫و »عفريتتت الصتتدفة المنتتة« ) ‪ ،([sshd] Secure SHell Daemon‬التتذي يتتوفر طريقتصة للتتدخول المتتن‬

‫عتتن نبعتتد وإمسكاظنيتتا ت ظنقتتل الملفتتا ت؛ و »عفريتتت بروتوكتتول الوصتتول إلتتى رستتائل الظنتتترظنت« ) ‪Internet‬‬

‫‪ ([imapd] Message Access Protocol Daemon‬الذي يوفر خدما ت البريد اللسكتروظني‪.‬‬

‫ز‪ .‬مصادر‬

‫تتوفر صفحا ت دليتل لبروتوكولي ‪ TCP‬و ‪ IP‬التي تحتوي على معلوما ت قيدمة‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا المصدر التي من ‪.«TCP/IP Tutorial and Technical Overview » :IBM‬‬ ‫•‬

‫مصدةر أخرى هو كتاب »‪ «TCP/IP Network Administration‬من ‪.O'Reilly‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪81‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫‪ .3‬بروتوكول ضبط المضيف ديناميكييا ‪DHCP‬‬


‫إن بروتوكول ضبط المضتيف ديناميسكييتتا ) ‪(Dynamic Host Configuration Protocol‬‬

‫هو خدمة شبسكة نتف دعل إسناد إعدادا ت الشبسكة إلى الحواستتيب المضتيفة متن ختتادوم بتدصل متتن إعتتداد‬

‫كتتل مضتتيف شتتبسكي يتتدوصيا؛ حيتتث ل تملتتك الحواستتيب النمعتتندة كعملتء لخدمتتة ‪ DHCP‬أديتتة تحسكتتم‬

‫بالعدادا ت التي تحصل عليها من خادوم ‪.DHCP‬‬

‫إن أشهر العدادا ت المونفرة من خادوم ‪ DHCP‬إلى عملء ‪ DHCP‬تتضمن‪:‬‬

‫عنوان ‪ IP‬وقناع الشبسكة‪.‬‬ ‫•‬

‫عنوان ‪ IP‬للبوابة الفتراضية التي يجب استخدامها‪.‬‬ ‫•‬

‫عناوين ‪ IP‬لخواديم ‪ DNS‬التي يجب استعمالها‪.‬‬ ‫•‬

‫ضا أن يودفر خادوم ‪ DHCP‬خاصيا ت الضبط التية‪:‬‬


‫لسكن يمسكن أي ص‬

‫اسم المضيف‪.‬‬ ‫•‬

‫اسم النطاق‪.‬‬ ‫•‬

‫خادوم الوقت‪.‬‬ ‫•‬

‫خادوم الطباعة‪.‬‬ ‫•‬

‫من مزايا استخدام ‪ DHCP‬هتو أن أي تغييت تر فتتي إعتتدادا ت الشتبسكة ‪-‬علتتى ستتبيل المثتال تغييتر‬

‫عنتوان ختتادوم ‪ -DNS‬ستيتم فتتي ختتادوم ‪ DHCP‬فقتط‪ ،‬وست نيعاد ضتبط جميتتع مضتتيفي الشتبسكة فتتي‬

‫المرة القادمة التي س نيطنل ن‬


‫ب فيهتا عملء ‪ DHCP‬معلومتا ت العتدادا ت متن ختادوم ‪DHCP‬؛ ونيستدهل‬

‫استعمال خادوم ‪ DHCP‬إضافة حواسيب جديدة إلى الشبسكة‪ ،‬فل حاجة للتحقتق متن تتوفر عنتوان‬

‫‪IP‬؛ وسيقل أي ص‬
‫ضا التضارب في حجز عناوين ‪.IP‬‬

‫▲‬ ‫|‬ ‫‪82‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫يمسكن أن نيودفر خادوم ‪ DHCP‬إعدادا ت الضبط باستخدام الطرق التية‪:‬‬

‫التوزيع اليدوي ) ‪ (Manual allocation‬عبر عنوان ‪MAC‬‬

‫تتضتتمن هتتذه الطريقتتة استتتخدام ‪ DHCP‬للتعتترف علتتى عنتتوان مميتتز لعتتتاد كتتل كتتر ت شتتبسكة‬

‫متصل إلتى الشتبسكة‪ ،‬ثتم س يودفر إعتدادا ت ضتب ت‬


‫ط ثابتتصة فتي كتل مترة يتصتل فيهتتا عميتل ‪ DHCP‬إلتى‬

‫خادوم ‪ DHCP‬باستخدام بطاقتة الشتتبسكة المعدينتتة مستبصقا؛ وهتتذا يضتتمن أن نيستتنند عنتوان معديتن إلتى‬

‫بطاقتة شبسكديتة معدينة وذلك وفصقا لعنوان ‪.MAC‬‬

‫التوزيع الديناميكي )‪(Dynamic allocation‬‬

‫سنيستتشند ختتادوم ‪- DHCP‬فتتي هتتذه الطريقتتة‪ -‬عنتتوان ‪ IP‬متتن مجموعتتة متتن العنتتاوين )تستتمى‬

‫‪ ،pool‬أو فتتي بعتتض الحيتتان ‪ range‬أو ‪ (scope‬لمتتدة متتن الزمتتن )يستتمى ذلتتك بالمصتتطلح ‪(lease‬‬

‫التتتي نتضتت نبط فتتي الختتادوم‪ ،‬أو حتتتى يختتبر العميتتل الختتادوم أظنتته لتتم يعتتد بحاجتتتة للعنتتوان بعتتد الن؛‬

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

‫نيخندم أوصل«؛ وعندما ل يسكون عميتتل ‪ DHCP‬متواجت صدا علتتى الشتتبسكة لفتتترة محتددة‪ ،‬فستتينتهي وقتت‬

‫الضبط المخصص له‪ ،‬وسيعود العنتوان المستند إليته إلتى مجموعتة العنتاوين لستتخدامه متن عملء‬

‫‪ DHCP‬الخرين؛ أي أ نظنته فتتي هتتذه الطريقتتة‪ ،‬يمسكتتن » تتأجير« أو استتتخدام العنتوان لفتترة متن الزمتن؛‬

‫وبعد هذه المدة‪ ،‬يجب أن يطلب العميل من الخادوم أن يعيد تأجيره إياه‪.‬‬

‫▲‬ ‫|‬ ‫‪83‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫التوزيع التلقائي )‪(Automatic allocation‬‬

‫سنيستتشند ختتادوم ‪- DHCP‬فتتي هتتذه الطريقتتة‪ -‬عنتتوان ‪ IP‬إستتنا صدا دائصمتتا إلتتى جهتتاز معيتتن‪ ،‬ويتتتم‬

‫اختيار هذه العنوان من مجموعة العناوين المتوفرة؛ نيضنبط عادصة ‪ DHCP‬لسكي نيستتشند عنواصظنتتا مؤقصتتتا‬

‫إلى الخادوم‪ ،‬لسكن يمسكن أن يسمح خادوم ‪ DHCP‬بزمن تأجير »ل ظنهائي«‪.‬‬

‫يمسكن اعتبار آخر طريقتين »تلقائينتين«‪ ،‬لظنه في كل حالة نيسشند ختتادوم ‪ DHCP‬العنتتوان دون‬

‫ ت أختترى‪ ،‬هتتل ستتتنتهي‬


‫تدخل إضافي مباشر‪ ،‬الفرق الوحيد بينهما هو متتدة تتتأجير عنتتوان ‪IP‬؛ بسكلمتتا ت‬

‫صلحية عنوان العميل بعد فترة من الزمن أم ل‪.‬‬

‫يتتتتتأتي أوبنتتتتتتو متتتتتع ختتتتتادوم وعميتتتتتل ‪ ،DHCP‬الختتتتتادوم هتتتتتو ‪dynamic host) dhcpd‬‬

‫‪ ،(configuration protocol daemon‬والعميل الذي يأتي م ع أوبنتتو ه و ‪ ،dhclient‬ويجتب‬

‫أن يث نبتتتت علتتتى جميتتتع الحواستتتيب التتتتي تريتتتدها أن نتنعتتتدد تلقائصيتتتا‪ ،‬كل البرظنتتتامجين ستتته ن‬
‫ل التثتتتبيت‪،‬‬

‫وسيبدآن تلقائصيا عند إقلع النظام‪.‬‬

‫ا‪ .‬التثبيت‬

‫اكتب المر التي في شمنحث الطرفية لتثبيت ‪:dhcpd‬‬

‫‪sudo apt-get install isc-dhcp-server‬‬

‫ربمتتا تحتتتاج إلتتى تغييتتر الضتتبط الفتراضتتي بتعتتديل ملتتف ‪ /etc/dhcp/dhcpd.conf‬ليلئتتم‬

‫احتياجاتك والضبط الخاص الذي تريده‪.‬‬

‫▲‬ ‫|‬ ‫‪84‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫ربما تحتاج أي ص‬
‫ضا إلى تعديل ‪ /etc/default/isc-dhcp-server‬لتحديد البطاقتتا ت الشتتبسكية‬

‫التي يجب أن »يستمع« )‪ (listen‬إليها عفريت ‪.dhcpd‬‬

‫ملحظة‪ :‬رسالة عفريت ‪ dhcpd‬نترنسل إلى ‪ ،syslog‬اظنظر هناك لرسائل التشخيص‪.‬‬

‫ب‪ .‬الضبط‬

‫ربمتتا ستتيربسكك ظهتتور رستتالة خطتتأ عنتتد اظنتهتتاء التثتتبيت‪ ،‬لسكتتن الخطتتوا ت التيتتة ستستتاعدك فتي‬

‫ضبط الخدمة‪:‬‬

‫في الحال ت الكثر شيوصعا‪ ،‬كل ما تريد أن تفعله هو إسناد عناوين ‪ IP‬إستتناصدا عشتتوائصيا‪ ،‬يمسكتتن‬

‫أن نيفنعل ذلك بالعدادا ت التية‪:‬‬

‫‪# minimal sample /etc/dhcp/dhcpd.conf‬‬


‫;‪default-lease-time 600‬‬
‫;‪max-lease-time 7200‬‬

‫{ ‪subnet 192.168.1.0 netmask 255.255.255.0‬‬


‫;‪range 192.168.1.150 192.168.1.200‬‬
‫;‪option routers 192.168.1.254‬‬
‫;‪option domain-name-servers 192.168.1.1, 192.168.1.2‬‬
‫;"‪option domain-name "mydomain.example‬‬
‫}‬

‫ظنتيجة العدادا ت السابقة هي ضبط خادوم ‪ DHCP‬لعطتتاء العملء عنتاوين ‪ IP‬تتتتراوح متتن‬

‫‪ 192.168.1.150‬إلى ‪ ،192.168.1.200‬وسنيأنجر عنتتوان ‪ IP‬لمتتدة ‪ 600‬ثاظنيتتة إذا لتتم يطلتتب العميتتل‬

‫وقصتتتتا محتتتد صدا؛ عتتتدا ذلتتتك‪ ،‬فستتتيسكون وقتتتت اليجتتتار القصتتتى للعنتتتوان هتتتو ‪ 7200‬ثاظنيتتتة؛ و»سينصتتتح«‬

‫الخادونم العميتت ن‬
‫ل أن يستتتخدم ‪ 192.168.1.254‬كبوابتتة افتراضتتية‪ ،‬و ‪ 192.168.1.1‬و ‪192.168.‬‬

‫▲‬ ‫|‬ ‫‪85‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫ي ‪.DNS‬‬
‫‪ 1.2‬كخادونم د‬

‫عليك إعادة تشغيل خدمة ‪ dhcpd‬بعد تعديل ملف الضبط‪:‬‬

‫‪sudo service isc-dhcp-server restart‬‬

‫ج‪ .‬مصادر‬

‫توجد بعض المعلوما ت المفيدة في صفحة ويسكي أوبنتو »‪.«dhcp3-server‬‬ ‫•‬

‫للمزيتتتتتد متتتتتن خيتتتتتارا ت ملتتتتتف ‪ ،/etc/dhcp/dhcpd.conf‬راجتتتتتع صتتتتتفحة التتتتتدليل ‪man‬‬ ‫•‬

‫‪.dhcpd.conf‬‬

‫مقالة في ‪.«dhcp-server» :ISC‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪86‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫‪ .4‬مزامنة الوقت باتستخدام بروتوكول ‪NTP‬‬


‫إن بروتوكتتول ‪ NTP‬هتتو بروتوكتتول ‪ ،TCP/IP‬نيستتتخندم لمزامنتتة التتوقت عتتبر الشتتبسكة؛ بسكلمتتا ت‬
‫ ت‬

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

‫هنالك السكثير من التعقيدا ت خلتتف هتتذا التفستتير البستتيط‪ ،‬فهنالتتك درجتتا ت متتن ختواديم ‪NTP‬؛‬

‫فالدرجتتتة الولتتتى متتتن ختتتواديم ‪ NTP‬تتصتتتل بستتتاعا ت ذرديتتتة )‪ ،(atomic clock‬والدرجتتتة الثاظنيتتتة‬

‫والثالثة من الخواديم نتودزع ال ش‬


‫حمل عبر الظنترظنت؛ وحتى برمجية العميتتل هتتي برمجيتتة معقتتدة أكتتثر‬

‫بسكتتثير ممتتا تظتتن‪ ،‬فهنالتتك عامتتل لختتذ التتتأخير فتتي التصتتال ت بعيتتن العتبتتار‪ ،‬وتعتتديل التتوقت فتتي‬

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

‫ي عنك! تستخدم أوبنتو ‪ ،ntpdate‬و ‪.ntpd‬‬


‫مخف ة‬

‫ا‪ .‬الداة ‪ntpdate‬‬

‫يأتي أوبنتو افتراضصيا مع الداة ‪ ،ntpdate‬وستعمل عند القلع لتضبط وقتك وفصقا لخادوم‬

‫‪ NTP‬الخاص بأوبنتو‪:‬‬

‫‪ntpdate -s ntp.ubuntu.com‬‬

‫ب‪ .‬عفريت ‪ntpd‬‬

‫يحستتب عفريتتت ‪ ntp‬الظنزيتتاح فتتي ستتاعة وقتتت النظتتام‪ ،‬ويعتتددلها باستتتمرار‪ ،‬لتتذلك لتتن يسكتتون‬

‫هنالك تصحيحا ت كبيرة ستؤدي إلى اختلل في السجل ت ) ‪ (logs‬على سبيل المثال‪ .‬لسكن سيسكون‬

‫ثمن ذلك هو القليل من طاقة المعالجة والذاكرة‪ ،‬ولسكن هذا ل نيذنكر بالنسبة إلى الخواديم الحديثة‪.‬‬

‫▲‬ ‫|‬ ‫‪87‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الشبسكا ت‬

‫ التثبيت‬.‫ج‬

:‫ أدخل المر التي إلى الطرفية‬،ntpd ‫لتثبيت‬

sudo apt-get install ntp

‫ الضبط‬.‫د‬

،‫ لضتتافة أو إزالتتة الستتطر التتتي تحتتوي علتتى عنتتاوين الختواديم‬/etc/ntp.conf ‫عددل الملف‬

:‫نتضنبط هذه الخواديم افتراضصيا‬

# Use servers from the NTP Pool Project. Approved by Ubuntu


Technical Board
# on 2011-02-08 (LP: #104525). See
http://www.pool.ntp.org/join.html for
# more information.
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

:ntpd ‫ عليك إعادة تحميل‬،‫بعد تعديل ملف الضبط‬

sudo service ntp reload

▲ | 88
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت‬

‫ه‪ .‬مشاهدة الحالة‬

‫استخدم المر ‪ ntpq‬لرؤية المزيد من المعلوما ت‪:‬‬

‫‪sudo ntpq -p‬‬


‫‪remote‬‬ ‫‪refid‬‬ ‫‪st t when poll reach delay offset jitter‬‬
‫===========================================================================‬
‫‪+stratum2-2.NTP. 129.70.130.70 2 u 5‬‬ ‫‪64 377 68.461 -44.274 110.334‬‬
‫‪+ntp2.m-online.n 212.18.1.106‬‬ ‫‪2 u 5‬‬ ‫‪64 377 54.629 -27.318 78.882‬‬
‫‪*145.253.66.170 .DCFa.‬‬ ‫‪1 u 10 64 377 83.607 -30.159 68.343‬‬
‫‪+stratum2-3.NTP. 129.70.130.70 2 u 5‬‬ ‫‪64 357 68.795 -68.168 104.612‬‬
‫‪+europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792‬‬

‫و‪ .‬مصادر‬

‫راجع صفحة الويسكي »‪ «Ubuntu Time‬لمزيد من المعلوما ت‪.‬‬ ‫•‬

‫موقع ‪ :ntp.org‬الموقع الرسمي لمشروع بروتوكول وقت الشبسكة‪.‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪89‬‬


‫‪5‬‬
‫ربط الجهزة‬
‫متعدد الطرق‬

‫▲‬ ‫|‬ ‫‪90‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪ .1‬مقدمة عن ‪DM-Multipath‬‬
‫يستتمح لتتك »ربتتط الجهتتزة بطتترتق متعتتددة« ) ‪DM-] Device mapper multipathing‬‬

‫‪ ([Multipath‬بضبط طرق متعددة للدخل والخرج )‪ (I/O‬بين عقد الخادوم ومصفوفا ت التخزيتتن‬

‫في جهاز واحد‪ .‬طرق الدخل والخرج تلتك هتي اتصتال ت ‪ SAN‬فيزيائي ة التتي تتض من أكبتاصل منفصتلصة‬

‫ومبتتتدل ت )‪ (switches‬ومتحسكمتتتا ت )‪(controllers‬؛ نينجدمتتتع تعتتتدند الطتتترشق )‪ (multipathing‬طتتترنق‬

‫الدخل والخرج‪ ،‬ونينششئ جهاصزا جديصدا يحتوي على طرق مجنمعة؛ يودفر هذا الفصل ملخ ص‬
‫صا عن ميتتزا ت‬

‫‪ DM-Multipath‬الجديتتتدة لنستتتخة الختتتادوم ‪ 12.04‬متتتن أوبنتتتتو؛ وبعتتتد ذلتتتك ستتتيوفر الفصتتتل ظنظتتترة‬

‫»عالية المستوى« عن ‪ DM-Multipath‬ومسكوظناته‪ ،‬ولمحة عن إعداده‪.‬‬

‫الميزات الجديدة والمعدلة لنسخة تخادوم أوبنتو ‪12.04‬‬

‫الظنتقال من ‪ multipath-0.4.8‬إلى ‪.multipath-0.4.9‬‬

‫ا‪ .‬النتقال من ‪0.4.8‬‬

‫لم تعد تعمل المتحققا ت من الولوية كملفا ت ثنائية بحد ذاتها‪ ،‬بل كمسكتبا ت مشتتتركة؛ ونعتتددل‬

‫ضا اسم قيمة المفتاح ) ‪ (key‬لهذه الميزة تعديصل طفيصفا‪ ،‬اظنسخ الخاصية المسماة ‪prio_callout‬‬
‫أي ص‬

‫إلى ‪ ،prio‬وع ددل الوسيط الممرر إلى المتحقق من الولوية‪ ،‬حيث لم يعد يهم تمريتتر مستتار النظتتام؛‬

‫مثال عن التحويل‪:‬‬

‫{ ‪device‬‬
‫"‪vendor "NEC‬‬
‫"‪product "DISK ARRAY‬‬
‫‪prio_callout mpath_prio_alua /dev/%n‬‬
‫‪prio‬‬ ‫‪alua‬‬
‫}‬

‫▲‬ ‫|‬ ‫‪91‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫راجع الجدول التي )التحويل ت في متحقق الولوية( لتفاصيل كاملة‪:‬‬

‫الجدول ‪ :1-5‬التحويل ت في متحقق الولوية‬

‫الصدار ‪0.4.9‬‬ ‫الصدار ‪0.4.8‬‬

‫‪prio emc‬‬ ‫‪prio_callout mpath_prio_emc /dev/%n‬‬

‫‪prio alua‬‬ ‫‪prio_callout mpath_prio_alua /dev/%n‬‬

‫‪prio netapp‬‬ ‫‪prio_callout mpath_prio_netapp /dev/%n‬‬

‫‪prio rdac‬‬ ‫‪prio_callout mpath_prio_rdac /dev/%n‬‬

‫‪prio hp_sw‬‬ ‫‪prio_callout mpath_prio_hp_sw /dev/%n‬‬

‫‪prio hds‬‬ ‫‪prio_callout mpath_prio_hds_modular %b‬‬

‫ولما كان ملف الضبط الخاص بتعتتدد الطترق نيف دستر جميتع ثنائيتتا ت »المفتتاح‪/‬القيمتتة« ويتترى إن‬

‫كتتتتان يستتتتتطيع استتتتتخدامهم‪ ،‬فيمسكتتتتن أن يبقتتتتى كتتتت ة‬


‫ل متتتتن ‪ prio_callout‬و ‪ prio‬مصعتتتتا‪ ،‬لسكتتتتن متتتتن‬

‫المستحسن أن نتضاف الخاصتتية ‪ prio‬قبتل بدايتة عمليتة الظنتقتتال للصتدار الحتتدث‪ ،‬ثتتم يمسكنتك أن‬

‫تحذف الخاصية ‪ prio_callout‬القديمة بأمان‪ ،‬دون أن تسبب اظنقطاصعا في الخدمة‪.‬‬

‫يمكن أن ييستخلدم ‪ DM-Multipath‬لتوافير‪:‬‬

‫‪ :Redundancy‬يمسكتتن أن يستتتخدم ‪ DM-Multipath‬فتتي تجتتاوز فشتتل الجهتتزة فتتي حالتتة‬ ‫•‬

‫ضتتبط »فعتتال‪/‬غيتتر فعتتال« )‪(active/passive‬؛ فنيستتتخندم ‪-‬فتتي الضتتبط الستتابق‪ -‬ظنصتتف عتتدد‬

‫الطرق في آن واحتتد للتدخل أو الخترج‪ ،‬وإذا فشتل مسكتون متن مسكوظنتا ت طريتق التدخل أو الخترج‬

‫)السكبل‪ ،‬أو المبدل‪ ،‬أو المتحسكم(‪ ،‬فسيتحول ‪ DM-Multipath‬إلى طريق آخر بديل‪.‬‬

‫▲‬ ‫|‬ ‫‪92‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫تحستتتتتتين الداء‪ :‬يمسكتتتتتتن ضتتتتتتبط ‪ DM-Multipath‬للعمتتتتتتل فتتتتتتي ظنمتتتتتتط »فعتتتتتتال‪/‬فعتتتتتتال«‬ ‫•‬

‫)‪ ،(active/active‬حيتتث يتتوزع التتدخل أو الختترج بيتتن الطتترق عتتبر آليتتة ‪،round-robin‬‬

‫وفتتي بعتتض العتتدادا ت‪ ،‬يمسكتتن أن يستشتتعر ‪ DM-Multipath‬ال ش‬


‫حمتتل علتتى طتترق التتدخل‬

‫أو الخرج‪ ،‬ويعيد توازن الحمل ديناميسكييا‪.‬‬

‫ب‪ .‬لمحة عن مصفوافة التخزين‬

‫يتضتتمن ‪- DM-Multipath‬افتراضتتصيا‪ -‬دعصمتتا لكتتثر مصتتفوفا ت التخزيتتن شتتيوصعا التتتي تتتدعم‬

‫‪ ، DM-Multipath‬الجهتتتتتتزة المدعومتتتتتتة موجتتتتتتودة فتتتتتتي ملتتتتتتف ‪multipath.conf.defaults‬؛‬

‫إذا كاظنت مصفوفة التخزيتتن الخاصتتة بتتك تتتدعم ‪ ،DM-Multipath‬لسكنهتتا غيتتر مضتتبوطة افتراضتتصيا‬

‫في هذا الملتتف‪ ،‬فربمتتا تحتتتاج لضتتافتها إلتتى ملتتف ضتبط ‪،(multipath.conf) DM-Multipath‬‬

‫للمزيتتد متتن المعلومتتا ت‪ ،‬راجتتع القستتم »ملتتف ضتتبط ‪ .«DM-Multipath‬تتطلتتب بعتتض مصتتفوفا ت‬

‫ ت‬ ‫التخزيتتن تعتتام صل خا ص‬
‫صتتا متتع أخطتتاء التتدخل أو الختترج‪ ،‬وتبتتديل الطتترق؛ وهتتذا متتا يتطلتتب وحتتدا ت‬

‫منفصلصة للنواة لدعم المتحسكم العتادي‪.‬‬

‫▲‬ ‫|‬ ‫‪93‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ج‪ .‬مكونات ‪DM-Multipath‬‬

‫الجدول التي يشرح مسكوظنا ت حزمة ‪:DM-Multipath‬‬

‫الجدول ‪ :1-5‬مسكوظنا ت ‪DM-Multipath‬‬

‫الوصف‬ ‫المسكون‬

‫إعادة توجيه الدخل أو الخرج‪ ،‬ودعم تجاوز الفشل للطرق‪ ،‬ولمجموعا ت‬ ‫وحدة النواة‬
‫الطرق‪.‬‬ ‫‪dm_multipath‬‬

‫يعرض ويضبط أجهزة ‪ ،multipath‬ويبدأ عموصما مع ‪/etc/rc.sysini‬‬


‫‪ ،t‬ويمسكن أن يشنغل باستخدام برظنامج ‪ udev‬عندما يضاف جهاز كتلي )‬ ‫المر ‪multipath‬‬
‫‪ (block device‬أو يمسكن أن يشنغل بواسطة ‪.initramfs‬‬

‫يء‬ ‫ة‬
‫يراقب الطرق‪ ،‬وعندما يفشل طريق ما ثم يعود إلى العمل‪ ،‬فإظنه يه د‬
‫مبدل ت مجموعة الطريق؛ ويوفر تعديل ت تفاعلية لجهزة‬
‫عفريت ‪multipathd‬‬
‫‪multipath‬؛ ويجب إعادة تشغيل هذا العفريت عندما تحدث أدية‬

‫تعديل ت في ملف ‪ /etc/multipath.conf‬لسكي تأخذ مفعولها‪.‬‬

‫نينششئ أجهزة ربط الجهزة )‪ (device mapper devices‬للقسام في‬

‫الجهاز‪ .‬من الضروري استخدام هذا المر للقسام المبنية على ‪ DOS‬مع‬
‫المر ‪kpartx‬‬
‫‪ ،DM-Multipath‬نيونفر المر ‪ kpartx‬في حزمة خاصة به‪ ،‬لسكن‬

‫الحزمة ‪ multipath-tools‬تعتمد عليه‪.‬‬

‫▲‬ ‫|‬ ‫‪94‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫د‪ .‬لمحة عن ضبط ‪DM-Multipath‬‬

‫يحتتتتتوي ‪ DM-Multipath‬علتتتتى خيتتتتارا ت افتراضتتتتية مضتتتتنمنة بتتتته تلئتتتتم أغلبيتتتتة إعتتتتدادا ت‬

‫‪multipath‬؛ وتسكتتون عتتادصة عمليتتة إعتتداد ‪ DM-Multipath‬عمليتتصة بستتيطصة‪ ،‬فالعمليتتة الساستتية‬

‫لضبط ظنظامك مع ‪ DM-Multipath‬هي كالتي‪:‬‬

‫تثبيت حزمنتي ‪ ،multipath-tools‬و ‪.multipath-tools-boot‬‬ ‫‪.1‬‬

‫إظنشاء ملف ضبط فارغ ‪ ،/etc/multipath.conf‬الذي سيعيد تعريف ما سيلي ذكره لحصقا‪.‬‬ ‫‪.2‬‬

‫‪ .3‬إذا كان ذلك ضرورصيا‪ ،‬حدرر ملف ضبط ‪ multipath.conf‬لتعتتديل القيتتم الفتراضتتية‪ ،‬ثتتم‬

‫احفظ الملف المعندل‪.‬‬

‫ابدأ عفريت ‪.multipath‬‬ ‫‪.4‬‬

‫حددث »‪.«initial-ramdisk‬‬ ‫‪.5‬‬

‫لخطوا ت إعداد مفصلة لضبط ‪ ،multipath‬راجع القسم »إعداد ‪.«DM-Multipath‬‬

‫▲‬ ‫|‬ ‫‪95‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪ .2‬أجهزة ‪Multipath‬‬
‫سيعامل كل طريتتق متن عقتتدة الختادوم إلتى متحسكتتم التخزيتن كجهتتاز منفصتتل إذا لتم تستتتعمل‬

‫‪ ، DM-Multipath‬حتى لو كان طريق الدخل أو الخرج يصل ظنفس عقدة الختتادوم بنفتتس متحسكتتم‬

‫التخزيتتن‪ ،‬حيتتث يتتوفر ‪ DM-Multipath‬طريقتتصة لتنظيتتم طتترق التتدخل أو الختترج منطقصيتتا‪ ،‬وذلتتك‬

‫بإظنشاء جهاز ‪ multipath‬وحيد فوق عدة أجهزة تمثل طبقصة تحتيصة‪.‬‬

‫ا‪ .‬معرافات الجهاز متعدد الطرق‬

‫لسكتتل جهتتاز متعتتدد الطتترق )‪ (multipath device‬معتترف عتتالمي )‪ ،(WWID‬التتذي يضتتمن أن‬

‫يسكتتون فريتتصدا عالمصيتتا‪ ،‬ول يمسكتتن تعتتديله؛ نيضتتنبط استتم جهتتاز ‪ multipath‬افتراضتتصيا إلتتى ‪WWID‬‬

‫الخاص بتته؛ لسكتتن يمسكنتتك ضتبط خيتتار ‪ user_friendly_names‬فتي ملتتف إعتتدادا ت ‪multipath‬‬

‫الذي يجعل ‪ DM-Multipath‬يستخدم أسماصء بديلة فريدة لسكل عقدة من الشسكل ‪.mpathn‬‬

‫علتتتى ستتتبيل المثتتتال‪ ،‬إذا كتتتاظنت عقتتتدةة متتتا ذا ت جهتتتانزي ‪ HBA‬موصتتتولصة إلتتتى متحسكتتتم تخزيتتتن‬

‫بمنفتتذين عتتبر مبتتدل ‪ FC‬غيتتر نمقنستتتم لمنتتاطق‪ ،‬فتتإظنه يتترى أربعتتة أجهتتزة‪ ،/dev/sda :‬و ‪،/dev/dsb‬‬

‫شتتئ ‪ DM-Multipath‬جهتتاصزا وحيتتصدا بعنتتوان ‪ WWID‬فريتتد التتذي‬


‫و ‪ ،/dev/sdb‬و ‪ ./dev/sdd‬نين ش‬

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

‫الضتتتتبط ‪ ،user_friendly_names‬فسنيضتتتتنبط استتتتم الجهتتتتاز إلتتتتى ‪ ،mapthn‬حيتتتتث سنتشتتتتانهد‬

‫الجهتتزة الجديتتدة التتتي توضتتع تحتتت ستتيطرة ‪ DM-Multipath‬فتتي مسكتتاظنين مختلنفيتتن فتتي مجلتتد‬

‫‪ /dev‬هما‪ ،/dev/mapper/mpathn :‬و ‪./dev/dm-n‬‬

‫▲‬ ‫|‬ ‫‪96‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫نتننشتتتأ الجهتتتزة فتتتي‪ /dev/mapper‬فتتتي مرحلتتتة مبسكتتترة متتتن عمليتتتة القلع‪ ،‬استتتتخدم هتتتذه‬

‫الجهزة للوص ول إلتى الجهتتزة المتعتددة الطترق‪ ،‬عل ى ستبيل المثتال عنتد إظنشتاء الحجتوم المنطقيتة‬

‫) ‪ .(logical volumes‬أديتتة أجهتتزة متتن النمتتط ‪ /dev/dm-n‬نتستتتخندم داخلصيتتا فقتتط‪ ،‬ول يجتتب أن‬

‫نتستعنمل من مدير النظام أبصدا‪.‬‬

‫للمزيتتتد متتتن المعلومتتتا ت حتتتول ضتتتبط ‪ multipath‬الفتراضتتتي‪ ،‬بمتتتا فتتتي ذلتتتك خيتتتار الضتتتبط‬

‫‪ ،user_friendly_names‬راجتتع القستتم »العتتدادا ت الفتراضتتية لملتتف الضتتبط«؛ يمسكنتتك ضتتبط‬

‫استم جهتتاز ‪ multipath‬إلتى استتم متن اختيتتارك باستتتخدام الخيتار ‪ alias‬فتي قستتم ‪multipaths‬‬

‫فتتي ملتتف ضتتبط ‪multipath‬؛ للمزيتتد متتن المعلومتتا ت حتتول قستتم ‪ multipaths‬فتتي ملتتف ضتتبط‬

‫‪ ،multipath‬راجع القسم »خاصيا ت ملف ضبط ‪.«Multipath‬‬

‫ب‪ .‬اتساق أسماء أجهزة ‪ Multipath‬افي شبكة عنقوديية‬

‫عندما يسكون خيتتار الضتتبط ‪ user_friendly_names‬مضتتبوصطا إلتتى »‪ ،«yes‬فتتإن استتم جهتتاز‬

‫‪ multipath‬هو فريد بالنسبة للعقدة‪ ،‬لسكن ليس مضموصظنا أن يسكون هو ظنفسه فتتي جميتتع العقتتد التتتي‬

‫تستتتتخدم جهتتتاز ‪ .multipath‬وبشتتتسكل مشتتتابه‪ ،‬إذا استتتتخدمت الخيتتتار ‪ alias‬للجهتتتاز فتتتي قستتتم‬

‫‪ multipaths‬في ملف الضبط ‪ ،multipath.conf‬فإن السم لن يسكون ذاته متناستتصقا تلقائصيتتا فتتي‬

‫جميتع العقتد فتي الشتبسكة العنقوديتة‪ .‬هتذا لتن يتؤدي إلتى حتدوث صتعوبا ت إذا كنتت تستتخدم ‪LVM‬‬

‫لظنشتتتاء أجهتتتزة منطقيتتتة متتتن جهتتتاز العقتتتدة‪ .‬لسكتتتن إن كنتتتت تتطلتتتب أن تسكتتتون أستتتماء جميتتتع أجهتتتزة‬

‫‪ multipath‬فتتتتتتتتتي كتتتتتتتتتتل عقتتتتتتتتتتدة متناغمتتتتتتتتتت صة‪ ،‬فتتتتتتتتتتإظنه متتتتتتتتتتن المستحستتتتتتتتتتن أن تتتتتتتتتتتترك الخيتتتتتتتتتتار‬

‫‪ user_friendly_names‬مضبوصطا إلى »‪ ،«no‬وأدل تضبط أسماصء بديلصة لجهزتك‪.‬‬

‫▲‬ ‫|‬ ‫‪97‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫وبشسكل مشابه‪ ،‬إذا أرد ت ضبط استتم بتتديل للجهتتاز‪ ،‬لسكنتتك تريتتده أن يسكتتون متناستتصقا فتتي جميتتع‬

‫العقد في الشبسكة العنقودية‪ ،‬فعليك أن تتأكد أن الملف ‪ /etc/multipath.conf‬هو ظنفستته فتتي كتتل‬

‫عقدة في الشبسكة العنقودية‪ ،‬باستخدام هذه الطريقة‪:‬‬

‫اضبط الستتماء البديلتتة لجهتتزة ‪ multipath‬فتي ملتف ‪ multipath.conf‬فتي حاستوب‬ ‫•‬

‫واحد‪.‬‬

‫عطل جميع أجهزة ‪ multipath‬في حواسيبك البقية بتطبيق الوامر التية‪:‬‬ ‫•‬

‫‪sudo service multipath-tools stop‬‬


‫‪sudo multipath -F‬‬

‫اظنستتخ ملتتف ‪ multipath.conf‬متتن الجهتتاز الول إلتتى جميتتع الجهتتزة البقيتتة فتتي الشتتبسكة‬ ‫•‬

‫العنقودية‪.‬‬

‫أعتتد تفعيتتل عفريتتت ‪ multipathd‬فتتي جميتتع الجهتتزة الختترى فتتي الشتتبسكة العنقوديتتة‬ ‫•‬

‫بتطبيق المر التي‪:‬‬

‫‪sudo service multipath-tools start‬‬

‫عليك إعادة تنفيذ هذه العملية عند كل إضافة لجهاز جديد‪.‬‬

‫▲‬ ‫|‬ ‫‪98‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ج‪ .‬تخواص جهاز ‪Multipath‬‬

‫ي ‪ user_friendly_names‬و ‪ ،alias‬لتتتدى جهتتتاز ‪ multipath‬خاصتتتيا ة‬


‫ ت‬ ‫بالضتتتافة لخيتتتانر د‬

‫عديدة؛ تستطيع تعتتديل هتتذه الخاصتتيا ت لجهتتاز ‪ multipath‬معيتتن بإظنشتتاء مدخلتتة )‪ (entry‬لتتذاك‬

‫الجهاز في قسم ‪ multipaths‬في ملف إعدادا ت ‪ .multipath‬لمزيتتد متتن المعلومتتا ت حتتول قستتم‬

‫‪ multipaths‬في ملف إعدادا ت ‪ ،multipath‬راجع القسم »خاصيا ت ملف ضبط ‪.«Multipath‬‬

‫د‪ .‬أجهزة ‪ multipath‬افي الحجوم المنطقية‬

‫بعتتد إظنشتتاء أجهتتزة ‪ ،multipath‬يمسكنتتك استتتخدام أستتماء أجهتتزة ‪ multipath‬كمتتا لتتو كنتتت‬

‫تستخدم اسم جهاز فيزيتتائي عنتتدما نتن ش‬


‫شتتئ حجصمتتا فيزيائصيتتا فتتي ‪LVM‬؛ علتتى ستتبيل المثتتال‪ ،‬إذا كتتان‬

‫‪ /dev/mapper/mpatha‬هو اسم جهاز ‪ ،multipath‬فإن المر التتتي ستنينعدلم ‪/dev/mapper‬‬

‫‪ /mpatha‬كحجم فيزيائي‪:‬‬

‫‪sudo pvcreate /dev/mapper/mpatha‬‬

‫يمسكنتتك استتتخدام جهتتاز ‪ LVM‬الفيزيتتائي الناتتتج لظنشتتاء مجموعتتة حجتوم ‪ LVM‬كمتتا لتو كنتت‬

‫تستخدم أي جهاز ‪ LVM‬فيزيائي آخر‪.‬‬

‫ملحظة‪ :‬لو كنت تحتاول إظنشتتاء حجتتم ‪ LVM‬فيزيتتائي علتى كامتتل الجهتتاز التتذي ضتتبطت عليته أقستاصما‪ ،‬فسيفشتتل‬
‫تنفيذ المر ‪.pvcreate‬‬

‫▲‬ ‫|‬ ‫‪99‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫عندما نتنششئ حجم ‪ LVM‬منطقي‪ ،‬الذي يستخدم مصفوفا ت ‪» multipath‬فعال‪/‬غير فعال«‬

‫كبنيتتتة تحتيتتتة للجهتتتزة الفيزيائيتتتة؛ فعليتتتك تضتتتمين مرشتتتحا ت ) ‪ (filters‬فتتتي ملتتتف ‪lvm.conf‬‬

‫لستتتتثناء هتتتذه القتتتراص التتتتي تسكتتت دون البنيتتتة التحتيتتتة لجهتتتزة ‪multipath‬؛ وهتتتذا لظنتتته لتتو كتتتاظنت‬

‫المصتتفوفة تغيتتر تلقائ صيتتا الطريتتق الفعتتال إلتتى طريتتق غيتتر فعتتال عنتتدما تتلقتتى دخصل أو خرصجتتا‪ ،‬فتتإن‬

‫‪ multipath‬س يتجاوز الفشتل‪ ،‬لسكنته »سيفشتل« عنتدما يتفحتص ‪ LVM‬الطريتق غيتر الفعتال إذا لتم‬

‫نترنشح تلك الجهزة‪ ،‬سيعرض ‪ LVM‬رستتالة تحتذير عنتدما يحتتدث ذلتتك فتتي مصتتفوفا ت »فعتتال‪/‬غيتر‬

‫فعال« )التي تتطلب أمصرا لجعتتل الطريتتق غيتتر الفعتتال فعتتاصل(‪ .‬لترشتتيح جميتتع أجهتتزة ‪ SCSI‬فتتي ملتتف‬

‫ضبط ‪ ،(lvm.conf) LVM‬فضع المرشح التي في قسم الجهزة في الملف‪:‬‬

‫] "‪filter = [ "r/block/", "r/disk/", "r/sd.*/", "a/.*/‬‬

‫متتتن الضتتتروري بعتتتد تحتتتديث ملتتتف ‪ /etc/lvm.conf‬أن نيحتتتندث ‪ initrd‬لتتتذلك سنيننستتتخ هتتتذا‬

‫الملف هناك‪ ،‬حيث يهم المرشح كثيصرا أثناء القلع؛ ظنفذ المر‪:‬‬

‫‪update-initramfs -u -k all‬‬

‫ملحظة‪ :‬في كل مرة نيحندث فيها ملف ‪ /etc/lvm.conf‬أو ‪ ،/etc/multipath.conf‬فيجب إعادة بنتتاء ‪initrd‬‬
‫ب عندما تسكون القوائم السوداء والمرشتحا ت ضتروريصة للحفتتاظ علتتى ضتب ت‬
‫ط‬ ‫لتطبيق هذه التغيرا ت‪ ،‬هذا المر واج ة‬
‫للتخزين ذي بنيتة صلبتة‪.‬‬

‫▲‬ ‫|‬ ‫‪100‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪ .3‬لمحة عن ضبط ‪DM-Multipath‬‬


‫يوفر هذا القسم مثاصل لخطوا ت ضبط ‪ ،DM-Multipath‬حيث يتضمن الخطوا ت التية‪:‬‬

‫إعداد ‪ DM-Multipath‬أساسي‪.‬‬ ‫•‬

‫تجاهل القراص المحلية‪.‬‬ ‫•‬

‫إضافة المزيد من الجهزة إلى ملف العدادا ت‪.‬‬ ‫•‬

‫ا‪ .‬إعداد ‪DM-Multipath‬‬

‫قبتتتتل إعتتتتداد ‪ DM-Multipath‬علتتتى ظنظامتتتتك‪ ،‬تأكتتتد أن ظنظامتتتك محتتتندث ويتضتتتتمن الحزمتتتتة‬

‫‪multipath-tools‬؛ إذا كتتتان المطلتتتوب هتتتو القلع متتتن ‪ ،SAN‬فيجتتتب أي ص‬


‫ضتتتا أن تتتتتوفر الحزمتتتة‬

‫‪.multipath-tools-boot‬‬

‫ل نيشنترط أن يتوفر ملتتف ‪ ،/etc/multipath.conf‬فعنتتدما نيشتتنغل ‪ multipath‬دون وجتتود‬

‫ملتتتتف ‪ ، /etc/multipath.conf‬فتتتتإظنه يستتتتتخدم قاعتتتتدة بياظنتتتتا ت داخليتتتتة ليجتتتتاد ضتتتتبط ملئتتتتم‪،‬‬

‫ضا القائمة السوداء الداخلية‪ ،‬وإذا لم نتسكنتشف أدية طرق بعتتد تشتتغيل ‪،multipath -ll‬‬
‫ويستعمل أي ص‬

‫فيجب توفير طريق لزيادة درجة السهاب لكتشاف لماذا لم نيننشأ ‪ .multipath‬خذ بعين العتبتتار‬

‫الرجوع إلى توثيق شركة ‪SAN‬؛ توجد أمثلة عن ملفا ت الضتبط فتي ‪/usr/share/doc/multipath‬‬

‫‪ ،-tools/examples‬وقاعدة بياظنا ت ‪ multipathd‬حية‪:‬‬

‫‪# echo 'show config' | multipathd -k > multipath.conf-live‬‬

‫▲‬ ‫|‬ ‫‪101‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ملحظة‪ :‬لتجاوز حالة خاصتتة فتي ‪ multipathd‬عنتتدما ل يتتتوفر ملتتف ‪ ،/etc/multipath.conf‬عندئتتتذ ل يعيتتد‬
‫المتتر الستتابق أديتتة مخرجتتا ت كنتيجتتتة لعمليتتة الدمتتج بيتتن ‪ /etc/multipath.conf‬وقاعتتدة البياظنتتا ت فتتي التتذاكرة؛‬
‫فلحل ذلك‪ ،‬إما أن تعدرف ملف ‪ /etc/multipath.conf‬فارغ باستخدام المر ‪touch‬؛ أو أن تعيتتد تعريتتف القيمتتة‬
‫الفتراضية كما يلي‪:‬‬
‫{ ‪defaults‬‬
‫‪user_friendly_names no‬‬
‫}‬
‫وأعد تشغيل ‪:multipathd‬‬
‫‪sudo service multipath-tools restart‬‬
‫سيعيد المر » ‪ «show config‬قاعدة البياظنا ت الحية‪.‬‬

‫التثبيت مع دعم ‪Multipath‬‬

‫لتفعيل دعم ‪ multipath‬أثناء التثبيت‪ ،‬استخدم‪:‬‬

‫‪install disk-detect/multipath/enable=true‬‬

‫في شمنحث المثبت؛ وستظهر أثناء التثبيت أجهزة ‪ multipath‬النمسكتنشفة في‪:‬‬

‫>‪/dev/mapper/mpath<X‬‬

‫ب‪ .‬تجاهل القراص المحلية أثناء توليد أجهزة ‪Multipath‬‬

‫لبعض الحواسيب بطاقتتا ت ‪ SCSI‬لقراصتتها المحليتة؛ وليتس متتن المستحستن استتخدام ‪DM-‬‬

‫‪ Multipath‬لهذه القراص‪ ،‬ستظهر العملية التية كيفية تعديل ملف ضبط ‪ multipath‬لتجاهل‬

‫القراص المحلية أثناء ضبط ‪.multipath‬‬

‫▲‬ ‫|‬ ‫‪102‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ربط الجهزة متعدد الطرق‬

‫ وع دلمهتتا كتلتتك الموجتتودة فتتي القائمتتة الستتوداء؛ إن‬،‫حتتدد أديتتة أقتتراص هتتي القتتراص الداخليتتة‬

‫ لحتتتظ أظنتتته مضتتتبوط أصتتتلصيا فتتتي ملتتتف ضتتتبط‬،‫ هتتتو قتتترص داخلتتتي‬-‫ فتتتي هتتتذا المثتتتال‬- /dev/sda

‫( فتتتتي‬/dev/sda) ‫ القتتتترص المحلتتتتي‬multipath -v2 ‫ ستتتتنيظشهر المتتتتر‬،‫ الفتراضتتتتي‬multipath

‫ راجتتع القستتم‬،multipath ‫؛ للمزيتتد متتن المعلومتتا ت حتتول ظناتتتج ختترج المتتر‬multipath ‫خريطتتة‬

.«multipath ‫»ظناتج المر‬

sudo multipath -v2


create: SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1 undef
WINSYS,SF2372
size=33 GB features="0" hwhandler="0" wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 0:0:0:0 sda 8:0 [---------

device-mapper ioctl cmd 9 failed: Invalid argument


device-mapper ioctl cmd 14 failed: No such device or address
create: 3600a0b80001327d80000006d43621677 undef
WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running

create: 3600a0b80001327510000009a436215ec undef


WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running

create: 3600a0b80001327d800000070436216b3 undef


WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running

▲ | 103
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪create: 3600a0b80001327510000009b4362163e undef‬‬


‫‪WINSYS,SF2372‬‬
‫‪size=12G features='0' hwhandler='0' wp=undef‬‬
‫‪`-+- policy='round-robin 0' prio=1 status=undef‬‬
‫‪|- 2:0:0:3 sdd 8:64 undef ready running‬‬
‫‪`- 3:0:0:3 sdg 8:128 undef ready running‬‬

‫لسكتتي نيمننتتع رابتتط الجهتتزة متتن ربتتط ‪ /dev/sda‬فتتي خرائتتط ‪ multipath‬الخاصتتة بتته‪ ،‬فعتتددل‬

‫قسم القائمتتة الستوداء )‪ (blacklist‬فتي ملتف ‪ /etc/multipath.conf‬لتضتمين هتذا الجهتاز‪ ،‬علتى‬

‫الرغتتم متتن أظنتتك تستتتطيع جعتتل الجهتتاز ‪ sda‬ضتتمن القائمتتة الستتوداء باستتتخدام النتتوع ‪،devnode‬‬

‫لسكنها لن تسكون طريقصة آمنصة لظننا ل يمسكتتن أن ظنضتتمن أن ‪ /dev/sda‬ستتيبقى بنفتتس الستتم عنتتد إعتتادة‬

‫التشغيل؛ لضتتافة أجهتتزة منفصتلة إلتى القائمتتة الستوداء‪ ،‬فيمسكنتتك استتخدام ‪ WWID‬لتذاك الجهتتاز‪،‬‬

‫لحظ أظنه قد ظهر في مخرجا ت المر ‪ multipath -v2‬نمعدرف ‪ WWID‬للجهتتاز ‪ /dev/sda‬وكتتان‬

‫‪SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1‬؛ أضتتتف متتتتا يلتتتتي فتتتي ملتتتتف‬

‫‪ /etc/multipath.conf‬لحجبه‪:‬‬

‫{ ‪blacklist‬‬
‫‪wwid SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1‬‬
‫}‬

‫بعد أن نتحددث ملف ‪ ،/etc/multipath.conf‬يجتتب أن تختتبر ‪ multipathd‬يتتدوصيا أن نيعيتتد‬

‫قراءة الملف‪ ،‬يعيد المر التي قراءة ملف ‪ /etc/multipath.conf‬النمعندل‪:‬‬

‫‪sudo service multipath-tools reload‬‬

‫▲‬ ‫|‬ ‫‪104‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ربط الجهزة متعدد الطرق‬

:multipath ‫ظنفذ المر التي لزالة جهاز‬

sudo multipath -f SIBM-ESXSST336732LC____F3ET0EP0Q000072428BX1

‫ لعتترض‬multipath -ll ‫ يمسكنتتك تنفيتتذ المتتر‬،‫للتحقتتق فيمتتا إذا ظنجحتتت عمليتتة إزالتتة الجهتتاز‬

«multipath ‫ باستتتخدام المتتر‬Multipath ‫ راجتتع القستتم »طلبيتتا ت‬،‫ الحتتالي‬multipath ‫ضتتبط‬

‫ للتأكتتد متتن أن الجهتتاز المضتتاف إلتتى القائمتتة‬.multipath -ll ‫للمزيتتد متتن المعلومتتا ت حتتول المتتر‬

‫ كمتتا فتتي المثتتال التتتي؛ حيتتث‬multipath ‫ فتستتتطيع تنفيتتذ المتتر‬،‫ضتتف متترصة ثاظنيتتصة‬
‫الستتوداء لتتم ني ن‬

‫ إذا‬v2 ‫( من الدرجة‬verbosity ) «‫ افتراضصيا بأن يجعل درجة »السهاب‬multipath ‫نيضنبط المر‬

:-v ‫لم نتحددد الخيار‬

sudo multipath

create: 3600a0b80001327d80000006d43621677 undef


WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running

create: 3600a0b80001327510000009a436215ec undef


WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running

create: 3600a0b80001327d800000070436216b3 undef


WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running

▲ | 105
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪create: 3600a0b80001327510000009b4362163e undef‬‬


‫‪WINSYS,SF2372‬‬
‫‪size=12G features='0' hwhandler='0' wp=undef‬‬
‫‪`-+- policy='round-robin 0' prio=1 status=undef‬‬
‫‪|- 2:0:0:3 sdd 8:64 undef ready‬‬ ‫‪running‬‬
‫‪`- 3:0:0:3 sdg 8:128 undef ready‬‬ ‫‪running‬‬

‫ج‪ .‬ضبط أجهزة التخزين‬

‫يتضتتمن ‪ DM-Multipath‬افتراضتت صيا دعصمتتا لغلبيتتة مصتتفوفا ت التخزيتتن التتتي تتتدعم ‪DM-‬‬

‫‪ ، Multipath‬قيتم العتتدادا ت الفتراضتية‪ ،‬بمتتا فيهتتا الجهتتزة المدعومتتة‪ ،‬يمسكتن أن توجتتد فتي ملتتف‬

‫‪.multipath.conf.defaults‬‬

‫إذا احتجت لضافة جهاز تخزين غير مدعوم افتراضتتصيا كجهتتاز ‪ multipath‬معتتروف‪ ،‬فعتتدل‬

‫ملف ‪ /etc/multipath.conf‬وأضف معلوما ت الجهاز الملئمة‪.‬‬

‫على سبيل المثال‪ ،‬لضافة معلوما ت حول سلسة ‪ ،HP Open-V‬فستتتبدو المدخلتتة كمتتا يلتتي‪،‬‬

‫حيث ‪ %n‬هو اسم الجهاز‪:‬‬

‫{ ‪devices‬‬
‫{ ‪device‬‬
‫"‪vendor "HP‬‬
‫"‪product "OPEN-V.‬‬
‫‪getuid_callout "/lib/udev/scsi_id --whitelisted‬‬
‫"‪--device=/dev/%n‬‬
‫}‬
‫}‬

‫للمزيد من المعلوما ت حول قسم الجهزة في ملف الضبط‪ ،‬اظنظر قسم »ملف ضبط الجهزة«‪.‬‬

‫▲‬ ‫|‬ ‫‪106‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪ .4‬ملف ضبط ‪DM-Multipath‬‬


‫تستطيع تجاوز قيم ضبط ‪ DM-Multipath‬الفتراضية بتعتتديل ملتتف الضتبط ‪/etc/multi‬‬

‫‪path.conf‬؛ ويمسكنك إضافة مصفوفا ت التخزين غير المدعومة افتراضصيا في ملتف العتتدادا ت إن‬

‫كتتتان ذلتتتك ضتتترورصيا؛ يتتتوفر هتتتذا الفصتتتل معلومتتتا ت‬


‫ ت عتتتن تفستتتير وتعتتتديل ملتتتف ‪،multipath.conf‬‬

‫ويحتوي أقساصما عن المواضيع التية‪:‬‬

‫لمحة عن ملف الضبط‪.‬‬ ‫•‬

‫ملف ضبط القائمة السوداء‪.‬‬ ‫•‬

‫ملف ضبط القيم الفتراضية‪.‬‬ ‫•‬

‫ملف ضبط خاصيا ت ‪.Multipath‬‬ ‫•‬

‫ملف ضبط الجهزة‪.‬‬ ‫•‬

‫ستتتحتاج ‪-‬فتتي ملتتف ضتتبط ‪ -multipath‬إلتتى تحديتتد القستتام التتتي تحتتتاج لهتتا للضتتبط التتذي‬

‫تريتتده‪ ،‬أو إذا أرد ت تغييتر القيتم الفتراضتتية المضتبوطة فتتي ملتف ‪multipath.conf.defaults‬؛‬

‫إذا كاظنت هنالك أقسام ليست متعلقة ببيئة عملك‪ ،‬أو التي ل تحتاج إلتتى تجتتاوز قيمهتتا الفتراضتتية‪،‬‬

‫فإظنك تستطيع أن تتركها وقبلها رمز التعليق‪ ،‬كما كاظنت في الملف البتدائي‪.‬‬

‫يسمح لك ملف الضبط باستخدام التعابير النمطية‪.‬‬

‫يمسكن العثور على ظنسختة مليئتة بالتعلقيا ت من مثاتل عن ملف العدادا ت في المسار‪:‬‬

‫‪/usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz‬‬

‫▲‬ ‫|‬ ‫‪107‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ا‪ .‬لمحة عن ملف الضبط‬

‫نيقنسم ملف ضبط ‪ multipath‬إلى القسام التية‪:‬‬

‫‪ :blacklist‬قائمة بالجهزة التي ل تدخل بعين العتبار عند استخدام ‪.multipath‬‬ ‫•‬

‫‪ :blacklist_exceptions‬قائمة بالجهزة المرشحة لتسكون جزصءا من ‪ multipath‬التتتي‬ ‫•‬

‫كان يجب أن تسكون في القائمة السوداء‪ ،‬وذلك وفصقا لضبط قسم القائمة السوداء‪.‬‬

‫‪ :defaults‬إعدادا ت ‪ DM-Multipath‬افتراضية عامة‪.‬‬ ‫•‬

‫‪ :multipath‬إعدادا ت لصفا ت أجهزة ‪ multipath‬الفردية‪ ،‬ستتجاوز هذه القيتتم متتا هتتو‬ ‫•‬

‫ي ‪ defaults‬و ‪ devices‬من ملف الضبط‪.‬‬


‫محدد في قسنم د‬

‫‪ :devices‬العتتدادا ت لسكتتل متحسكتتم متتن متحسكمتتا ت التخزيتتن‪ ،‬هتتذه القيتتم ستتتتجاوز تلتتك‬ ‫•‬

‫المحتتتددة فتتتي قستتتم ‪ defaults‬فتتتي ملتتتف الضتتتبط‪ ،‬إذا كنتتتت تستتتتخدم مصتتتفوفة تخزيتتتن‬

‫ليست مدعومة افتراضصيا‪ ،‬فربما تحتاج لظنشاء قسم فرعي من ‪ devices‬لمصفوفتك‪.‬‬

‫عنتتتتتدما نيحتتتتتددد النظتتتتتام خاصتتتتتيا ت جهتتتتتاز ‪ ،multipath‬فتتتتتإظنه يتحقتتتتتق أوصل متتتتتن إعتتتتتدادا ت‬

‫‪ ،multipath‬ثم إعدادا ت كل جهاز على حدة‪ ،‬ثم القيم الفتراضية لنظام ‪.multipath‬‬

‫ب‪ .‬ملف ضبط القائمة السوداء‬

‫قسم القائمة السوداء متتن ملتتف ضتتبط ‪ multipath‬يحتتدد الجهتتزة التتتي لتتن تستتتخدم عنتتدما‬

‫يضتتبط النظتتام أجهتتزة ‪ ، multipath‬الجهتتزة الموجتتودة فتتي القائمتتة الستتوداء لتتن تجنمتتع إلتتى جهتتاز‬

‫‪.multipath‬‬

‫▲‬ ‫|‬ ‫‪108‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫إذا أرد ت حجب الجهزة‪ ،‬فيمسكنك فعل ذلك عبر أحد الشروط التية‪:‬‬

‫بواسطة معرف ‪ ،WWID‬كما هو مشروةح في قسم »الحجب بواسطة ‪.«WWID‬‬ ‫•‬

‫بواسطة اسم الجهاز‪ ،‬كما هو مشروةح في قسم »الحجب بواسطة اسم الجهاز«‪.‬‬ ‫•‬

‫بواسطة ظنوع الجهاز‪ ،‬كما هو مشروةح في قسم »الحجب بواسطة ظنوع الجهاز«‪.‬‬ ‫•‬

‫ضافة إلى القائمة الستتوداء افتراضتتصيا حتتتى لتو عنطلتت ن‬


‫ت القستتم‬ ‫هنالك مختلف أظنواع الجهزة النم ن‬

‫ ت حتول ذلتتك‪ ،‬راجتع قستتم » الحجتتب بواستتطة‬


‫البتدائي للقائمتتة الستوداء فتي ملتف الضتتبط‪ ،‬لمعلومتا ت‬

‫اسم الجهاز«‪.‬‬

‫الحجب بواسطة ‪WWID‬‬

‫يمسكنك إضتافة أجهتزة معينتتة إلتتى القائمتتة الستوداء بواستطة معرفهتتا العتالمي باستتتخدام القيتد‬

‫‪ wwid‬في قسم ‪ blacklist‬في ملف الضبط‪.‬‬

‫نيظ شهتتتر المثتتتال التتتتي الستتتطر فتتتي ملتتتف الضتتتبط التتتتي ستتتتحجب جهتتتاصزا معدرفتتته العتتتالمي هتتتو‬

‫‪:26353900f02796769‬‬

‫{ ‪blacklist‬‬
‫‪wwid 26353900f02796769‬‬
‫}‬

‫الحجب بواسطة اسم الجهاز‬

‫تستتتتطيع حجتتتب أظنتتتواع الجهتتتزة عتتتبر استتتم الجهتتتاز‪ ،‬ممتتتا يتتتؤدي إلتتتى عتتتدم جمعهتتتا فتتتي جهتتتاز‬

‫‪ multipath‬بتحديد القيد ‪ devnode‬في قسم ‪ blacklist‬من ملف الضبط‪.‬‬

‫▲‬ ‫|‬ ‫‪109‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫يوضتتح المثتتال التتتي الستتطر فتتي ملتتف الضتتبط التتتي تستتتخدم لحجتتب جميتتع أجهتتزة ‪،SCSI‬‬

‫حيث أظنها تحجب كل أجهزة *‪:sd‬‬

‫{ ‪blacklist‬‬
‫"]‪devnode "^sd[a-z‬‬
‫}‬

‫تستطيع استخدام القيد ‪ devnode‬في قسم ‪ blacklist‬فتي ملتف الضتبط لتحديتد الجهتزة‬

‫كيل على حدة بدصل من تحديد جميع الجهزة من ظنتوع معديتن‪ ،‬لسكتن هتذا ليتس مستحستصنا‪ ،‬لظنهتا إن لتم‬

‫تسكن هذه الجهزة معنرفة ومربوطتة ربصطتا ثابصتتتا باستتخدام قواعتد ‪ ،udev‬فليتس هنالتك أديتة ضتماظنة‬

‫أن الجهاز المحدد سيسكون له ظنفتس الستم بعتد إعتادة القلع؛ فعلتى س بيل المثتال‪ ،‬ربمتا يتغيتر استم‬

‫الجهاز من ‪ /dev/sda‬إلى ‪ /dev/sdb‬عند إعادة القلع‪.‬‬

‫قيود ‪ devnode‬التية موجودة في القائمة الستوداء افتراضتتصيا؛ الجهتتزة التتتي تحجبهتتا هتتذه‬

‫القيتتود ل تتتدعم ‪ DM-Multipath‬عموصمتتا‪ ،‬ولتفعيتتل تعتتدد الطتترق فتتي أي جهتتاز متتن تلتتك الجهتتزة‪،‬‬

‫فعليتك تحديتده ف ي قستم ‪ blacklist_exceptions‬فتي ملتف الضتبط‪ ،‬كمتتا ه و موضتح ف ي قستم‬

‫»استثناءا ت الحجب«‪:‬‬

‫{ ‪blacklist‬‬
‫"*]‪devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9‬‬
‫"]‪devnode "^hd[a-z‬‬
‫}‬

‫▲‬ ‫|‬ ‫‪110‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫الحجب بواسطة نوع الجهاز‬

‫تستطيع تحديد أظنواع أجهتزة معينتة فتي قستم ‪ blacklist‬متن ملتف الضتبط باستتخدام قستتم‬

‫‪ ،device‬المثال التي يحجب كل أجهزة ‪ IBM DS4200‬وأجهزة ‪.HP‬‬

‫{ ‪blacklist‬‬
‫{ ‪device‬‬
‫‪vendor‬‬ ‫"‪"IBM‬‬
‫‪product‬‬ ‫"‪"3S42‬‬ ‫‪#DS4200 Product 10‬‬
‫}‬
‫{ ‪device‬‬
‫‪vendor‬‬ ‫"‪"HP‬‬
‫‪product‬‬ ‫"*"‬
‫}‬
‫}‬

‫استثناءات الحجب‬

‫تستطيع استخدام قسم ‪ blacklist_exceptions‬في ملف الضبط لتفعيل تعدد الطرق فتتي‬

‫الجهزة المحجوبة افتراضصيا‪.‬‬

‫على سبيل المثال‪ ،‬إذا كان لديك عدةد كبي ةر متن الجهتزة‪ ،‬وتريتد أن تستمح لجهتاز واحتد فقتط أن يتدخل‬

‫فتتتي ‪) multipath‬ويسكتتتون ‪ WWID‬الختتتاص بتتته هتتتو ‪،(3600d0230000000000e13955cc3757803‬‬

‫فبتتدصل متتن حجتتب كتتل الجهتتزة يتتدو صيا متتا عتتدا الجهتتاز التتذي تريتتد استتتخدامه‪ ،‬فيمسكنتتك حجتتب جميتتع الجهتتزة‪،‬‬

‫وتسمح لذاك الجهاز الوحيد أن يعمل بإضافة السطر التية إلى ملف ‪:/etc/multipath.conf‬‬

‫{ ‪blacklist‬‬
‫"*" ‪wwid‬‬
‫}‬

‫{ ‪blacklist_exceptions‬‬
‫"‪wwid "3600d0230000000000e13955cc3757803‬‬
‫}‬

‫▲‬ ‫|‬ ‫‪111‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫عنتتد تحديتتد الجهتتزة المستتمونح لهتتا فتتي قستتم ‪ blacklist_exceptions‬متتن ملتتف الضتتبط‪،‬‬

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

‫‪blacklist‬؛ فعلى سبيل المثال‪ ،‬ل يمسكن السماح لجهاز بوساطة معتترف ‪ WWID‬فتتي حتتال حجبتتت‬

‫الجهزة باستخدام قيد ‪ ،devnode‬حتى لو كان الجهاز المحجوب مرتبصطتتا بمعتترف ‪ WWID‬التتذي‬

‫حتتتد ندته أظنتتتت‪ .‬وبشتتتسكل مشتتتابه‪ ،‬الستتتتثناءا ت التتتتي تستتتتخدم ‪ devnode‬نتطنبتتتق فقتتتط علتتتى قيتتتود‬

‫‪ ،devnode‬وكذلك المر لستثناءا ت الجهزة‪.‬‬

‫ج‪ .‬العدادات الافتراضية لملف الضبط‬

‫يتضتتتتمن ملتتتتف الضتتتتبط ‪ /etc/multipath.conf‬قستتتتصما استتتتمه ‪ defaults‬يضتتتتبط خاصتتتتية‬

‫‪ user_friendly_names‬إلى القيمة ‪ ،yes‬كما يلي‪:‬‬

‫{ ‪defaults‬‬
‫‪user_friendly_names yes‬‬
‫}‬

‫وهذا يتجاوز القيمة الفتراضية لخاصية ‪.user_friendly_names‬‬

‫▲‬ ‫|‬ ‫‪112‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ويحتوي ملف الضبط قال صبا للعدادا ت الفتراضية للضبط‪ ،‬هذا القسم معطل بالتعليقا ت كما يلي‪:‬‬

‫{ ‪#defaults‬‬
‫‪#‬‬ ‫‪udev_dir‬‬ ‫‪/dev‬‬
‫‪#‬‬ ‫‪polling_interval‬‬ ‫‪5‬‬
‫‪#‬‬ ‫‪selector‬‬ ‫"‪"round-robin 0‬‬
‫‪#‬‬ ‫‪path_grouping_policy‬‬ ‫‪failover‬‬
‫‪#‬‬ ‫‪getuid_callout‬‬ ‫‪"/lib/dev/scsi_id --whitelisted‬‬
‫"‪--device=/dev/%n‬‬
‫‪# prio‬‬ ‫‪const‬‬
‫‪# path_checker‬‬ ‫‪directio‬‬
‫‪# rr_min_io‬‬ ‫‪1000‬‬
‫‪# rr_weight‬‬ ‫‪uniform‬‬
‫‪# failback‬‬ ‫‪manual‬‬
‫‪# no_path_retry‬‬ ‫‪fail‬‬
‫‪# user_friendly_names‬‬ ‫‪no‬‬
‫}‪#‬‬

‫لتجاوز قيمة افتراضية في أ دية خاصية من خاصيا ت الضبط‪ ،‬تستتتطيع ظنستتخ الستتطر الموافتتق‬

‫لها من القالب إلى قسم ‪ defaults‬وإزالة التعليق الذي قبلها؛ على ستتبيل المثتتال‪ ،‬لتجتتاوز الخاصتتية‬

‫‪ path_grouping_policy‬لتضتتتتنبط إلتتتتى القيمتتتتة ‪ multibus‬بتتتتدصل متتتتن ‪failover‬؛ فاظنستتتتخ ذاك‬

‫السطر من القالب إلى قسم ‪ defaults‬البتدائي من ملف الضبط‪ ،‬ثم أزل التعليق كما يلي‪:‬‬

‫{ ‪defaults‬‬
‫‪user_friendly_names‬‬ ‫‪yes‬‬
‫‪path_grouping_policy‬‬ ‫‪multibus‬‬
‫}‬

‫يشتتتترح الجتتتتدول التتتتتي الخاصتتتيا ت التتتتي يمسكنتتتتك ضتتتبطها فتتتي قستتتم ‪ defaults‬متتتتن ملتتتتف‬

‫‪ ،multipath.conf‬سنتستخندم هتذه القيتم متن ‪ DM-Multipath‬متا لتم يعتاد تعريفهتتا باستتخدام‬

‫ي ‪ devices‬و ‪ multipaths‬في ملف ‪.multipath.conf‬‬


‫الخصائص المحددة في قسنم د‬

‫▲‬ ‫‪| 113‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫الجدول ‪ :3-5‬القيم الفتراضية لملف ضبط ‪Multipath‬‬

‫الشرح‬ ‫الخاصية‬

‫تحديد الزمن الفاصل بين التحققين من الطرق بالثواظني‪ ،‬سيزداد الزمن‬

‫الفاصل للتحقق من الطرق التي تعمل عمصل سليصما تدريجصيا إلى‬ ‫‪polling_interval‬‬
‫)‪ ،(polling_interval * 4‬القيمة الفتراضية هي ‪.5‬‬

‫المجلد الذي نتننشأ فيه عقد أجهزة ‪ ،udev‬القيمة الفتراضية هي ‪./dev‬‬ ‫‪udev_dir‬‬

‫المجلد الذي نتخنزن فيه السكائنا ت المشتركة الديناميسكية‪ ،‬القيمة الفتراضية‬


‫‪multipath_dir‬‬
‫متعلقةة بنظام التشغيل‪ ،‬وتسكون عادصة القيمة ‪./lib/multipath‬‬

‫قيمة » السهاب« الفتراضية‪ .‬تزيد القيم العليا من درجة السهاب‪ ،‬وتتراوح‬


‫‪verbosity‬‬
‫القيم الصالحة بين ‪ 0‬و ‪ ،6‬القيمة الفتراضية هي ‪.2‬‬

‫توصيف الخوارزمية الفتراضية لتحديد أي طريق سيستخدم في عملية‬

‫الدخل أو الخرج التية‪ ،‬القيم الممسكنة تتضمن‪:‬‬


‫‪ :round-robin 0‬المرور على كل طريق في مجموعة الطرق‪،‬‬ ‫•‬

‫وإرسال ظنفس كمية الدخل أو الخرج لسكتل منها‪.‬‬


‫‪ :queue-length 0‬إرسال رزمة الدخل أو الخرج التية في‬ ‫•‬

‫الطريق الذي يحتوي على أقل عدد من طلبيا ت الدخل أو الخرج‪.‬‬ ‫‪path_selector‬‬
‫‪ :service-time 0‬يرسل رزمة الدخل أو الخرج التية في الطريق‬ ‫•‬

‫الذي يسكون له وقت خدمة أقصر ما يمسكن‪ ،‬وهذا نيحندد بتقسيم حجم‬

‫رزم الدخل أو الخرج التي ما زالت في كل طريق على وقت مرورها‬

‫)النسبي(‪.‬‬
‫القيمة الفتراضية هي ‪.round-robin 0‬‬

‫▲‬ ‫|‬ ‫‪114‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫تحديد الطريق الفتراضي لسياسة تجميع الطرق لتطنبق على الطرق‬

‫المتعددة غير المحددة؛ القيم الممسكنة هي‪:‬‬


‫القيمة ‪ :failover‬طريق وحيةد لسكل مجموعة أولويا ت‪.‬‬ ‫•‬
‫القيمة ‪ :multibus‬جميع الطرق الصالحة في مجموعة أولويا ت‬ ‫•‬

‫واحدة‪.‬‬
‫القيمة ‪ :group_by_serial‬مجموعة أولويا ت وحيدة لسكل رقم‬ ‫•‬ ‫‪path_grouping‬‬
‫تسلسلي نك ش‬
‫شنف عنه‪.‬‬ ‫‪_policy‬‬
‫القيمة ‪ : group_by_prio‬مجموعة أولويا ت وحيدة لسكل طريق‬ ‫•‬

‫حسب قيمة أولويته‪.‬‬


‫القيمة ‪ : group_by_node_name‬مجموعة أولويا ت وحيدة‬ ‫•‬

‫لسكل اسم عقدة هدف‪.‬‬


‫القيمة الفتراضية هي ‪.failover‬‬

‫تحديد البرظنامج الفتراضي ووسائطه الممررة إليه الذي يجب استدعاؤه‬

‫للحصول على معدر ت‬


‫ف فريتد للطريق؛ يجب تحديد مسار مطلق له‪.‬‬
‫‪getuid_callout‬‬
‫القيمة الفتراضية هي‪:‬‬
‫‪/lib/udev/scsi_id --whitelisted --device=/dev/%n‬‬

‫▲‬ ‫|‬ ‫‪115‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫تحديد الدالة الفتراضية لستدعائها للحصول على قيمة أولوية الطريق‪،‬‬

‫على سبيل المثال‪ ،‬بتا ت ‪ ALUA‬في ‪ SPC-3‬توفر قيمة ‪ prio‬يمسكن‬

‫الستفادة منها‪ .‬القيم الممسكنة هي‪:‬‬


‫القيمة ‪ :const‬تحديد الولوية ‪ 1‬إلى جميع الطرق‪.‬‬ ‫•‬

‫القيمة ‪ :emc‬توليد أولوية الطريق لمصفوفا ت ‪.EMC‬‬ ‫•‬

‫القيمة ‪ :alua‬توليد أولوية الطريق بالعتماد على إعدادا ت ‪SCSI-3‬‬ ‫•‬

‫‪.ALUA‬‬
‫‪prio‬‬
‫القيمة ‪ :netapp‬توليد أولوية الطريق لمصفوفا ت ‪.NetApp‬‬ ‫•‬

‫القيمة ‪ :rdac‬توليد أولوية الطريق لمتحسكم ‪.LSI/Engenio RDAC‬‬ ‫•‬

‫القيمة ‪ :hp_sw‬توليد أولوية الطريق لمتحسكم ‪ Compaq/HP‬في‬ ‫•‬

‫ظنمط »فعال‪/‬في وضع الستعداد«‪.‬‬

‫القيمة ‪ :hds‬توليد أولوية الطريق لمصفوفا ت تخزين ‪Hitachi‬‬ ‫•‬

‫‪.HDS‬‬
‫القيمة الفتراضية هي ‪.const‬‬

‫السلسلة النصية للوسائط الممررة إلى دالة ‪prio‬؛ ل تحتاج أغلبية دوال‬

‫‪ prio‬إلى وسائط‪ ،‬لسكن دالة » ‪ «datacore prioritizer‬تحتاج واحصدا‪ ،‬على‬


‫‪prio_args‬‬
‫سبيل المثال‪«timeout=1000 preferredsds=foo » :‬؛ القيمة‬

‫الفتراضية هي ل شيء )""(‪.‬‬

‫الخاصيا ت الضافية لجهزة ‪ ،multipath‬الخاصية الوحيدة الموجودة هي‬

‫‪ ،queue_if_no_path‬التي هي ظنفس الضبط ‪ no_path_retry‬إلى‬


‫‪features‬‬
‫‪ ،queue‬للمزيد من المعلوما ت حول المشاكل التي ستحصل عند استخدام‬

‫هذه الخاصية‪ ،‬راجع القسم »المشاكل مع ‪.«queue_if_no_path‬‬

‫▲‬ ‫|‬ ‫‪116‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫توصيف الطريقة الفتراضية المستخدمة لتحديد حالة الطرق‪ ،‬القيم الممسكنة‬

‫تتضمن‪:‬‬
‫القيمة ‪ :readsector0‬قراءة القطاع الول من الجهاز‪.‬‬
‫القيمة ‪ :tur‬تنفيذ »‪ «TEST UNIT READY‬على الجهاز‪.‬‬
‫القيمة ‪ :emc_clariion‬طلب صفحة ‪) EVPD‬التي هي ‪ (0xC0‬من ‪EMC‬‬
‫‪ Clariion‬لتحديد الطريق‪.‬‬
‫القيمة ‪ :hp_sw‬التحقق من حالة الطريق لمصفوفا ت ‪ HP‬للتخزين التي‬
‫‪path_checker‬‬

‫تعمل بنمط »فعال‪/‬في وضع الستعداد«‪.‬‬

‫القيمة ‪ :rdac‬التحقق من حالة الطريق لمتحسكم التخزين ‪LSI/Engenio‬‬

‫‪.RDAC‬‬
‫القيمة ‪ :directio‬قراءة أول قطاع باستخدام الدخل أو الخرج المباشر‪.‬‬
‫القيمة الفتراضية هي ‪.directio‬‬

‫تدير آلية تجاوز الفشل في مجموعة الطرق‪.‬‬


‫القيمة ‪ immediate‬تؤدي إلى تجاوز الفشل مباشرصة إلى مجموعة الطرق‬

‫ذا ت أعلى أولوية وتحتوي على طرق فعالة‪.‬‬


‫القيمة ‪ manual‬تشير إلى أظنه ل يجب أن تسكون هنالك آلية لتجاوز الفشل‬
‫‪failback‬‬
‫مباشرصة‪ ،‬ويتم ذلك بتدخل مسؤول النظام‪.‬‬
‫قيمة رقمية أكبر من الصفر تحدد زمن التأجيل لتجاوز الفشل نمعنبصرا عنه‬

‫بالثواظني‪.‬‬
‫القيمة الفتراضية هي ‪.manual‬‬

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

‫الطريق التي في مجموعة الطرق الحالية‪.‬‬ ‫‪rr_min_io‬‬


‫القيمة الفتراضية هي ‪.1000‬‬

‫▲‬ ‫|‬ ‫‪117‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫إذا نضشبنطت إلى ‪ priorities‬فعندئتذ بدصل من إرسال طلبيا ت ‪rr_min_io‬‬


‫إلى طريتق ما قبل استدعاء ‪ path_selector‬لتحديد الطريق التي‪ ،‬فإظنه‬

‫نيحندد رقم الطلبيا ت التي سنترنسل بواسطة جداء ‪ rr_min_io‬بأولوية‬


‫‪rr_weight‬‬
‫الطريق‪ ،‬كما هو محدد بواسطة دالة ‪ .prio‬وإذا ضبطت الخاصية إلى‬

‫‪ ،uniform‬فإن »ثقل« كل الطرق سيسكون متساوصيا‪.‬‬


‫القيمة الفتراضية هي ‪.uniform‬‬

‫نتحددد القيمة العددية لهذه الخاصية عدد المرا ت التي سيحاول فيها النظام‬

‫استخدام الطريق التي تعرض للفشل قبل إيقاف الطلبيا ت‪ .‬إذا كاظنت القيمة‬

‫»‪ «fail‬فهذا يعني أن الفشل سيسكون فورصيا دون أدية طلبيا ت؛ وإذا كاظنت‬
‫‪no_path_retry‬‬
‫القيمة ‪ ،queue‬فهذا يعني أظنه ل يجب أن تتوقف الطلبيا ت حتى يصنلح ذاك‬

‫الطريق‪.‬‬
‫القيمة الفتراضية هي "صفر"‪.‬‬

‫إذا ضبطت إلى ‪ ،yes‬فإظنها تحدد أن على النظام استخدام الملف‬

‫‪ /etc/multipath/bindings‬لتعيين اسم بديل فريد للطريق‪ ،‬على شسكل‬

‫‪mpathn‬؛ وإذا ضبطت إلى ‪ ،no‬فإن على النظام استخدام ‪ WWID‬كاسم‬ ‫_‪user_friendly‬‬
‫بديل للطريق؛ وفي كل الحالتين‪ ،‬ما سنيحندد هنا سيتم تجاوزه من أدية أسماء‬ ‫‪names‬‬

‫بديلة خاصة بالجهزة محددة في قسم ‪ multipaths‬من ملف الضبط‪.‬‬


‫القيمة الفتراضية هي ‪no‬‬

‫إذا ضبطت إلى ‪ ،no‬فسنيعدطل عفريت ‪ multipathd‬جميع الطلبيا ت لجميع‬


‫‪queue_without‬‬
‫الجهزة عندما يسكون مغلصقا‪.‬‬
‫‪_daemon‬‬
‫القيمة الفتراضية هي ‪.no‬‬

‫▲‬ ‫|‬ ‫‪118‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫إذا ضبطت إلى ‪ ،yes‬فإن ‪ multipath‬سيعطل الطلبيا ت عندما يحذف آخر‬

‫طريق إلى جهاتز ما‪.‬‬ ‫‪flush_on_last_del‬‬

‫القيمة الفتراضية هي ‪.no‬‬

‫تضبط العدد القصى من مقابض الملفا ت المفتوحة )‪open file‬‬

‫‪ (descriptors‬التي يمسكن أن نتفنتح بواسطة ‪ multipath‬وعفريت‬

‫‪multipathd‬؛ وهذا مسكافئ للمر ‪ulimit -n‬؛ القيمة القصوى سنتحدد إلى‬

‫النظام من ملف ‪ ،/proc/sys/fs/nr_open‬إذا لم تضبط هذه الخاصية‪،‬‬ ‫‪max_fds‬‬

‫فإن الرقم القصى لمقابس الملفا ت المفتوحة سيأخذ من العملية النمستدشعنية؛‬

‫الذي يسكون عادة ‪ ،1024‬ولسكي تسكون آمصنا‪ ،‬يجب ضبط الخاصية إلى العدد‬

‫القصى من الطرق زائد ‪ 32‬إذا كان هذا الرقم أكبر من ‪.1024‬‬

‫المهلة الممنوحة لمتحققي الطرق لتنفيذ أوامر ‪ SCSI‬بالثواظني‪.‬‬


‫القيمة الفتراضية مأخوذة من ‪/sys/block/sdx/device/timeout‬‬ ‫‪checker_timer‬‬
‫التي هي ‪ 30‬ثاظنية في ظنسخة أوبنتو ‪.12.04‬‬

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

‫منفذ ‪ FC‬نبعيد قبل إعلن فشل الدخل أو الخرج إلى الجهزة في ذاك المنفذ‬

‫البعيد؛ يجب أن تسكون هذه القيمة أصغر من قيمة ‪ .dev_loss_tmo‬ضبط‬ ‫‪fast_io_fail_tmo‬‬

‫هذه القيمة إلى ‪ off‬سيعطل المهلة‪.‬‬


‫القيمة الفتراضية محددة من ظنظام التشغيل‪.‬‬

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

‫منفذ ‪ FC‬نبعيد قبل إزالته من النظام؛ ضبط هذه القيمة إلى ‪infinity‬‬
‫‪dev_loss_tmo‬‬
‫ستجعل قيمته ‪ 2147483647‬ثاظنية‪ ،‬أو ‪ 68‬سنة‪.‬‬
‫القيمة الفتراضية محددة من ظنظام التشغيل‪.‬‬

‫▲‬ ‫|‬ ‫‪119‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫د‪ .‬تخواص ملف ضبط ‪Multipath‬‬

‫جتتتتدول خاصتتتتيا ت ‪ Multipath‬التتتتتي يوضتتتتح الخاصتتتتيا ت التتتتتي يمسكتتتتن أن تضتتتتبط فتتتتي قستتتتم‬

‫‪ multipaths‬فتتي ملتتف ‪ multipath.conf‬لسكتتل جهتتاز ‪ multipath‬محتتدد؛ ستتتطبق هتتذه الخاصتتيا ت‬

‫على ‪ multipath‬وحيتد محتدد‪ ،‬سنتستتخندم هتذه القيتم الفتراضتية متن ‪ DM-Multipath‬وستتتجاوز‬

‫الخاصيا ت المضبوطة في قسمي ‪ defaults‬و ‪ devices‬في ملف ‪.multipath.conf‬‬

‫الجدول ‪ :4-5‬خاصيا ت ‪Multipath‬‬

‫الشرح‬ ‫الخاصية‬

‫تحديد ‪ WWID‬لجهاز ‪ multipath‬الذي سنتطنبق عليه خاصيا ت‬


‫‪wwid‬‬
‫ي لهذا القسم من ملف ‪.multipath.conf‬‬
‫‪ ،multipath‬هذا الوسيط إلزام ة‬

‫تحديد السم الرمزي لجهاز ‪ multipath‬الذي سنتطنبق خاصيا ت‬

‫‪ multipath‬عليه‪ ،‬إذا كنت تستخدم ‪ ،user_friendly_names‬فل‬


‫‪alias‬‬
‫تضبط هذه القيمة إلى ‪ ،mpathn‬هذا سيتداخل مع السم النمسنند تلقائصيا‬

‫وسيعطي أسماء عقد أجهزة غير صحيحة‪.‬‬

‫بالضافة إلى ذلك‪ ،‬يمسكن أن تتجاوز ضبط الخاصيا ت التية في قسم ‪:multipath‬‬

‫‪no_path_retry‬‬ ‫•‬ ‫‪path_grouping_policy‬‬ ‫•‬


‫‪rr_min_io‬‬ ‫•‬ ‫‪path_selector‬‬ ‫•‬
‫‪rr_weight‬‬ ‫•‬ ‫‪failback‬‬ ‫•‬
‫‪flush_on_last_del‬‬ ‫•‬ ‫‪prio‬‬ ‫•‬
‫‪prio_args‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪120‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫نيظشهتتتتر المثتتتتال التتتتتي خاصتتتتيا ت ‪ multipath‬المحتتتتددة فتتتتي ملتتتتف الضتتتتبط لجهتتتتازي ‪multipath‬‬

‫محتتتتدندين‪ ،‬تسكتتتتون قيمتتتتة ‪ WWID‬للجهتتتتاز الول هتتتتي ‪3600508b4000156d70001200000b0000‬‬

‫واسمه الرمزي هو »‪.«yellow‬‬

‫جهتتتاز ‪ multipath‬الثتتتاظني فتتتي المثتتتال لتتته ‪ WWID‬بقيمتتتة ‪1DEC_____321816758474‬‬

‫واسمه الرمزي هو »‪ ،«red‬وفي هذا المثال‪ ،‬ضبطت خاصية ‪ rr_weight‬إلى ‪.priorities‬‬

‫{ ‪multipaths‬‬
‫{ ‪multipath‬‬
‫‪wwid‬‬
‫‪3600508b4000156d70001200000b0000‬‬
‫‪alias‬‬ ‫‪yellow‬‬
‫‪path_grouping_policy‬‬ ‫‪multibus‬‬
‫‪path_selector‬‬ ‫"‪"round-robin 0‬‬
‫‪failback‬‬ ‫‪manual‬‬
‫‪rr_weight‬‬ ‫‪priorities‬‬
‫‪no_path_retry‬‬ ‫‪5‬‬
‫}‬
‫{ ‪multipath‬‬
‫‪wwid‬‬
‫‪1DEC_____321816758474‬‬
‫‪alias‬‬ ‫‪red‬‬
‫‪rr_weight‬‬ ‫‪priorities‬‬
‫}‬
‫}‬

‫ه‪ .‬ملف ضبط الجهزة‬

‫جتتدول » خاصتتيا ت الجهتتزة« التتتي يظهتتر الخاصتتيا ت التتتي يمسكنتتك ضتتبطها لسكتتل جهتتاز تخزيتتن‬

‫على حدة في قستم ‪ devices‬فتي ملتف ضتبط ‪ ،multipath.conf‬تستتخدم هتذه الخاصتيا ت متن‬

‫‪ DM-Multipath‬ما لتتم تعتتاد كتابتهتتا متتن الخاصتيا ت المحتتددة فتتي قستتم ‪ multipaths‬فتي ملتتف‬

‫‪ multipath.conf‬للطتتتترق التتتتتي تحتتتتتوي علتتتتى الجهتتتتاز؛ هتتتتذه الخاصتتتتيا ت تتجتتتتاوز الخاصتتتتيا ت‬

‫المضبوطة في قسم ‪ defaults‬في ملف ‪.multipath.conf‬‬

‫▲‬ ‫|‬ ‫‪121‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫العديد من الجهزة التي تدعم تعتتدد الطتترق مضتتنمنة افتراضتتصيا فتتي ملتتف ضتبط ‪multipath‬؛‬

‫القيم للجهزة المدعومة افتراضصيا موجودةة في ملف ‪.multipath.conf.defaults‬‬

‫ربما ل تحتاج إلى تعديل القيم لهذه الجهزة‪ ،‬لسكنك تستطيع تجتتاوز القيتتم الضتتافية بتضتتمين‬

‫قيد في ملف الضبط للجهاز‪ ،‬وإعادة كتابة هذه القيم‪ ،‬يمسكنك ظنسخ قيم الضبط الفتراضتتية للجهتتاز‬

‫من ‪ multipath.conf.annotated.gz‬أو إذا أرد ت الحصتول علتى ملتتف ضتبط مختصتتر‪ ،‬فراجتع‬

‫الملف ‪ multipath.conf.synthetic‬للجهاز وأعد كتابة القيم التي ترغب في تغييرها‪.‬‬

‫لضتتافة جهتتاز إلتتى هتتذا القستتم متتن ملتتف العتتدادا ت التذي لتتم نيضتتنبط افتراضتتصيا تلقائصيتتا‪ ،‬فعليتك‬

‫تحديتتتتد خاصتتتتينت د‬
‫ي ‪ vendor‬و ‪ product‬؛ تستتتتتطيع العثتتتتور علتتتتى هتتتتذه القيتتتتم بتتتتالنظر فتتتتي ملتتتتف‬

‫‪ /sys/block/device_name/device/vendor‬وفتتتي ‪/sys/block/device_name/model‬‬

‫حيث ‪ device_name‬هو اسم الجهاز الذي سيستخدم في ‪ ،multipath‬كما في المثال التي‪:‬‬

‫‪cat /sys/block/sda/device/vendor‬‬
‫‪WINSYS‬‬
‫‪cat /sys/block/sda/device/model‬‬
‫‪SF2372‬‬

‫الخاصيا ت الضافية التي عليك تحديدها تعتمد عل ى الجهتاز التذي تعتدده‪ ،‬إذا كتان الجهتاز متن‬

‫ظنمتتتتط »فعتتتتال‪/‬فعتتتتال«‪ ،‬فل تحتتتتتاج عتتتتادصة إلتتتتى أ ديتتتتة خاصتتتتيا ت إضتتتتافية؛ لسكتتتتن ربمتتتتا تريتتتتد ضتتتتبط‬

‫‪ path_grouping_policy‬إلتى القيمتتة ‪ ، multibus‬فتسكتون الخاصتتيا ت التتتي قتد تحتتاج لهتتا هتتي‬

‫‪ no_path_retry‬و ‪ ،rr_min_io‬كما نششرنحت في جدول »خاصيا ت ‪.«Multipath‬‬

‫▲‬ ‫‪| 122‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫أما إذا كان الجهاز من ظنمط »فعال‪ /‬غير فعال«‪ ،‬لسكنه نيبددل تلقائصيتا بيتن الطترق التتي فيهتا دختل‬

‫أو ختترج إلتتى طريتتق غيتتر فعتتال‪ ،‬فستتتحتاج إلتتى تعتتديل دالتتة التحقتتق إلتتى واحتتدة ل نترشستتل دختتل‬

‫أو خرج إلى الطرق لتختبر إذا كان يعمل ) عدا ذلك‪ ،‬فسيستمر جهازك بالفشل(‪ ،‬هذا يعني أظنه عليتتك‬

‫ضبط قيمة ‪ path_checker‬دائصما إلى القيمة ‪tur‬؛ وهتذا ستيجدي ظنفصعتتا لجميتع أجهتزة ‪ SCSI‬التتي‬

‫تدعم ‪) Test Unit Ready‬الذي تدعمه أغلبيتها(‪.‬‬

‫إذا احتتتتتاج الجهتتتتاز إلتتتتى أمتتتت تر ختتتتاص لتبتتتتديل الطتتتترق‪ ،‬فتتتتإن ضتتتتبط هتتتتذا الجهتتتتاز لستتتتتخدام‬

‫‪ multipath‬يتطلتب وحتدة ظنتواة لمتحسكتم العتتاد‪ ،‬متحسكتم العتتاد المتتوفر حالصيتا هتو ‪ ،emc‬وإذا لتم‬

‫يسكن هذا كافصيا لجهازك‪ ،‬فربما ل تستطيع ضبط هذا الجهاز لستخدام ‪.multipath‬‬

‫▲‬ ‫‪| 123‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫الجدول ‪ :5-5‬خاصيا ت الجهزة‬

‫الشرح‬ ‫الخاصية‬

‫تحديد اسم الشركة المصنعة لجهاز التخزين الذي تطبق عليه خاصيا ت‬
‫‪vendor‬‬
‫الجهاز؛ على سبيل المثال ‪.COMPAQ‬‬

‫تحديد اسم نمننتج جهاز التخزين الذي تطبق عليه خاصيا ت الجهاز؛‬
‫‪product‬‬
‫على سبيل المثال ‪.HSV110 (C)COMPAQ‬‬

‫تحديد معرف ‪ revision‬لجهاز التخزين‪.‬‬ ‫‪revision‬‬

‫تحديد التعبير النمطي المستخدم لحجب الجهزة وفصقا للنمنشتج‪.‬‬ ‫‪product_blacklist‬‬

‫تحديد الوحدة المستخدمة لتنفيذ أفعال خاصة بالعتاد عند تحويل‬

‫مجموعا ت الطرق أو التعامل مع أخطاء الدخل أو الخرج؛ القيم الممسكنة‬

‫تتضمن‪:‬‬
‫القيمة ‪ :1 emc‬المتحسكم العتادي الخاص بمصفوفا ت ‪.EMC‬‬ ‫•‬
‫القيمة ‪ :1 alua‬المتحسكم العتادي الخاص بمصفوفا ت ‪SCSI-3‬‬ ‫•‬
‫‪hardware_handler‬‬
‫‪.ALUA‬‬
‫القيمة ‪ :1 hp_sw‬المتحسكم العتادي الخاص بمتحسكما ت‬ ‫•‬

‫‪.Compaq/HP‬‬
‫القيمة ‪ :1 rdac‬المتحسكم العتادي الخاص بمتحسكما ت‬ ‫•‬

‫‪.LSI/Engenio RDAC‬‬

‫▲‬ ‫‪| 124‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ويمسكن إعادة كتابة الخاصيا ت التية في قسم ‪:device‬‬

‫‪path_grouping_policy‬‬
‫‪getuid_callout‬‬
‫‪path_selector‬‬
‫‪path_checker‬‬
‫‪features‬‬
‫‪failback‬‬
‫‪prio‬‬
‫‪prio_args‬‬
‫‪no_path_retry‬‬
‫‪rr_min_io‬‬
‫‪rr_weight‬‬
‫‪fast_io_fail_tmo‬‬
‫‪dev_loss_tmo‬‬
‫‪flush_on_last_del‬‬

‫ملحظظظظة‪ :‬عنتتتدما يحتتتدد ‪ ، hardware_handler‬فتتتإن متتتن مستتتؤوليتك التأكتتتد متتتن أن وحتتتدة النتتتواة الملئمتتتة‬
‫قتتتتتتتتتتتد نحدم نلتتتتتتتتتتتت لتتتتتتتتتتتدعم الواجهتتتتتتتتتتتة )‪ (interface‬المحتتتتتتتتتتتددة‪ ،‬هتتتتتتتتتتتذه الوحتتتتتتتتتتتدة يمسكتتتتتتتتتتتن أن توجتتتتتتتتتتتد فتتتتتتتتتتتي‬
‫‪ ،/lib/modules/`uname -r`/kernel/drivers/scsi/device_handler/‬يجب أن تدمج الوحدة المطلوبتتة‬
‫مع ‪ initd‬للتأكد من أن إمسكاظنية السكشف والقدرة على تجاوز المشاكل موجتتودة أثنتتاء وقتت التشتتغيل‪ ،‬علتتى ستتبيل‬
‫المثال‪:‬‬
‫‪echo scsi_dh_alua >> /etc/initramfs-tools/modules ## append module to file‬‬
‫‪update-initramfs -u -k all‬‬

‫المثال التي يظهر قيد جهاز في ملف ضبط ‪:multipath‬‬

‫{ ‪#devices‬‬
‫{ ‪# device‬‬
‫‪#‬‬ ‫‪vendor‬‬ ‫‪"COMPAQ‬‬ ‫"‬
‫‪#‬‬ ‫‪product‬‬ ‫‪"MSA1000‬‬ ‫"‬
‫‪#‬‬ ‫‪path_grouping_policy multibus‬‬
‫‪#‬‬ ‫‪path_checker tur‬‬
‫‪#‬‬ ‫‪rr_weight priorities‬‬
‫} ‪#‬‬
‫}‪#‬‬

‫▲‬ ‫‪| 125‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫الفراغا ت المتروكة فتتي حقتتول ‪ ،vendor‬و ‪ ،product‬و ‪ revision‬مهمتتة لن ‪multipath‬‬

‫يجري مطابقة مباشرة لهذه الخاصتتيا ت‪ ،‬التتتي يسكتتون تنستتيقها معرصفتتا متتن مواصتتفا ت ‪SCSI‬؛ وبشتتسكل‬

‫ختتتتاص المتتتتر » ‪ ،«Standard INQUIRY‬فعنتتتتدما تستتتتتخدم علمتتتتا ت القتبتتتتاس‪ ،‬فتتتتإن حقتتتتول‬

‫‪ ،vendor‬و ‪ ،product‬و ‪ revision‬ستفسر بدقة كما هتتو محتتدد فتتي المواصتتفا ت )‪(spec‬؛ يمسكتتن‬

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


‫ل متتا بتتدون الفراغتتا ت المطلوبتتة‪،‬‬

‫فسينسخ ‪ multipath‬السلسلة النصية إلى حافظة ذا ت سعة معينة وسيسكمل الحرف الباقية في‬

‫الحافظة بعدد مناسب من الفراغا ت؛ حيث تتوقع المواصفا ت أن يسكتتون الحقتتل كتتامصل مملتتوصءا بعتتدد‬

‫معين من المحارف أو الفراغا ت‪ ،‬كما في المثال السابق‪:‬‬

‫حقل ‪ 8 :vendor‬محارف‪.‬‬ ‫•‬

‫حقل ‪ 16 :product‬محرف‪.‬‬ ‫•‬

‫حقل ‪ 4 :revision‬محارف‪.‬‬ ‫•‬

‫لظنشاء ملف ضبط أكثر متاظنصة ومروظن صة‪ ،‬فيمسكن استخدام التعابير النمطيتتة؛ تتضتتمن المعتتامل ت‬

‫القابلة للستخدام‪:‬‬

‫»‪ ،«^$[].*?+‬تستطيع العثتور علتى أمثلتة عمليتة عتن التعتابير النمطيتتة بمعاينتتة قاعتدة بياظنتا ت‬

‫‪ multipath‬الحية‪ ،‬وملف ضبط ‪ ،multipath.conf‬ملفا ت المثلتتة موجتتودة فتتي ‪/usr/share/‬‬

‫‪:doc/multipath-tools/examples‬‬

‫‪# echo 'show config' | multipathd -k‬‬

‫▲‬ ‫‪| 126‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪ .5‬إدارة وإدصل ح أخطاء ‪DM-Multipath‬‬

‫ا‪ .‬إعادة تحجيم جهاز ‪ Multipath‬أثناء عمله‬

‫إذا احتجت لعادة تحجيم جهاز ‪ multipath‬أثناء عمله‪ ،‬فعليك اتباع الخطوا ت التية‪:‬‬

‫إعادة تحجيم الجهاز الفيزيائي‪ ،‬هذا المر متعلق بمنصة التخزين‪.‬‬

‫استخدام المر التي للعثور على طريق للوصول إلى ‪:LUN‬‬

‫‪sudo multipath -l‬‬

‫إعتادة تحجيتم الطتترق‪ .‬فتي أجهتتزة ‪ ،SCSI‬ت ؤدي كتابتة ‪ 1‬إلتى ملتف ‪ rescan‬إلتى جعتل الجهتاز‬

‫يطلب من محرك ‪ SCSI‬أن يعيد المسح‪ ،‬كما في المر التي‪:‬‬

‫‪# echo 1 > /sys/block/device_name/device/rescan‬‬

‫إعادة تحجيم جهاز ‪ multipath‬بتنفيذ أمر إعادة تحجيم ‪:multipathd‬‬

‫'‪sudo multipathd -k 'resize map mpatha‬‬

‫إعادة تحجم ظنظام الملفا ت )باعتبار أظننا ل ظنستخدم أدية أقسام ‪ LVM‬أو ‪:(DOS‬‬

‫‪sudo resize2fs /dev/mapper/mpatha‬‬

‫▲‬ ‫‪| 127‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ب‪ .‬نقل جذر نظام الملفات من جهاقز ذي طريقق واحقد إلى جهاقز ذي طرقق متعددة‬

‫يمسكتتن تبستتيط هتتذه المهمتتة تبستتيصطا شتتديصدا باستتتخدام ‪ UUID‬للتعتترف علتتى الجهتتزة؛ بسكتتل‬

‫بستتاطة‪ ،‬ثدبتتت ‪ multipath-tools-boot‬وأعتتد القلع؛ هتتذا ستيعيد بنتاء قترص التتذاكرة البتتتدائي‬

‫) ‪ ،(initial ramdisk‬ويمنتتح ‪ multipath‬الفرصتتة لبنتتتاء الطتتترق قبتتل أن يوصتتل ظنظتتتام الملفتتا ت‬

‫الجذر باستخدام ‪.UUID‬‬

‫ملحظظظظظة‪ :‬فتتتتي كتتتتل متتتترة يحتتتتدث فيهتتتتا ‪ multipath.conf‬يجتتتتب أن نيحتتتتددث ‪ initrd‬بتنفيتتتتذ المتتتتر ‪update-‬‬
‫‪initramfs -u -k all‬؛ الستتبب وراء ظنستتخ ‪ multipath.conf‬إلتى ‪ ramdisk‬هتو إتمتتام عمليتة تحديتتد الجهتزة‬
‫المتاحة للتجميع بواسطة القائمة السوداء وأقسام الجهزة‪.‬‬

‫ج‪ .‬نقل نظام ملفات ذاكرة التبديل من جهاز ذي طريقق واحقد إلى جهاقز ذي طرقق متعددة‬

‫العملية تماثل تماصما العملية المشروحة في القسم الستتابق »ظنقتتل جتتذر ظنظتتام الملفتتا ت متتن جهتتاتز‬

‫ذي طريتق واحتد إلى جهاتز ذي طرتق متعددة«‪.‬‬

‫د‪ .‬العفريت ‪Multipath‬‬

‫إذا وجتتتتتد ت مشتتتتتسكلة فتتتتتي تطتتتتتبيق ضتتتتتبط ‪ ،multipath‬فعليتتتتتك التأكتتتتتد متتتتتن أن عفريتتتتتت‬

‫‪ multipath‬يعمتتتل كمتتتا هتتتو مشتتتروح فتتتي »إعتتتداد ‪«DM-Multipath‬؛ يجتتتب أن يعمتتتل عفريتتتت‬

‫‪ multipathd‬لسكتتتي تستتتتطيع استتتتخدام أجهتتتزة ‪ .multipathd‬راجتتتع أي ص‬


‫ضتتتا القستتتم »استسكشتتتاف‬

‫الخطاء وإصلحها متتع واجهتتة ‪ multipathd‬التفاعليتتة« التتذي يشتترح التفاعتتل متتع ‪multipathd‬‬

‫للمساعدة في تنقيح الخطاء‪.‬‬

‫▲‬ ‫‪| 128‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ه‪ .‬المشاكل مع ‪queue_if_no_path‬‬

‫ضتتشبنط "‪ features "1 queue_if_no_path‬فتتي ملتتف‪ ،/etc/multipath.conf‬فتتإن‬


‫إذا ن‬

‫أي عملية تستخدم الدخل أو الخترج ستتتوقف آظنصيتا إلتى أن نيستترنجع طريتةق أو أكتثر؛ ولتجنتب هتذا‪،‬‬

‫اضبط الخاصية ‪ no_path_retry N‬في ملف ‪./etc/multipath.conf‬‬

‫عند ضبط الخاصية ‪ ،no_path_retry‬فاحذف الخيار "‪features "1 queue_if_no_path‬‬

‫متتتتتن ملتتتتتف ‪ /etc/multipath.conf‬أي ص‬


‫ضتتتتتا‪ ،‬لسكتتتتتن إن كنتتتتتت تستتتتتتخدم جهتتتتتاصزا متعتتتتتدد الطتتتتترق التتتتتذي‬

‫تسكتتون خاصتتية ‪ "features "1 queue_if_no_path‬متضتتمنة افتراضتتصيا فتتي الضتتبط )وهتتذا حتتال‬

‫السكتتتتثير متتتتتن أجهتتتتزة ‪ (SAN‬فعليتتتتتك إضتتتتافة "‪ features "0‬لتجتتتتتاوز هتتتتذه العتتتتتدادا ت الفتراضتتتتية‪،‬‬

‫تستتتتتتتتطيع فعتتتتتتتل ذلتتتتتتتك بنستتتتتتتخ قستتتتتتتم ‪ ) devices‬فقتتتتتتتط ذاك القستتتتتتتم‪ ،‬وليتتتتتتتس كتتتتتتتل الملتتتتتتتف( متتتتتتتن‬

‫‪ /usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz‬إلتتتتتتتتتتتتتتتتتتتى‬

‫‪ /etc/multipath.conf‬وتعديله حسب احتياجاتك‪.‬‬

‫إذا احتجتتت لستتتخدام الخيتتار "‪ features "1 queue_if_no_path‬ولسكنتتك عتتاظنيت متتن‬

‫المشسكلة المذكورة هنا‪ ،‬فاستخدم المر ‪ dmsetup‬لتعتديل ضتبط ‪ LUN‬معيتتن أثنتتاء التنفيتتذ؛ علتى‬

‫ستتتتتتبيل المثتتتتتتال‪ ،‬إذا أرد ت تغييتتتتتتر الضتتتتتتبط فتتتتتتي جهتتتتتتاز ‪ multipath‬المتتتتتتدعو ‪ mpathc‬متتتتتتن "‬

‫‪ "queue_if_no_path‬إلى "‪ ،"fail_if_no_path‬فنفذ المر التي‪:‬‬

‫"‪sudo dmsetup message mpathc 0 "fail_if_no_path‬‬

‫ملحظة‪ :‬عليك تحديد السم البديل ‪ mpathN‬بدصل من المسار‪.‬‬

‫▲‬ ‫‪| 129‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ربط الجهزة متعدد الطرق‬

Multipath ‫ ناتج المر‬.‫و‬

‫ فإظنتتك ستحصتتل علتتى مخرجتتا ت ضتتبط‬،multipath ‫إذا أظنشتتأ ت أو عتتدلت أو عرضتتت جهتتاز‬

:(multipath ‫الجهاز الحالي؛ الصيغة هي التية )لسكل جهاز‬

action_if_any: alias (wwid_if_different_from_alias)


↪ dm_device_name_if_known vendor,product
size=size features='features' hwhandler='hardware_handler'
↪ wp=write_permission_if_known

:‫ولسكل مجموعة طرق‬

-+- policy='scheduling_policy' prio=prio_if_known


status=path_group_status_if_known

:‫ولسكل طريق‬

`- host:channel:id:lun devnode major:minor


dm_status_if_known path_status
online_status

:‫ ستظهر كالتي‬multipath ‫ مخرجا ت المر‬،‫على سبيل المثال‬

3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372


size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running

▲ | 130
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫إذا كتتان الطريتتق نمنعتتيدا وجتتاه صزا للتتدخل أو الختترج‪ ،‬فتتإن حالتتة الطريتتق هتتي ‪ ready‬أو ‪،ghost‬‬

‫وإن لم يسكن يعمل الطريق‪ ،‬فإن الحالة هي ‪ faulty‬أو ‪shaky‬؛ نتحتتندث حالتتة الطريتتق فتتي كتتل فتتترة‬

‫متتتن الزمتتتن بواستتتطة عفريتتتت ‪ multipathd‬بالعتمتتتاد علتتتى قيمتتتة خاصتتتية ‪polling_interval‬‬

‫النمعنرفة في ملف ‪./etc/multipath.conf‬‬

‫حالة ‪ dm‬هي شبيهة بحالتة الطريتق‪ ،‬لسكتن متن وجهتة ظنظتر النتواة؛ حيتث توجتد قيمتتين لحالتة‬

‫‪ ،failed : dm‬التي تسكافئ ‪ ،faulty‬و ‪ active‬التي تسكافئ بقية الحتال ت‪ .‬قتد ل تتوافتق فتي بعتض‬

‫الحيان قيمة حالة الطريق وحالة ‪.dm‬‬

‫قيتتتم ‪ online_status‬الممسكنتتتة هتتتي ‪ running‬و ‪offline‬؛ حيتتتث حالتتتة ‪ offline‬تعنتتتي أن‬

‫جهاز ‪ SCSI‬قد نعدطل‪.‬‬

‫ملحظظظظة‪ :‬عنتتتدما نيننشتتتأ أو نيعتتتندل جهتتتاز ‪ ،multipath‬فتتتإن حالتتتة مجموعتتتة الطتتترق‪ ،‬واستتتم جهتتتاز ‪ ،dm‬وأذوظنتتتا ت‬
‫السكتابة‪ ،‬وحالة ‪ dm‬هي غير معلومة؛ وقد ل تسكون الميزا ت )‪ (features‬صحيحصة دوصما‪.‬‬

‫ز‪ .‬طلبيات ‪ Multipath‬بالمر ‪multipath‬‬

‫يمسكنتتك استتتخدام الخيتتارين ‪ -l‬و ‪ -ll‬للمتتر ‪ multipath‬لعتترض ضتتبط ‪ multipath‬الحتتالي‪،‬‬

‫يعرض الخيار ‪ -l‬معلوما ت ‪ multipath‬النمجنمعة من المعلومتتا ت الموجتتودة فتتي ‪ sysfs‬وفتتي رابتتط‬

‫الجهزة‪ ،‬يعرض الخيار ‪ -ll‬المعلوما ت التي يعرضها ‪ -l‬بالضافة إلى جميع مسكوظنا ت النظام الخرى‪.‬‬

‫عنتتد عتترض ضتتبط ‪ ، multipath‬فتتإن هنالتتك ثلثتتة مستتتويا ت متتن »الستتهاب«‪ ،‬التتتي يمسكنتتك‬

‫تحديدها بالخيار ‪ -v‬الخاص بالمر ‪multipath‬؛ بتحديد ‪ -v0‬فتتإن المتتر ل يعتترض أديتتة مخرجتتا ت‪،‬‬

‫أمتتا ‪ -v1‬فيعتترض أستتماء ‪ multipath‬النمنشتتأة أو المحدثتتة؛ التتتي يمسكتتن أن نتمتتنرر إلتتى أدوا ت أختترى‬

‫▲‬ ‫‪| 131‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ربط الجهزة متعدد الطرق‬

‫ وخرائط‬،multipaths ‫ و‬،‫ فإن المر يعرض جميع الطرق المسكتشفة‬،-v2 ‫؛ وبتحديد‬kpartx ‫مثل‬

.(device maps) ‫الجهزة‬

‫ فتتي قستتم‬verbosity ‫( بتعريف خاصية‬2) multipath ‫ يمسكن تعديل درجة السهاب الفتراضية لمر‬:‫ملحظة‬
.multipath.conf ‫ في ملف‬defaults

:multipath -l ‫يظهر المثال التي ظناتج المر‬

sudo multipath -l
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running

:multipath -ll ‫يعرض المثال التي ظناتج المر‬

sudo multipath -ll


3600d0230000000000e13955cc3757801 dm-10 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 19:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 18:0:0:1 sdh 8:112 active ready running
3600d0230000000000e13955cc3757803 dm-2 WINSYS,SF2372
size=125G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 19:0:0:3 sde 8:64 active ready running
`- 18:0:0:3 sdj 8:144 active ready running

▲ | 132
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ح‪ .‬تخيارات المر ‪Multipath‬‬

‫يشرح الجدول التي بعض خيارا ت المر ‪ multipath‬التي قد تجدها مفيدصة‪.‬‬

‫الجدول ‪ :6-5‬خيارا ت مفيدة للمر ‪multipath‬‬

‫الوصف‬ ‫الخيار‬

‫عرض ضبط ‪ multipath‬الحالي المجنمع من ‪ sysfs‬ورابط الجهزة‬


‫‪-l‬‬
‫)‪.(device mapper‬‬

‫عرض ضبط ‪ multipath‬الحالي المجنمع من ‪ sysfs‬ورابط الجهزة‬


‫‪-ll‬‬
‫)‪ ،(device mapper‬وجميع مسكوظنا ت النظام الخرى‪.‬‬

‫إزالة جهاز ‪ multipath‬المسمى‪.‬‬ ‫‪-f device‬‬

‫إزالة جميع أجهزة ‪ multipath‬غير المستخدمة‪.‬‬ ‫‪-F‬‬

‫ط‪ .‬تحديد قيود رابط الجهزة بالمر ‪dmsetup‬‬

‫تستتتتتطيع استتتتتخدام المتتتتر ‪ dmsetup‬لمعرفتتتتة أ ديتتتتة قيتتتتود لرابتتتتط الجهتتتتزة تطتتتتابق أجهتتتتزة‬

‫‪.multipathd‬‬

‫يعرض المر التي جميع أجهتتزة ربتتط الجهتتزة‪ ،‬وكتتل أرقتتامهم السكتتبرى والصتتغرى؛ حيتتث تحتتدد‬

‫الرقام الصغرى اسم جهتتاز ‪dm‬؛ علتى ستبيل المثتتال‪ ،‬الرقتم الصتغير ‪ 3‬يطتتابق جهتتاز ‪:multipathd‬‬

‫‪:/dev/dm-3‬‬

‫▲‬ ‫‪| 133‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫‪sudo dmsetup ls‬‬


‫‪mpathd‬‬ ‫‪(253,‬‬ ‫)‪4‬‬
‫‪mpathep1‬‬ ‫‪(253,‬‬ ‫)‪12‬‬
‫‪mpathfp1‬‬ ‫‪(253,‬‬ ‫)‪11‬‬
‫‪mpathb‬‬ ‫‪(253,‬‬ ‫)‪3‬‬
‫‪mpathgp1‬‬ ‫‪(253,‬‬ ‫)‪14‬‬
‫‪mpathhp1‬‬ ‫‪(253,‬‬ ‫)‪13‬‬
‫‪mpatha‬‬ ‫‪(253,‬‬ ‫)‪2‬‬
‫‪mpathh‬‬ ‫‪(253,‬‬ ‫)‪9‬‬
‫‪mpathg‬‬ ‫‪(253,‬‬ ‫)‪8‬‬
‫‪VolGroup00-LogVol01‬‬ ‫‪(253,‬‬ ‫)‪1‬‬
‫‪mpathf‬‬ ‫‪(253,‬‬ ‫)‪7‬‬
‫‪VolGroup00-LogVol00‬‬ ‫‪(253,‬‬ ‫)‪0‬‬
‫‪mpathe‬‬ ‫‪(253,‬‬ ‫)‪6‬‬
‫‪mpathbp1‬‬ ‫‪(253,‬‬ ‫)‪10‬‬
‫‪mpathd‬‬ ‫‪(253,‬‬ ‫)‪5‬‬

‫ي‪ .‬استكشاف التخطاء وإصلحها مع واجهة ‪ multipathd‬التفاعلية‬

‫إن المتتتر ‪ multipathd -k‬هتتتو واجهتتتة تفاعليتتتة للعفريتتتت ‪multipathd‬؛ ستتتتظهر واجهتتتة‬

‫‪ multipath‬التفاعلية بعد إدخال المر السابق‪ ،‬ويمسكنك بعد تنفيذه أن تسكتب ‪ help‬لعرض قائمتتة‬

‫بالوامر المتاحة‪ ،‬تستطيع إدخال أمر تفاعلي أو الضغط على ‪ Ctrl+D‬للخروج‪.‬‬

‫يمسكن استخدام واجهة ‪ multipath‬التفاعلية لمعالجة الخطاء التي قد تحصل متع ظنظامتتك؛‬

‫فعلى سبيل المثال‪ ،‬سلسلة الوامر التية ستعرض ضبط ‪ multipath‬متع العتتدادا ت الفتراضتية؛‬

‫راجع مقالة ‪ IBM‬ذا ت العنوان »‪ «Tricks with Multipathd‬قبل إغلقك للواجهة التفاعلية‪.‬‬

‫‪sudo multipathd -k‬‬


‫‪> > show config‬‬
‫‪> > CTRL-D‬‬

‫▲‬ ‫‪| 134‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫ربط الجهزة متعدد الطرق‬

‫ستتتتأكد سلستتلة الوامتتر التيتتة أن ‪ multipath‬قتتد حصتتل علتتى آختتر التعتتديل ت فتتي ملتتف‬

‫‪:multipath.conf‬‬

‫‪sudo multipathd -k‬‬


‫‪> > reconfigure‬‬
‫‪> > CTRL-D‬‬

‫استخدام سلسلة الوامر التية للتأكد من أن المتحقق من الطرق يعمل جيصدا‪:‬‬

‫‪sudo multipathd -k‬‬


‫‪> > show paths‬‬
‫‪> > CTRL-D‬‬

‫يمسكن أي ص‬
‫ضا تمرير الوامر إلى ‪ multipathd‬باستخدام مجرى الدخل القياسي )‪ (stdin‬كما يلي‪:‬‬

‫‪# echo 'show config' | multipathd -k‬‬

‫▲‬ ‫‪| 135‬‬


‫الدارة عن بعد‬
‫‪6‬‬

‫▲‬ ‫‪| 136‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

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

‫التطبيقا ت هي ‪ OpenSSH‬و ‪ Puppet‬و ‪.Zentyal‬‬

‫‪ .1‬خادوم ‪OpenSSH‬‬

‫ا‪ .‬مقدمة‬

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

‫ضتا مجموعتصة متن‬


‫وظنقل الملفا ت بين الحواسيب المتصلة بالشبسكة تستمى »‪ ،«OpenSSH‬س نتعلم أي ص‬

‫إعدادا ت الضبط الممسكنة مع خادوم ‪ OpenSSH‬وظنتعلم كيف ظنغيرها في ظنظام أوبنتو الخاص بك‪.‬‬

‫إن ‪ OpenSSH‬هتتتو إصتتتدار مجتتتاظني وحتتتر متتتن مجموعتتتة أدوا ت بروتوكتتتول »الصتتتدفة المنتتتة«‬

‫)‪ ([SSH] Secure Shell‬للتحسكتتم البعيتتد أو ظنقتتل الملفتتا ت بيتتن الحواستتيب؛ الدوا ت التقليديتتة التتتي‬

‫كاظنت مستخدمصة لظنجاز هذه المهام ‪-‬مثل ‪ telnet‬أو ‪ -rcp‬لم تسكتتن آمنتتصة حيتتث كتتاظنت تنقتتل كلمتة متترور‬

‫المستتتخدم بنتتتتص واضتتتح عنتتتد استتتتخدامها؛ أمتتتا ‪ ،OpenSSH‬فنيتتتودفر عفريصتتتتا وأدوا ت للعميتتتل لظنشتتتاء‬

‫عمليا ت تحسكم عن بعد أو ظنقل الملفا ت آمنة ومشفرة؛ ويستبدل الدوا ت القديمة استبداصل فعاصل‪.‬‬

‫مسكوظنتتتة ختتتادوم ‪ OpenSSH‬المستتتماة ‪» sshd‬تستتتتمع« )‪ (listens‬باستتتتمرار لتصتتتال ت العميتتتل‪،‬‬

‫وعندما يحدث طلب اتصال‪ ،‬فإن ‪ sshd‬يننششتئ ظنتوع التصتال الصتحيح اعتمتاصدا علتتى ظنتتوع أداة العميتتل‬

‫التي تجري التصال؛ على سبيل المثال‪ ،‬لو أن الحاسوب البعيد يتصل باستخدام برمجيتتة عميتل ‪،ssh‬‬

‫يء جلسة تحسكم عن نبعد نبعد الستيثاق؛ وإذا اتصل المستتخدم البعيتتد متتع‬
‫فإن خادوم ‪ OpenSSH‬يه د‬

‫يء عفريتتتت ختتتادوم ‪ OpenSSH‬ظنقصل آمصنتتتا للملفتتتا ت بيتتتن‬


‫ختتتادوم ‪ OpenSSH‬باستتتتخدام ‪ ،scp‬فستتتنيه د‬

‫الخادوم والعميل بعتتد الستتتيثاق؛ ويمسكتن أن نيستتخشدم ‪ OpenSSH‬عتندة طترق للستتيثاق‪ ،‬منهتتا كلمتة‬

‫المرور العادية‪ ،‬والمفتاح العمومي )‪ ،(public key‬وبطاقا ت ‪ Kerberos‬للدخول‪.‬‬

‫▲‬ ‫‪| 137‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫ب‪ .‬التثبيت‬

‫إن عمليتتة تثتتبيت ختتادوم وعميتتل ‪ OpenSSH‬هتتي عمليتتةة بستتيطة؛ استتتخدم هتتذا المتتر متتن‬

‫شمنحث الطرفية لتثبيت عميل ‪ OpenSSH‬على ظنظام أوبنتو‪:‬‬

‫‪sudo apt-get install openssh-client‬‬

‫استخدم هذا المر في سطر الوامر لتثبيت خادوم ‪ ،OpenSSH‬وملفا ت الدعم المتعلقة به‪:‬‬

‫‪sudo apt-get install openssh-server‬‬

‫يمسكن أي ص‬
‫ضتتا تحديتتد حزمتتة ‪ openssh-server‬للتثتتبيت أثنتتاء عمليتتة تثتتبيت ظنستخة الختتادوم‬

‫من أوبنتو‪.‬‬

‫ج‪ .‬الضبط‬

‫يمسكنك ضبط السلوك الفتراضتي لتطتبيق ختادوم ‪ (sshd) OpenSSH‬بتعتديل الملتف التتالي‬

‫‪ ، /etc/ssh/sshd_config‬للمزيد من المعلوما ت حول الضبط المستخدم في هذا الملتتف‪ ،‬تستتتطيع‬

‫مراجعة صفحة الدليل الملئمة بإدخال المر التي في الطرفية‪:‬‬

‫‪man sshd_config‬‬

‫هنالك تعليما ت كثيرة في ملتف ضتبط ‪ sshd‬تتحسكتتم بأشتياء مثتل إعتدادا ت التصتتال ت وأظنمتاط‬

‫الستيثاق؛ يمسكن أن نتعندل ما سنشرحه من تعليما ت الضبط بتعديل ملف ‪./etc/ssh/sshd_config‬‬

‫▲‬ ‫‪| 138‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

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

‫اظنسخ ملف ‪ /etc/ssh/sshd_config‬واحمشه من السكتابة باستخدام الوامر التية‪:‬‬

‫‪sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original‬‬


‫‪sudo chmod a-w /etc/ssh/sshd_config.original‬‬

‫ما يلي هو أمثلة عن تعليما ت الضبط التي قد ترغب في تعديلها‪:‬‬

‫لضتتتتبط ‪ OpenSSH‬لسكتتتتي يستتتتتمع علتتتتى منفتتتتذ ‪ TCP‬ذو الرقتتتتم ‪ 2222‬بتتتتدصل متتتتن منفتتتتذ ‪TCP‬‬

‫الفتراضي ‪ ،22‬فغدير تعليمة المنفذ كما يلي‪:‬‬

‫‪Port 2222‬‬

‫لتجعل ‪ sshd‬يسمح باستخدام الستيثاق المبني على المفتاح العمومي‪ ،‬فأضف أو عددل السطر‪:‬‬

‫‪PubkeyAuthentication yes‬‬

‫إذا كان السطر موجوصدا مسبصقا‪ ،‬فتأكد من عدم وجود رمز التعليق قبله‪.‬‬

‫لجعتتل ختتادوم ‪ OpenSSH‬يعتترض محتويتتا ت ملتتف ‪ /etc/issue.net‬كلفتتتة قبتتل تستتجيل‬

‫الدخول‪ ،‬فأضف أو عددل السطر التي في ملف ‪:/etc/ssh/sshd_config‬‬

‫‪Banner /etc/issue.net‬‬

‫▲‬ ‫‪| 139‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫بعتتد إجتتراء التعتتديل ت علتتى ملتتف ‪ ،/etc/ssh/sshd_config‬فتتاحفظ الملتتف ثتتم أعتتد تشتتغيل‬

‫خادوم ‪ sshd‬لتأخذ التغيرا ت مفعولها‪ ،‬وذلك بإدخال المر التي في شمنحث الطرفية‪:‬‬

‫‪sudo service ssh restart‬‬

‫تحظظذير‪ :‬تتتتوفر المزيتتد متتن تعليمتتا ت الضتتبط لختتادوم ‪ sshd‬لتعتتديل ستتلوك الختتادوم لسكتتي يلئتتم احتياجاتتتك‪ ،‬لسكتتن‬
‫يجب التنويه أظنه إذا كاظنت الطريقة الوحيدة للوصول إلى الخادوم هي ‪ ،ssh‬وارتسكبت خطصأ في ضتتبط ‪ sshd‬عتتبر‬
‫ملتتف ‪ ،/etc/ssh/sshd_config‬فستتجد ظنفستتك غيتتر قتاد تر علتتى الوصتتول إلتتى الختتادوم بعتتد إعتتادة تشتتغيل خدمتتة‬
‫‪sshd‬؛ بالضافة إلى أظنك إذا وضعت تعليمة ضبط خاطئة‪ ،‬فسيرفض خادوم ‪ sshd‬أن يعمل؛ لذلك كن حذصرا جصدا‬
‫عند تعديل هذا الملف على خادوم بعيد‪.‬‬

‫د‪ .‬مفاتيح ‪SSH‬‬

‫تستتتمح مفاتيتتتح ‪ SSH‬بالستتتتيثاق بيتتتن جهتتتازين دون الحاجتتتة إلتتتى كلمتتتة متتترور‪ ،‬نيستتتتخدم‬

‫الستيثاق بواسطة مفتاح ‪ SSH‬مفتاحين‪ :‬مفتاح خاص )‪ (private‬ومفتاح عام )‪.(public‬‬

‫أد ش‬
‫خل المر التي في الطرفية لتوليد المفاتيح‪:‬‬

‫‪ssh-keygen -t dsa‬‬

‫سيولد المر السابق المفاتيتح باستتخدام خوارزميتة التوقيتع الرقميتتة )‪Digital Signature‬‬

‫‪ ،([DSA] Algorithm‬ستتنتط نلب منتتك كلمتتة المتترور أثنتتاء العمليتتة‪ ،‬بعتتد ذلتتك اضتتغط ببستتاطة علتتى‬

‫‪ Enter‬لظنشاء المفتاح‪.‬‬

‫افتراضتتتتصيا‪ ،‬نيحنفتتتتظ المفتتتتتاح العتتتتام فتتتتي الملتتتتف ‪ ،~/.ssh/id_dsa.pub‬بينمتتتتا يسكتتتتون ملتتتتف‬

‫▲‬ ‫|‬ ‫‪140‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫‪ ~/.ssh/id_dsa‬هو المفتاح الخاص‪ ،‬اظنسخ ملف ‪ id_dsa.pub‬إلى المضيف البعيد‪ ،‬ثم أضفه إلى‬

‫ظنهاية ملف ‪ ~/.ssh/authorized_keys‬باستخدام المر‪:‬‬

‫‪ssh-copy-id username@remotehost‬‬

‫فتتتي النهايتتتة‪ ،‬تأكتتتد متتتن الذوظنتتتا ت علتتتى ملتتتف ‪ ،authorized_keys‬حيتتتث يجتتتب أن يملتتتك‬

‫المستخدم الموثوق فقط إذن القراءة والسكتابة؛ إذا لم تسكون الذوظنا ت صحيحة‪ ،‬فعدلها بالمر‪:‬‬

‫‪chmod 600 .ssh/authorized_keys‬‬

‫يجب أن تصبح الن قادصرا على الدخول إلى ‪ SSH‬على المضيف البعيد دون طلب كلمة المرور‪.‬‬

‫ه‪ .‬مصادر‬

‫صفحة ويسكي أوبنتو »‪.«SSH‬‬ ‫•‬

‫موقع »‪.«OpenSSH‬‬ ‫•‬

‫صفحة الويسكي »‪.«Advanced OpenSSH‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪141‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫‪ .2‬الداة ‪Puppet‬‬
‫‪ Puppet‬هتتو إطتتار عمتتل متعتتدد المنصتتا ت نيم دسكتتن متتدراء النظتتام متتن إجتتراء المهتتام الشتتائعة‬

‫باستخدام السكود؛ يمسكن أن يقوم السكود بالعديد من المهام‪ ،‬من تثتتبيت برمجيتتة جديتتدة إلتتى التحقتتق‬

‫متتن أذوظنتتا ت الملفتتا ت‪ ،‬أو تحتتديث حستتابا ت المستتتخدم؛ إن ‪ Puppet‬ليتتس رائصعتتا فقتتط أثنتتاء عمليتتة‬

‫التثتتبيت الساستتية للنظتتام‪ ،‬بتتل أي ص‬


‫ضتتا أثنتتاء »دورة حيتتاة النظتتام« بأكملهتتا‪ .‬نيستتتخندم ‪ Puppet‬فتتي‬

‫معظم الحال ت بنمط ضبط »خادوم‪/‬عميل«‪.‬‬

‫سيغطي هذا القسم طريقة تثبيت وضبط ‪ Puppet‬كخادوم‪/‬عميتتل‪ ،‬سيشتترح المثتتال البستتيط‬

‫التي طريقة تثبيت خادوم أباتشي باستخدام ‪.Puppet‬‬

‫ا‪ .‬التثبيت‬

‫أد ش‬
‫خل المر التي في طرفية الخادوم لتثبيت ‪:Puppet‬‬

‫‪sudo apt-get install puppetmaster‬‬

‫وعلى جهاز أو أجهزة العميل؛ أد ش‬


‫خل المر‪:‬‬

‫‪sudo apt-get install puppet‬‬

‫▲‬ ‫‪| 142‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫ب‪ .‬الضبط‬

‫قبتتتل ضتتتبط ‪ ،Puppet‬ربمتتتا عليتتتك إضتتتافة ستتتجل » ‪ «DNS CNAME‬متتتن أجتتتل النطتتتاق‬

‫‪ ،puppet.example.com‬حيتتتث ‪ example.com‬هتتتو النطتتتاق الختتتاص بتتتك؛ حيتتتث يتحقتتتق‬

‫عملء ‪ Puppet‬متتن ستتجل ‪ DNS‬للنطتتاق ‪ puppet.example.com‬كاستتم ختتادوم ‪،Puppet‬‬

‫أو »‪«Puppet Master‬؛ راجتتتتع » الفصتتتتل الثتتتتامن‪ :‬خدمتتتتة استتتتم النطتتتتاق )‪ «(DNS‬لمزيتتتتتد متتتتن‬

‫التفاصيل حول ‪.DNS‬‬

‫إذا لتتم تشتتأ أن تستتتخدم ‪ ،DNS‬فبإمسكاظنتتك إضتتافة قيتتود إلتتى ملتتف ‪ /etc/hosts‬فتتي الختتادوم‬

‫والعميل‪ .‬على سبيل المثال‪ ،‬أ ش‬


‫ضف ما يلي في ملف ‪ /etc/hosts‬على خادوم ‪:Puppet‬‬

‫‪127.0.0.1‬‬ ‫‪localhost.localdomain localhost puppet‬‬


‫‪192.168.1.17‬‬ ‫‪puppetclient.example.com puppetclient‬‬

‫ضف قيصدا للخادوم على كل عميل ‪:Puppet‬‬


‫وأ ش‬

‫‪192.168.1.16‬‬ ‫‪puppetmaster.example.com puppetmaster puppet‬‬

‫ملحظة‪ :‬استبدل عناوين ‪ IP‬الموجودة في المثال السابق بعناوين ‪ IP‬لخادومك وعملئك‪.‬‬

‫▲‬ ‫‪| 143‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الدارة عن بعد‬

/etc/puppet/module ‫ أظنشتتئ الملتتف‬،apache2 ‫يء الن بعض الموارد من أجل حزمة‬


‫لنه د‬

:‫ الذي يحتوي التي‬s/apache2/manifests/init.pp

package {
'apache2':
ensure => installed
}
service {
'apache2':
ensure => true,
enable => true,
require => Package['apache2']
}

:‫ الذي يحتوي على‬/etc/puppet/manifests/site.pp ‫أظنشئ الن الملف‬

node 'pupetclient.example.com' {
include apache2
}

.‫ الحقيقي‬Puppet ‫ باسم مضيف عميل‬pupetclient.example.com ‫ استبدل‬:‫ملحظة‬

:‫ البسيط هي إعادة تشغيل العفريت‬Puppet ‫الخطوة النهائية لخادوم‬

sudo service puppetmaster restart

.‫ حان الن الوقت لضبط العميل‬،Puppet ‫لقد أتممنا ضبط خادوم‬

▲ | 144
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫أوصل‪ ،‬اضتتتبط عفريتتتت ‪ Puppetagent‬لسكتتتي يعمتتتل‪ ،‬أي عتتتددل ملتتتف ‪/etc/default/puppet‬‬

‫مغديصرا ‪ START‬إلى ‪:yes‬‬

‫‪START=yes‬‬

‫ثم ابدأ تشغيل الخدمة‪:‬‬

‫‪sudo service puppet start‬‬

‫واعرض بصمة )‪ (fingerprint‬شهادة العميل‪:‬‬

‫‪sudo puppet agent --fingerprint‬‬

‫وبالعودة إلى خادوم ‪ ،Puppet‬اعرض طلبا ت توقيع الشهادا ت‪:‬‬

‫‪sudo puppet cert list‬‬

‫وفي خادوم ‪ ،Puppet‬تأكد من بصمة العميل وودقع على شهادة العميل بسكتابة‪:‬‬

‫‪sudo puppet sign pupetclient.example.com‬‬

‫وفتتتي عميتتتل ‪ ،Puppet‬شتتتدغل برظنامتتتج ‪ puppet‬يتتتدوصيا فتتتي الماميتتتة ) ‪(foreground‬؛ هتتتذه‬

‫الخطوة ليست مطلوبة لسكنها أفضل طريقة لختبار وتنقيح عمل خدمة ‪.puppet‬‬

‫‪sudo puppet agent --test‬‬

‫▲‬ ‫‪| 145‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫راجتتع ‪ /var/log/syslog‬لديتتة أخطتتاء بالضتتبط؛ إذا جتترى كتت ن‬


‫ل شتتيتء علتتى متتا يتترام‪ ،‬فستتنتثنبت‬

‫حزمة ‪ apache2‬وجميع اعتمادياتها على عميل ‪.Puppet‬‬

‫ملحظة‪ :‬هذا المثال بسيةط جصدا‪ ،‬ول نيظشهر العديد من ميزا ت ومحاسن ‪Puppet‬؛ راجع قسم المصادر للمزيد من‬
‫المعلوما ت ‪.‬‬

‫ج‪ .‬مصادر‬

‫توثيق موقع ‪ Puppet‬الرسمي‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا كتاب »‪.«Pro Puppet‬‬ ‫•‬

‫ ت إضافية هو صفحة ويسكي أوبنتو »‪.«Puppet‬‬


‫مصدر آخر لمعلوما ت‬ ‫•‬

‫▲‬ ‫‪| 146‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫‪ .3‬برمجية ‪Zentyal‬‬
‫إن ‪ Zentyal‬هتتتو ختتتادوم ليننسكتتتس صتتتغير متتتونجه للعمتتتال )‪ ،(business server‬يمسكتتتن أن‬

‫نيضتت نبط كبوابتتة‪ ،‬أو متتدير بنتتى تحتيتتة‪ ،‬أو »متتدير تهديتتد موحتتد« ) ‪،(Unified Threat Manager‬‬

‫أو خادوم مسكتبي‪ ،‬أو خادوم اتصال ت موحد‪ ،‬أو تجميةع مما سبق؛ جميع الخدما ت الشتتبسكية النمتتدارة‬

‫متتن ‪ Zentyal‬تندمتتج متتع بعضتتها اظنتتدماصجا كتتبيصرا‪ ،‬مؤتشم صتتتتا معظتتم المهتتام‪ ،‬ممتتتا يستتاعد فتتي تلفتتي‬

‫الخطاء في ضبط الشبسكة والدارة‪ ،‬ويسمح بتقليل الوقت اللزم لضبط البرمجيا ت؛ ‪ Zentyal‬هو‬

‫برمجيتتتة مفتوحتتتة المصتتتدر‪ ،‬ومنشتتتورة وفتتتق رخصتتتة غنتتتو العموميتتتة )‪ (GPL‬وتعتمتتتد علتتتى أوبنتتتتو‬

‫كأساتس لها‪.‬‬

‫تتضتمن ‪ Zentyal‬سلستلصة م ن الح زم )حزمتةة واحتدةة عتادصة لسكتل وحتدة ] ‪ ([module‬التتي تتوفر‬

‫واجهة ويب لضتتبط مختلتف الختتواديم أو الختتدما ت؛ ونيختنزن الضتتبط فتي قاعتتدة بياظنتا ت ‪ Redis‬علتى‬

‫ظنمتتط » مفتتتاح‪-‬قيمتتة«؛ لسكتتن ضتتبط المستتتخدمين والمجموعتتا ت‪ ،‬والنطاقتتا ت ) ‪ (domains‬يسكتتون مبنصيتتا‬

‫علتتتى ‪OpenLDAP‬؛ وعنتتتدما نتضتتتنبط أديتتتة خاصتتتيا ت ضتتتمن واجهتتتة التتتويب‪ ،‬فستتتنتعاد كتابتتتة ملفتتتا ت‬

‫العدادا ت باستتتخدام قتتوالب ضتتبط نمتتونفرة متن الوحتدا ت؛ الميتتزة الساستتية متن استتتخدام ‪Zentyal‬‬

‫ى عاتل مع بعضها بع ص‬
‫ضا‪.‬‬ ‫ج ذي مستو ص‬
‫هو واجهة رسومية موحدة لضبط جميع خدما ت الشبسكة مع دم ت‬

‫▲‬ ‫‪| 147‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫ا‪ .‬التثبيت‬

‫تتوفر إصدارة ‪ Zentyal 2.3‬في مستودع ‪ Universe‬في أوبنتو ‪12.04‬؛ الوحدا ت المتوفرة هي‪:‬‬

‫‪ zentyal-core‬و ‪ :zentyal-common‬أستتاس واجهتتة ‪ Zentyal‬والمسكتبتتا ت الشتتائعة‬ ‫•‬

‫لطار العمل؛ وتتضمن أي ص‬


‫ضتا الستجل ت )‪ (logs‬ووحتتدا ت الحتداث )‪(events modules‬‬

‫التي تعطي مدير النظام واجهة لمشاهدة السجل ت‪ ،‬وتوليد أحداث منها‪.‬‬

‫‪ :zentyal-network‬إدارة إعتتدادا ت الشتتبسكة‪ ،‬متتن البطاقتتا ت )داعمتتصة عنتتاوين ‪ IP‬الثابتتتة‪،‬‬ ‫•‬

‫أو ‪ ،DHCP‬أو ‪ ،VLAN‬أوالجستتتتور‪ ،‬أو ‪ ،(PPPoE‬إلتتتتى البوابتتتتا ت المتعتتتتددة عنتتتتدما يسكتتتتون‬

‫هنالك أكثر متن اتصتال بتالظنترظنت؛ وموازظنتة ال ش‬


‫حمتل والتتوجيه المتقتدم‪ ،‬وجتداول الت وجيه‬

‫الثابتة‪ ،‬و ‪ DNS‬الديناميسكي‪.‬‬

‫‪ zentyal-objects‬و ‪ :zentyal-services‬تتتتتتتوفير طبقتتتتتتة تجريديتتتتتتة )‪abstraction‬‬ ‫•‬

‫‪ (level‬لعناوين الشبسكة )على ستتبيل المثتتال‪ LAN ،‬بتتدصل متتن ‪ (192.168.1.0/24‬والمنافتتذ‬

‫مسماصة على أسماء خدماتها )مثصل‪ HTTP ،‬بدصل من ‪.(TCP/80‬‬

‫‪ :zentyal-firewall‬ضتتبط قواعتتد ‪ iptables‬لحجتتب التصتتال ت الممنوعتتة‪ ،‬واستتتخدام‬ ‫•‬

‫‪ NAT‬وإعادة توجيه المنافذ‪.‬‬

‫‪ :zentyal-ntp‬تثتتبيت عفريتتت ‪ NTP‬لبقتتاء ستتاعة الختتادوم صتتحيحصة‪ ،‬وللستتماح بعملء‬ ‫•‬

‫الشبسكة بمزامنة ساعاتهم مع ساعة الخادوم‪.‬‬

‫‪ :zentyal-dhcp‬ضتتتتبط ختتتتادوم ‪ ISC DHCP‬التتتتذي يتتتتدعم مجتتتتال ت الشتتتتبسكة‪ ،‬وزمتتتتن‬ ‫•‬

‫» التتتتتتأجير« الثتتتتابت‪ ،‬وغيرهتتتتتا متتتتتن الخيتتتتارا ت المتقدمتتتتتة مثتتتتل ‪ ،NTP‬و ‪ ،WINS‬و ‪DNS‬‬

‫الديناميسكي‪ ،‬وإقلع الشبسكة مع ‪.PXE‬‬

‫▲‬ ‫‪| 148‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫‪ :zentyal-dns‬إعتتداد ختتادوم ‪ ISC Bind9‬علتتى جهتتازك متتع إمسكاظنيتتة التخزيتتن المتتؤقت‬ ‫•‬

‫للطلبيا ت المحليتتة‪ ،‬أو كنممتت درر‪ ،‬أو كختتادوم استتيثاق للنطاقتتا ت المضتبوطة؛ ويستتمح بضتبط‬

‫‪ ،A‬و ‪ ،CNAME‬و ‪ ،MX‬و ‪ ،NS‬و ‪ ،TXT‬وسجل ت ‪.SRV‬‬

‫‪ :zentyal-ca‬تضتتتتمين إدارة »ستتتتلطة الشتتتتهادا ت« ) ‪ (Certification Authority‬متتتتع‬ ‫•‬

‫‪ Zentyal‬كتتي يتمسكتتن المستتتخدمون متتن استتتخدام الشتتهادا ت للستتتيثاق متتع الختتدما ت‪،‬‬

‫مثل ‪.OpenVPN‬‬

‫‪ :zentyal-openvpn‬الستتتتتتتتماح بضتتتتتتتتبط عتتتتتتتتدة ختتتتتتتتواديم وعملء ‪ VPN‬باستتتتتتتتتخدام‬ ‫•‬

‫‪ OpenVPN‬مع ضبط ديناميسكي للتوجيه باستخدام ‪.Quagga‬‬

‫‪ :zentyal-users‬تتتتتتتوفير واجهتتتتتتة لضتتتتتتبط وإدارة المستتتتتتتخدمين والمجموعتتتتتتا ت فتتتتتتي‬ ‫•‬

‫‪OpenLDAP‬؛ الختتدما ت الختترى فتتي ‪ Zentyal‬نتستتتوشثق متتن المستتتخدمين باستتتخدام‬

‫‪ ، LDAP‬مما يؤدي إلى وجود آلية مركزية لدارة المستخدمين والمجموعا ت؛ متتن الممسكتتن‬

‫أي صضتتتا مزامنتتتة المستتتتخدمين‪ ،‬وكلمتتتا ت المتتترور‪ ،‬والمجموعتتتا ت متتتن ختتتادوم ‪Microsoft‬‬

‫‪.Active Directory‬‬

‫‪ :zentyal-squid‬ضبط ختتدمنت د‬
‫ي ‪ Squid‬و ‪ Dansguardian‬لتستتريع التصتتفح‪ ،‬ويعتتود‬ ‫•‬

‫الفضل في ذلك إلى إمسكاظنيا ت التخزين المؤقت وترشيح المحتوى‪.‬‬

‫‪ :zentyal-samba‬تسمح هذه الوحدة بضتبط ستامبا ودمجته متع ض بط ‪ LDAP‬موج ود‬ ‫•‬

‫مستتتب صقا؛ ومتتتن ظنفتتتس الوحتتتدة تستتتتطيع تعريتتتف سياستتتا ت لسكلمتتتا ت المتتترور‪ ،‬وإظنشتتتاء متتتوارد‬

‫مشتركة‪ ،‬وإسناد الذوظنا ت‪.‬‬

‫‪ :zentyal-printers‬دمج ‪ CUPS‬م ع ستامبا والستماح‪ ،‬ليتس فقتط بضتبط الطابعتا ت‪ ،‬بتل‬ ‫•‬

‫وإعطائها الذوظنا ت بالعتماد على مستخدمي ومجموعا ت ‪.LDAP‬‬

‫▲‬ ‫‪| 149‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫لتثتتبيت ‪ ،Zentyal‬افتتتح الطرفيتتة فتتي الختتادوم واكتتتب )حيتتث > ‪ <zentyal-module‬هتتو‬

‫اسم أحد الوحدا ت السابقة(‪:‬‬

‫>‪sudo apt-get install <zentyal-module‬‬

‫ملحظظة‪ :‬نيصتشدر ‪ Zentyal‬إص داصرا واح صدا ثابصتتا رئيستصيا ف ي الستنة )فتي أيلتول‪/‬ستبتمبر( مبن ة‬
‫ي علتى آخ ر إصتدارة‬
‫أوبنتتتتو طويلتتتة التتتدعم )‪ (LTS‬؛ يسكتتتون للصتتتدارا ت الثابتتتتة أرقتتتام رئيستتتية زوجيتتتة )مثصل‪ ،2.2 ،‬أو ‪ (3.0‬والصتتتدارا ت‬
‫التجريبية تسكون أرقامها الرئيسية فردية )مثصل ‪ ،2.1‬و ‪(2.3‬؛ تأتي أوبنتو ‪ 12.04‬متتع ‪ Zentyal‬بإصتدار ‪2.3‬؛ إذا أرد ت‬
‫الترقية إلى إصدارة ثابتة جديدة نظن ش‬
‫شتتنر ت بعتتد إصتدار أوبنتتتو ‪ ،12.04‬فيمسكنتتك استتتخدم »‪«Zentyal Team PPA‬؛‬
‫قد توفر لك الترقية إلى الصدارا ت الثابتة تصحيحا ت لعلتل لم تصل إلى الصدار ‪ 2.3‬الموجود في أوبنتو ‪.12.04‬‬

‫تنويه‪ :‬إذا أرد ت المزيد من المعلوما ت حول إضافة الحزم من ‪PPA‬؛ فراجع مقالة الويسكي »‪Add a Personal‬‬
‫)‪.«Pachage Archive (PPA‬‬

‫ملحوظتة جاظنبيتتة‪ ،‬تستتطيع إيجتاد الحتزم التيتة فتي ‪ ،Zentyal Team PPA‬لسكتن ليتس فتي‬

‫مستودعا ت ‪ Universe‬في أوبنتو‪:‬‬

‫وحتتدة ‪ :zentyal-antivirus‬تضتتمين مضتتاد الفيروستتا ت ‪ ClamAV‬متتع وحتتدا ت أختترى‬ ‫•‬

‫مثل الخادوم الوسيط ) ‪ (proxy‬ومشاركة الملفا ت‪ ،‬أو ‪.mailfilter‬‬

‫وحدة ‪ :zentyal-asterisk‬ضبط ‪ Asterisk‬لتوفير ‪ PBX‬بسيط مبنتي علتى الستتيثاق‬ ‫•‬

‫بواسطة ‪.LDAP‬‬

‫وحتتتدة ‪ :zentyal-bwmonitor‬الستتتماح بمراقبتتتة استتتتهلك التراستتتل الشتتتبسكي متتتن شقنبتتتل‬ ‫•‬

‫عملء شبسكتك المحلية‪.‬‬

‫▲‬ ‫|‬ ‫‪150‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫وحتتتتدة ‪ :zentyal-captiveportal‬تضتتتتمين »‪ «captive portal‬متتتتع الجتتتتدار النتتتتاري‪،‬‬ ‫•‬

‫ومستخدمي ومجموعا ت ‪.LDAP‬‬

‫وحتتدة ‪ :zentyal-ebackup‬الستتماح بإظنشتتاء ظنستتخ احتياطيتتة مجدولتتة علتتى خادومتتك‬ ‫•‬

‫باستخدام أداة النسخ الحتياطي الشهيرة »‪.«duplicity‬‬

‫وحدة ‪ :zentyal-ftp‬ضبط خادوم ‪ FTP‬مع استيثاق مبني على ‪.LDAP‬‬ ‫•‬

‫وحدة ‪ :zentyal-ids‬تضمين ظنظام اكتشاف التطفل في الشبسكة‪.‬‬ ‫•‬

‫وحدة ‪ :zentyal-ipsec‬السماح بضبط أظنفاق ‪ IPsec‬باستخدام ‪.OpenSwan‬‬ ‫•‬

‫وحدة ‪ :zentyal-jabber‬تضمين خادوم ‪ XMPP‬مع مستخدمي ومجموعا ت ‪.LDAP‬‬ ‫•‬

‫وحدة ‪ :zentyal-thinclients‬حل يعتمد على عملء »رقيقين« )‪ (thin clients‬مبني‬ ‫•‬

‫على ‪.LTSP‬‬

‫وحتتدة ‪ :zentyal-mail‬تشتتسكيلة ختتدما ت البريتتد اللسكتتتروظني كاملتتة‪ ،‬بمتتا فيهتتا ‪Postfix‬‬ ‫•‬

‫و ‪ Dovecot‬مع خلفية ‪.LDAP‬‬

‫وحدة ‪ :zentyal-mailfilter‬ضبط ‪ amavisd‬متع ختدما ت البريتتد اللسكتتروظني لترشتتيح‬ ‫•‬

‫الرسائل العشوائية )‪ (spam‬والفيروسا ت المرفقة بالرسائل‪.‬‬

‫وحدة ‪ :zentyal-monitor‬تضمين ‪ collectd‬لمراقبة أداء الخادوم والخدما ت التي تعمل‪.‬‬ ‫•‬

‫وحدة ‪ :zentyal-pptp‬ضبط خادوم ‪.PPTP VPN‬‬ ‫•‬

‫وحدة ‪ :zentyal-raduis‬تضمين ‪ FreeRADIUS‬مع مستخدمي ومجموعا ت ‪.LDAP‬‬ ‫•‬

‫وحتتتتتتتدة ‪ :zentyal-software‬واجهتتتتتتتة بستتتتتتتيطة لدارة وحتتتتتتتدا ت ‪ Zentyal‬المثبتتتتتتتتة‪،‬‬ ‫•‬

‫وتحديثا ت النظام‪.‬‬

‫▲‬ ‫|‬ ‫‪151‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫وحدة ‪ :zentyal-trafficshaping‬ضبط قواعد الحد من مرور البياظنا ت للتضتتييق علتتى‬ ‫•‬

‫التراسل الشبسكي‪ ،‬وتحسين زمن التأخير )‪.(latency‬‬

‫وحتتتتتتدة ‪ :zentyal-usercorner‬الستتتتتتماح للمستتتتتتتخدمين بتعتتتتتتديل خاصتتتتتتيا ت ‪LDAP‬‬ ‫•‬

‫الخاصة بهم باستخدام متصفح ويب‪.‬‬

‫وحتتتدة ‪ :zentyal-virt‬واجهتتتة بستتتيطة لظنشتتتاء وإدارة الظنظمتتتة الوهميتتتة المبنيتتتة علتتتى‬ ‫•‬

‫‪.libvirt‬‬

‫وحتتتتدة ‪ :zentyal-webmail‬الستتتتماح بالوصتتتتول لبريتتتتدك عتتتتبر خدمتتتتة ‪Roundcube‬‬ ‫•‬

‫‪ webmail‬الشهيرة‪.‬‬

‫وحدة ‪ :zentyal-webserver‬ض بط ختادوم ويتب أباتشتي لستضتافة مختلتف المواق ع‬ ‫•‬

‫على جهازك‪.‬‬

‫وحدة ‪ :zentyal-zarafa‬تضمين مجموعة ‪ Zarafa‬مع مجموعة ‪ Zentyal‬للبريد و ‪.LDAP‬‬ ‫•‬

‫ب‪ .‬الخطوات الولى‬

‫نيستتتت نمح لي حستتتتاب فتتتتي النظتتتتام ينتمتتتي للمجموعتتتتة ‪ sudo‬بتستتتجيل التتتتدخول إلتتتتى واجهتتتة‬

‫‪Zentyal‬؛ إذا كنت تستخدم حساب المستتخدم النمننشتتأ أثنتاء التثتبيت؛ فيجتب أن يسكتون افتراضتصيا‬

‫في مجموعة ‪.sudo‬‬

‫تنويه‪ :‬إذا كنت تستخدم مستخدصما آخنر ل ينتمي للمجموعة ‪ ،sudo‬فندفذ المر‪:‬‬
‫‪sudo adduser username sudo‬‬

‫▲‬ ‫‪| 152‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الدارة عن بعد‬

‫للوصتتول إلتتى واجهتتة التتويب )‪ ،(Zentyal‬فتتتوجه إلتتى ‪) https://localhost/‬أو عنتتوان ‪ IP‬للختتادوم‬

‫البعيد(‪ ،‬ولن ‪ Zentyal‬يستخدم شهادة ‪ SSL‬مودقعة ذاتصيا‪ ،‬فعليك إضافة استثناء له في متصفحك‪.‬‬

‫ستشاهد لوحة التحسكم )‪ (dashboard‬بعد تسجيل الدخول‪ ،‬مع لمحة عتتن خادومتك؛ لضتتبط‬

‫أ دية خاصية من خاصتيا ت الوحتدا ت المثبتتة‪ ،‬فتاذهب إلتى القستتام المختلفتة ف ي القائمتة التتي علتى‬

‫اليسار؛ عندما تعدل أدية تعديل ت‪ ،‬فسيظهر زر أحمر مسكتوب عليه » ‪ ،«Save changes‬الذي عليك‬

‫الضغط عليه لحفظ كل تعديل ت الضبط؛ لتطبيق هتذه التعتديل ت علتى خادومتك‪ ،‬فيجتب أن تفنعتل‬

‫الوحدة أوصل‪ ،‬وذلك متن قيتد »‪ «Module Status‬علتى القائمتة اليسترى؛ فتي كتل مترة ستنتفدعل فيهتا‬

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

‫وملفا ت ضبطه‪.‬‬

‫ملحظة‪ :‬إذا أرد ت تخصيص أي ملف ضبط لتنفيذ أفعال معينة )سسكربتا ت أو أوامر( لضبط ميزا ت غير متتتوفرة‬
‫في ‪ ،Zentyal‬فضع قوالب ملفا ت الضبط المخصصة فتتي ‪ /etc/zentyal/stubs/<module>‎/‬و »‪ «hooks‬فتتي‬
‫‪./etc/zentyal/hooks/<module>‎.<action>‎‬‬

‫ج‪ .‬مصادر‬

‫صفحة توثيق ‪ Zentyal‬الرسمية‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة توثيق ‪ Zentyal‬الموفرة من المجتمع‪.‬‬ ‫•‬

‫ل تننس أي ص‬
‫ضا زيادة المنتدى لدعم المجتمع‪ ،‬والتعقيبا ت‪ ،‬وطلبا ت الميزا ت ‪...‬إلخ‪.‬‬ ‫•‬

‫▲‬ ‫‪| 153‬‬


‫التستيثاق الشبكي‬
‫‪7‬‬

‫▲‬ ‫‪| 154‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫يستخدم هذا الفصل ‪ LDAP‬للستيثاق الشبسكي ‪ Network authentication‬ومنح التصاريح‪.‬‬

‫‪ .1‬خادوم ‪OpenLDAP‬‬
‫التتتبروتوكول الخفيتتتف للوصتتتول للتتتدليل ) ‪(Lightweight Directory Access Protocol‬‬

‫أو اختصتتتاصرا ‪ ،LDAP‬هتتتو بروتوكتتتول لطلبيتتتا ت وتعتتتديل خدمتتتة دليتتتل مبنتتتي علتتتى ‪ X.500‬يعمتتتل عتتتبر‬

‫‪TCP/IP‬؛ الصتتدارة الحاليتتة متتن ‪ LDAP‬هتتي ‪ LDAPv3‬كمتتا هتتو معتتنرف فتتي ‪RFC4510‬؛ والبرمجيتتة‬

‫المستخدمة في أوبنتو لتطبيق ‪ LDAPv3‬هي ‪.OpenLDAP‬‬

‫هذه هي بعض المصطلحا ت والمفاهيم الساسية‪:‬‬ ‫•‬

‫دليل ‪ LDAP‬هو شجرة من قيود البياظنا ت )‪ (entries‬التتتي تسكتتون ذا ت هيسكلديتتتة بطبيعتهتتا‪،‬‬ ‫•‬

‫وتسمى شجرة معلوما ت الدليل )‪.([DIT] Directory Information Tree‬‬

‫يتسكون القيد من مجموعة من الخاصيا ت )‪.(attributes‬‬ ‫•‬

‫الخاصية لها ظنوع )‪ (type‬يسكون اسصما أو شرصحا؛ وقيمةة واحدةة أو أكثر‪.‬‬ ‫•‬

‫يجب أن نتعدرف كل خاصية ما يسمى ‪ objectClass‬واحصدا على القل‪.‬‬ ‫•‬

‫الخاصتتتتتتيا ت و ‪ objectClasses‬نمعنرفتتتتتتةة فتتتتتتي مخططتتتتتتا ت )‪ (schemas‬حيتتتتتتث نيعتنبتتتتتتر‬ ‫•‬

‫صا من الخاصيا ت‪.‬‬


‫‪ objectClass‬ظنوصعا خا ص‬

‫لسكل قيد معدرف خاص به هتو »الستتم الفريتتد« ) ‪ DN] Distinguished Name‬أو ‪([dn‬؛‬ ‫•‬

‫التتتتذي يحتتتتتوي علتتتتى »الستتتتم الفريتتتتد النستتتتبي« ) ‪Relative Distinguished Name‬‬

‫]‪ ([RDN‬متبوصعا بالسم الفريد للقيد الب‪.‬‬

‫السم الفريد للقيد ليس خاصيصة‪ ،‬بل يعتبر جزصءا من القيد ظنفسه‪.‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪155‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ملحظة‪ :‬المصطلحا ت »السكائن« )‪ ،(object‬و»الحاويتة« ) ‪ ،(container‬و»العقتدة« )‪ (node‬لهتا دلل ت خاصتة‪ ،‬لسكنهتا‬


‫أساسصيا تعني »قيد« )‪(entry‬؛ لسكن »قيد« هو المصطلح الصحيح تقنصيا‪.‬‬

‫علتتتتى ستتتتبيل المثتتتتال‪ ،‬لتتتتدينا هنتتتتا قيتتتتةد واحتتتتةد يحتتتتتوي علتتتتى ‪ 11‬خاصتتتتية؛ ويسكتتتتون استتتتمه الفريتتتتد‬

‫» ‪ ،«cn=John Doe,dc=example,dc=com‬واستتتتتمه الفريتتتتتد النستتتتتبي )‪ (RDN‬هتتتتتو »‪cn=John‬‬

‫‪ ،«Doe‬واسم الب الفريد هو »‪:«dc=example,dc=com‬‬

‫‪dn: cn=John Doe,dc=example,dc=com‬‬


‫‪cn: John Doe‬‬
‫‪givenName: John‬‬
‫‪sn: Doe‬‬
‫‪telephoneNumber: +1 888 555 6789‬‬
‫‪telephoneNumber: +1 888 555 1232‬‬
‫‪mail: john@example.com‬‬
‫‪manager: cn=Larry Smith,dc=example,dc=com‬‬
‫‪objectClass: inetOrgPerson‬‬
‫‪objectClass: organizationalPerson‬‬
‫‪objectClass: person‬‬
‫‪objectClass: top‬‬

‫القيتتتتد الستتتتابق مسكتتتتتوب بصتتتتيغة ‪) LDIF‬صتتتتيغة تبتتتتادل البياظنتتتتا ت فتتتتي ‪LDAP Data] LDAP‬‬

‫‪([Interchange Format‬؛ أدية معلوما ت تضعها في شجرة معلوما ت الدليل )‪ (DIT‬يجتتب أن تسكتتون‬

‫بهذه الصيغة؛ كما هي معنرفة في ‪.RFC2849‬‬

‫وعلى الرغم من أن هذا الفصل يستخدم ‪ LDAP‬للستيثاق المركزي‪ ،‬لسكنه يصلح لي شيء فيتته‬

‫عتتدد كتتبير متتن طلبتتا ت الوصتتول لستتنتد خلفتتي )‪ (backend‬تتمحتتور حتتول قتتراءة القيتتم المبنيتتة علتتى‬

‫الخاصتتتيا ت ) ‪ (name:value‬؛ تتضتتتمن المثلتتتة علتتتى ذلتتتك‪ :‬دفتتتتصرا للعنتتتاوين‪ ،‬وقائمتتتصة بعنتتتاوين البريتتتد‬

‫اللسكتروظني‪ ،‬وضبصطا لخادوم البريد‪.‬‬

‫▲‬ ‫‪| 156‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ا‪ .‬التثبيت‬

‫لتثبيت عفريت خادوم ‪ OpenLDAP‬مع أدوا ت إدارة ‪ LDAP‬التقليديتة؛ عليتك تثتبيت حزمنتت د‬
‫ي‬

‫‪ slapd‬و ‪ ldap-utils‬على التوالي وبالترتيب‪.‬‬

‫ستتيؤدي تثتتبيت ‪ slapd‬إلتتى إظنشتتاء ضتتبط قتتادر علتتى العمتتل مباشتترصة؛ وخصو ص‬
‫صتتا إظنشتتاء قاعتتدة‬

‫بياظنتتا ت تستتتطيع استتتخدامها لتخزيتتن بياظناتتتك؛ لسكتتن اللحقتتة )‪ suffix‬أو ‪ DN‬الساستتية( ستتنتحندد متتن‬

‫اسم ظنطاق الجه از المحل ي؛ إذا أرد ت شتيصئا مختلصف ا‪ ،‬فعتددل ملتف ‪ /etc/hosts‬وبتددل استم النطاق باستتم‬

‫ترغتتتتتتتتب فتتتتتتتتي استتتتتتتتتخدامه كلحقتتتتتتتة؛ علتتتتتتتتى ستتتتتتتتبيل المثتتتتتتتتال‪ ،‬إذا أرد ت أن تسكتتتتتتتتون اللحقتتتتتتتتة هتتتتتتتتي‬

‫‪ ،dc=example,dc=com‬فعندها سيحتوي ملف ‪ hosts‬على سطتر شبيه بالتي‪:‬‬

‫‪127.0.1.1‬‬ ‫‪hostname.example.com hostname‬‬

‫تستطيع الرجوع إلى العدادا ت القديمة بعد تثبيت الحزمة‪.‬‬

‫ملحظة‪ :‬سيستخدم هذا السكتاب قاعدة بياظنا ت ذا ت لحقة ‪.dc=example,dc=com‬‬

‫أكمل بتثبيت الحزمة‪:‬‬

‫‪sudo apt-get install slapd ldap-utils‬‬

‫▲‬ ‫‪| 157‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫صدمنم ‪ slapd‬لنيضنبط داخل ‪ slapd‬ظنفسه‪ ،‬باستخدام ‪ DIT‬خاصة به لهذا‬


‫منذ إصدارة أوبنتو ‪ ،8.10‬ن‬

‫الغرض مما يسمح بأن نيعند ‪ slapd‬ديناميسك ييا دون الحاجة إلى إعادة تشتغيل الخدمتة؛ وستتتسكون قاعتتدة‬

‫بياظنتتا ت الضتتبط متتن مجموعتتة متتن ملفتتا ت ‪ LDIF‬النصتتية الموجتتودة فتتي المجلتتد ‪/etc/ldap/slapd.d‬؛‬

‫طريقتتتتة العمتتتتل هتتتتذه معروفتتتتةة بعتتتتندة أستتتتماء‪ :‬طريقتتتتة ‪ ،slapd-config‬وطريقتتتتة ‪Real Time) RTC‬‬

‫‪ ،(Configuration‬أو طريقتتتتتة ‪cn=config‬؛ متتتتتا زلتتتتت ن‬


‫ت تستتتتتتطيع استتتتتتخدام ملتتتتتف الضتتتتتبط التقليتتتتتدي‬

‫‪ slapd.conf‬لسكن هذه الطريقة غير مستحسنة؛ وستلغى هذه الميزة تدريجصيا‪.‬‬

‫ملحظة‪ :‬تستخدم أوبنتو طريقة ‪ slapd-config‬لضبط ‪ ،slapd‬وكذلك سيستخدمها هذا السكتاب‪.‬‬

‫ستتتتتنيط نلب منتتتتتك أثنتتتتتاء التثتتتتتبيت تعريتتتتتف »الوراق العتماديتتتتتة الداريتتتتتة« ) ‪administrative‬‬

‫‪(credentials‬؛ وهتتتي الوراق العتماديتتة المبنيتتة علتتتى ‪ LDAP‬لقاعتتتدة ‪rootDN‬؛ افتراضتتتصيا‪ ،‬يسكتتتون‬

‫ضا افتراضصيا ل نيننشأ حستتاب إداري‬


‫‪ DN‬للمستخدم هو ‪cn=admin,dc=example, dc=com‬؛ وأي ص‬

‫لقاعدة بياظنا ت ‪slapd-config‬؛ لذا عليك الستيثاق خارجصيا للوصول إلى ‪ LDAP‬وسنرى كيفية فعل‬

‫ذلك لحصقا‪.‬‬

‫تأتي بعض المخططا ت السكلسيسكية ) ‪ cosine‬و ‪ nis‬و ‪ (inetorgperson‬افتراضصيا مع ‪slapd‬‬

‫هذه اليام؛ وهنالك أي ص‬


‫ضا مخطط »‪ «core‬المطلوب ليعمل أي مخطط آخر‪.‬‬

‫▲‬ ‫‪| 158‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ ما يجب افعله بعد التثبيت‬.‫ب‬

slapd-) slapd ‫نتشع دد عملية التثبيت شجرتين لمعلوما ت الدليل؛ واحدة لستتتخدامها فتتي ضتتبط‬

.‫(؛ لنلشق ظنظرصة‬dc=example,dc=com) ‫( وواحدة لبياظناتك الشخصية‬config

LDIF ‫؛ تتتتذنكر أن هتتتذه القاعتتتدة مبنيتتتة علتتتى‬slapd-config ‫هتتتذا متتتا تبتتدو عليتتته قاعتتدة بياظنتتا ت‬

:/etc/ldap/slapd.d ‫وموجودة في‬

/etc/ldap/slapd.d/
/etc/ldap/slapd.d/cn=config
/etc/ldap/slapd.d/cn=config/cn=module{0}.ldif
/etc/ldap/slapd.d/cn=config/cn=schema
/etc/ldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif
/etc/ldap/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif
/etc/ldap/slapd.d/cn=config/cn=schema/cn={2}nis.ldif
/etc/ldap/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif
/etc/ldap/slapd.d/cn=config/cn=schema.ldif
/etc/ldap/slapd.d/cn=config/olcBackend={0}hdb.ldif
/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif
/etc/ldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif
/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
/etc/ldap/slapd.d/cn=config.ldif

‫ )عتتتبر‬LDAP ‫ أجتتتشر التعتتتديل ت باستتتتخدام بروتوكتتتول‬،‫ مباشتتترصة‬slapd-config ‫ ل نتعتتتددل قاعتتتدة بياظنتتتا ت‬:‫ملحظظظظة‬
.(‫الدوا ت الخاصة‬

‫د‬
.‫ قد ل يعمل المر التي بسبب علة‬،‫ وربما ما بعدها‬14.10 ‫ في ظنسخة خادوم أوبنتو‬:‫تنويه‬

▲ | 159
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:LDAP ‫ عند طلبها بواسطة بروتوكول‬slapd-config ‫وهذا ما تبدو عليه شجرة معلوما ت الدليل‬

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn

dn: cn=config
dn: cn=module{0},cn=config
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: olcBackend={0}hdb,cn=config
dn: olcDatabase={-1}frontend,cn=config
dn: olcDatabase={0}config,cn=config
dn: olcDatabase={1}hdb,cn=config

:‫شرح القيود السابقة‬

.‫ العدادا ت العامة‬:cn=config •

.‫ وحدة نمنحنملة ديناميسكصيا‬:cn=module{0},cn=config •

.(hard-coded ) ‫ يحتوي على مخطط مستوى النظام‬:cn=schema,cn=config •

.(hard-coded) ‫ يحتوي على مخطط الساس‬:cn={0}core,cn=schema,cn=config •

.cosine ‫ المخطط‬:cn={1}cosine,cn=schema,cn=config •

.inetorgperson ‫ المخطط‬:cn={3}inetorgperson,cn=schema,cn=config •

.'hdb' ‫ ظنوع تخزين‬:olcBackend={0}hdb,cn=config •

،(frontend) ‫ قاعتتتدة بياظنتتتا ت الواجهتتتة‬:olcDatabase={-1}frontend,cn=config •

.‫الضبط الفتراضي لقواعد البياظنا ت الخرى‬

.(cn=config) slapd ‫ قاعدة بياظنا ت ضبط‬:olcDatabase={0}config,cn=config •

‫ ظنستتتتتتتتتخة قاعتتتتتتتتتدة البياظنتتتتتتتتتا ت الخاصتتتتتتتتتة بتتتتتتتتتك‬:olcDatabase={1}hdb,cn=config •

.(dc=example,dc=com)

▲ | 160
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫وهذا ما تبدو عليه شجرة معلوما ت الدليل ‪:dc=example,dc=com‬‬

‫‪ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn‬‬


‫‪dn: dc=example,dc=com‬‬
‫‪dn: cn=admin,dc=example,dc=com‬‬

‫شرح القيود السابقة‪:‬‬

‫‪ :dc=example,dc=com‬أساس ‪.DIT‬‬ ‫•‬

‫‪ :cn=admin,dc=example,dc=com‬المدير )‪ (rootDN‬لشتتجرة معلومتتا ت التتدليل هتتذه‬ ‫•‬

‫) ن‬
‫ضشبط أثناء تثبيت الحزمة(‪.‬‬

‫ج‪ .‬تعديل وملء قاعدة البيانات‬

‫لنضع بعض المحتويا ت في قاعدة البياظنا ت؛ حيث سنضيف التي‪:‬‬

‫عقدة اسمها ‪) People‬لتخزين المستخدمين(‪.‬‬ ‫•‬

‫عقدة اسمها ‪) Groups‬لتخزين المجموعا ت(‪.‬‬ ‫•‬

‫مجموعة اسمها ‪.miners‬‬ ‫•‬

‫مستخدم اسمه ‪.john‬‬ ‫•‬

‫▲‬ ‫|‬ ‫‪161‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:add_content.ldif ‫ ونسدمه‬LDIF ‫أظنشئ ملف‬

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=miners,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: miners

gidNumber: 5000
dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john

‫ فتتي دليلتتك متتع القيتتم المحليتتة؛ استتتخدم مجتتال ت الرقتتام السكتتبيرة؛‬gid ‫ و‬uid ‫ متتن المهتتم أدل تتصتتادم قيتتم‬:‫ملحظظظة‬
‫ فإظنتتك تستتمح أي ص‬،ldap ‫ فتتي‬gid ‫ و‬uid ‫ وبتسكتتبير قيتتم‬،5000 ‫فابتتدأ مثصل متتن‬
‫ضتتا بستتهولة التحسكتتم فتتي متتاذا يستتتطيع أن‬
.‫صل هذا الموضوع لحصقا‬
‫؛ سنف د‬ldap ‫ في مقابل ما يفعله مستخدم‬،‫يفعله المستخدم المحلي‬

▲ | 162
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫أضف المحتويا ت‬

ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

Enter LDAP Password: ********


adding new entry "ou=People,dc=example,dc=com"

adding new entry "ou=Groups,dc=example,dc=com"

adding new entry "cn=miners,ou=Groups,dc=example,dc=com"

adding new entry "uid=john,ou=People,dc=example,dc=com"

:ldapsearch ‫سنتحقق من إضافة المعلوما ت إضافصة صحيحصة باستخدام الداة‬

ldapsearch -x -LLL -b dc=example,dc=com 'uid=john' cn gidNumber

dn: uid=john,ou=People,dc=example,dc=com
cn: John Doe
gidNumber: 5000

:‫شرح ماذا حصل‬

.‫ الفتراضية‬SASL ‫ ربط بسيط؛ لن نتستخندم طريقة‬:-x •

.‫ ت إضافيصة‬
‫ تعطيل طباعة معلوما ت‬:-LLL •

.john ‫( للعثور على المستخدم‬filter) «‫ »نمنردشح‬:uid=john •

‫ طلتتب خاصتتيا ت معينتتة لظهارهتتا )القيمتة الفتراضتتية هتتي إظهتتار جميتتع‬:cn gidNumber •

.(‫الخاصيا ت‬

▲ | 163
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

slapd ‫ تعديل قاعدة بيانات‬.‫د‬

‫(؛‬slapd-config) slapd ‫يمسكتتن أن نتطنلتتب أو نتعتتندل شتتجرة دليتتل المعلومتتا ت الخاصتتة بضتتبط‬

:‫سنذكر هنا بعض المثلة‬

‫( إلتتتتى قاعتتتتدة بياظنتتتتا ت‬DbIndex ‫ لضتتتتافة »فهتتتترس« )خاصتتتتية‬idapmodify ‫استتتتتخدم المتتتتر‬

uid_index.ldif ‫(؛ أظنششتتئ ملصفتتا استتمه‬dc=example,dc=com ‫{ )التتتي هتتي‬1}hdb,cn=config

:‫فيه المحتويا ت التية‬

dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uid eq,pres,sub

:‫ثم ظندفذ المر‬

sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f uid_index.ldif

modifying entry "olcDatabase={1}hdb,cn=config"

:‫تستطيع تأكيد التغيير بهذه الطريقة‬

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \


cn=config '(olcDatabase={1}hdb)' olcDbIndex

dn: olcDatabase={1}hdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: uid eq,pres,sub

▲ | 164
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫لنضتتتتف الن مخطصطتتتتا )‪ ،(schema‬يجتتتتب أوصل أن تحتتتتنول إلتتتتى صتتتتيغة ‪LDIF‬؛ تستتتتتطيع إيجتتتتاد‬

‫مخططا ت نمحنولة‪ ،‬وغير نمحنولة في مجلد ‪./etc/ldap/schema‬‬

‫ملحظة‪ :‬حتذف المخططتتا ت متن قاعتدة بياظنتا ت ‪ slapd-config‬ليتس أمتصرا بستيصطا؛ تتدرب علتى إضتافة المخططتتا ت‬
‫على ظنظام خاص بالتجارب‪.‬‬

‫قبتتل إضتتافة أديتتة مخططتتا ت‪ ،‬يجتتب أن تتحقتتق متتن أديتتة مخططتتا ت قتتد ثدبنتتتت مستتبصقا )المخرجتتا ت‬

‫التية هي المخرجا ت الفتراضية ]‪:([out-of-the-box‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b‬‬


‫‪cn=schema,cn=config dn‬‬

‫‪dn:‬‬ ‫‪cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={0}core,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={1}cosine,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={2}nis,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={3}inetorgperson,cn=schema,cn=config‬‬

‫▲‬ ‫‪| 165‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ في المثال التي‬CORBA ‫سنضيف مخطط‬

:‫ يتضمن السطر التية‬schema_convert.conf ‫أظنششئ ملف ضبط التحويل المسمى‬

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/ldapns.schema
include /etc/ldap/schema/pmi.schema

.ldif_output ‫أظنششئ مجلد المخرجا ت‬

:‫حدد فهرس المخطط‬

slapcat -f schema_convert.conf -F ldif_output \


-n 0 | grep corba,cn=schema

cn={1}corba,cn=schema,cn=config

‫ السكائنتتا ت التتي لهتا ظنفتس الستتم الفريتد للب؛ فتإظنه سنينششتتئ فهرصستا لهتذا‬slapd (injects) «‫ عنتدما »يحقتن‬:‫ملحظة‬
.{X} :‫السكائن؛ ويحتوى الفهرس ضمن قوسين معقوفين‬

▲ | 166
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ للقيام بالتحويل‬slapcat ‫استخدم‬

slapcat -f schema_convert.conf -F ldif_output -n0 -H \


ldap:///cn={1}corba,cn=schema,cn=config -l cn=corba.ldif

.cn=corba.ldif ‫المخطط المحدول موجوةد الن في‬

:‫ حتى تصل إلى الخاصيا ت التية‬cn=corba.ldif ‫عددل‬

dn: cn=corba,cn=schema,cn=config
...
cn: corba

:‫أزل الن السطر التية من النهاية‬

structuralObjectClass: olcSchemaConfig
entryUUID: 52109a02-66ab-1030-8be2-bbf166230478
creatorsName: cn=config
createTimestamp: 20110829165435Z
entryCSN: 20110829165435.935248Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110829165435Z

.‫قد تختلف قيم العدادا ت عندك‬

:slapd-config ‫ لضافة مخطط جديد إلى شجرة معلوما ت دليل‬ldapadd ‫ استخدم‬،‫في النهاية‬

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn=corba.ldif

adding new entry "cn=corba,cn=schema,cn=config"

▲ | 167
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫تأكد من المخططا ت النمنحنملة‪:‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL‬‬


‫‪-H ldapi:/// -b cn=schema,cn=config dn‬‬

‫‪dn:‬‬ ‫‪cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={0}core,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={1}cosine,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={2}nis,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={3}inetorgperson,cn=schema,cn=config‬‬
‫‪dn:‬‬ ‫‪cn={4}corba,cn=schema,cn=config‬‬

‫ملحظة‪ :‬لسكي يستوثق العملء والتطبيقا ت الخارجية باستتخدام ‪ ،LDAP‬فتإن عليتك ضتبط كتل واحتد منهتم ليفعتل‬
‫ذلك؛ راجع توثيق تلك العملء لمعلوما ت ملئمة عنهم‪.‬‬

‫ه‪ .‬التسجيل )‪(Logging‬‬

‫ل غنتتى عتتن تفعيتتل تستتجيل ‪ slapd‬عنتتد استتتخدام تطبيقتتا ت تعتمتتد علتتى ‪ ،OpenLDAP‬لسكتتن‬

‫عليتتك تفعيلتته يتتدو صيا بعتتد تثتتبيت البرمجيتتا ت؛ وإذا لتتم تفعتتل ذلتتك‪ ،‬فستتتظهر رستتائل بدائيتتة غيتتر مفيتتدة‬

‫فقط في السجل ت؛ ونيفنعل التسجيل‪ ،‬كغيره من ضبط ‪ ،slapd‬عبر قاعدة بياظنا ت ‪.slapd-config‬‬

‫يتتتأتي ‪ OpenLDAP‬متتتع عتتتددة أظنظمتتتة فرعيتتتة للتستتتجيل )مستتتتويا ت(‪ ،‬تحتتتتوي كتتت ة‬
‫ل منهتتتا علتتتى‬

‫المستتتوى الدظنتتى منهتتا؛ مستتتوى جيتتد للتجربتتة هتتو ‪stats‬؛ هنالتتك المزيتتد متتن المعلومتتا ت حتتول الظنظمتتة‬

‫الفرعية المختلفة في صفحة دليل ‪.man slapd-config‬‬

‫▲‬ ‫‪| 168‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ بالمحتويا ت التية‬logging.ldif ‫أظنششئ ملف‬

dn: cn=config
changetype: modify
add: olcLogLevel
olcLogLevel: stats

:‫طدبق التعديل‬

sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif

‫وهذا ما سنينشتج كمديصة كبير صة متتن الستتجل ت؛ وربمتا تحتتتاج للعتتودة وتقليتتل درجتة الستتهاب عنتتدما‬

syslog ‫ لسكن ربما يجعل ضبط السهاب هذا محتترك‬،(in production) ‫يصبح ظنظامك ظنظاصما إظنتاجصيا‬

:‫ وقد يتجاوز بعضها دون تسجيله‬،‫في ظنظامك يعاظني من كثرة الرسائل‬

rsyslogd-2177: imuxsock lost 228 messages from pid 2547 due to


rate-limiting

:/etc/rsyslog.conf ‫؛ ضع في ملف‬rsyslog ‫قد تفسكر في تغيير ضبط‬

# Disable rate limiting


# (default is 200 messages in 5 seconds; below we make the 5
become 0)
$SystemLogRateLimitInterval 0

:rsyslog ‫ثم أعد تشغيل عفريت‬

sudo service rsyslog restart

▲ | 169
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫و‪ .‬التناسخ‬

‫تتزايتتد أهميتتة خدمتتة ‪ LDAP‬عنتتدما تتتزداد أظنظمتتة الشتتبسكا ت النمعنتشمتتدة عليهتتا؛ تسكتتون الممارستتا ت‬

‫العملية القياسية ‪-‬في مثل هذه البيئة‪ -‬هي بناء ‪ redundancy‬في ‪ LDAP‬لمنع توقف الختتدما ت إذا‬

‫لم يعد يستجيب ختادوم ‪LDAP‬؛ يتتم ذلتتك باستتخدام تناستخ ‪LDAP‬؛ ظنصتل إلتى التناستتخ باستتتخدام‬

‫محتتتترك ‪ Syncrepl‬؛ التتتتذي يستتتتمح بمزامنتتتتة التغيتتتترا ت باستتتتتخدام موديتتتتل »مستتتتتهلك‪-‬متتتتزود«؛ ظنتتتتوع‬

‫التناستتتخ التتتذي سنستتتتخدمه فتتتي هتتتذا السكتتتتاب هتتتو دمتتتج للنتتتوعين التييتتتن‪،refreshAndPersist :‬‬

‫و ‪delta-syncrepl‬؛ التذي نير شستل فيته المتزود القيتود إلى المستتهلك عنتد إظنشتائهم مباشترصة؛ بالضتافة‬

‫إلى أظنه ل نترنسل جميع القيود‪ ،‬وإظنما التغيرا ت التي حصلت فقط‪.‬‬

‫ضبط المزود‬

‫سنبدأ بضبط المزود )‪:(Provider‬‬

‫أظنششئ ملف ‪ LDIF‬بالمحتويا ت التية وسدمه ‪:provider_sync.ldif‬‬

‫‪# Add indexes to the frontend db.‬‬


‫‪dn: olcDatabase={1}hdb,cn=config‬‬
‫‪changetype: modify‬‬
‫‪add: olcDbIndex‬‬
‫‪olcDbIndex: entryCSN eq‬‬
‫‪-‬‬
‫‪add: olcDbIndex‬‬
‫‪olcDbIndex: entryUUID eq‬‬

‫‪#Load the syncprov and accesslog modules.‬‬


‫‪dn: cn=module{0},cn=config‬‬
‫‪changetype: modify‬‬
‫‪add: olcModuleLoad‬‬
‫‪olcModuleLoad: syncprov‬‬
‫‪-‬‬

‫▲‬ ‫|‬ ‫‪170‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

add: olcModuleLoad
olcModuleLoad: accesslog

# Accesslog database definitions


dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=example,dc=com
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart

# Accesslog db syncprov.
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE

# syncrepl Provider for primary db


dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE

# accesslog overlay definitions for primary db


dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE

# scan the accesslog DB every day, and purge entries older than
7 days
olcAccessLogPurge: 07+00:00 01+00:00

▲ | 171
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫غدير قيمة ‪ rootDN‬في ملف ‪ LDIF‬لنيطاشبق الذي عندك في الدليل‪.‬‬

‫ل يجتتتتتب تعتتتتتديل إعتتتتتدادا ت ‪ apparmor‬لبرمجيتتتتتة ‪ slapd‬لتحديتتتتتد موقتتتتتع قاعتتتتتدة بياظنتتتتتا ت‬

‫‪ ،accesslog‬لن الملف ‪ /etc/apparmor/local/usr.sbin.slapd‬يحتوي على السطر التية‪:‬‬

‫‪/var/lib/ldap/accesslog/ r,‬‬
‫‪/var/lib/ldap/accesslog/** rwk,‬‬

‫أظنششئ مجلصدا‪ ،‬وه د‬


‫يء ملف ضبط قاعدة البياظنا ت‪ ،‬وأعد تحميل ‪:apparmor‬‬

‫‪sudo -u openldap mkdir /var/lib/ldap/accesslog‬‬


‫\ ‪sudo -u openldap cp /var/lib/ldap/DB_CONFIG‬‬
‫‪/var/lib/ldap/accesslog‬‬
‫‪sudo service apparmor reload‬‬

‫أضف المحتويا ت الجديدة؛ وأعد تشغيل العفريت بسبب التعديل في ‪:apparmor‬‬

‫‪sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif‬‬


‫‪sudo service slapd restart‬‬

‫ضشبنط المزود بنجاح‪.‬‬


‫لقد ن‬

‫ضبط المستهلك‬

‫عليك الن ضبط المستهلك‪.‬‬

‫تثتتتبيت البرمجيتتتة باتبتتتاع تعليمتتتا ت قستتتم »التثتتتبيت«؛ وتأكتتتد أن قاعتتتدة بياظنتتتا ت ‪slapd-config‬‬

‫مماثلة للمزود؛ وتحديصدا تأكد من أن المخططا ت ولحقة قاعدة البياظنا ت هي ظنفسها‪.‬‬

‫▲‬ ‫‪| 172‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:consumer_sync.ldif ‫ بالمحتويا ت التية وسدمه‬LDIF ‫أظنششئ ملف‬

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcSyncRepl
olcSyncRepl: rid=0 provider=ldap://ldap01.example.com
bindmethod=simple binddn="cn=admin,dc=exa
credentials=secret searchbase="dc=example,dc=com"
logbase="cn=accesslog"
logfilter="(&(objectClass=auditWriteObject)(reqResult=0))"
schemachecking=on
type=refreshAndPersist retry="60 +" syncdata=accesslog
-
add: olcUpdateRef
olcUpdateRef: ldap://ldap01.example.com

:‫تأكد أن قيم الخاصيا ت التية صحيحة‬

.(IP ‫ أو عنوان‬-‫ في هذا المثال‬ldap01.example.com- ‫ )اسم مضيف المزود‬provider •

.(‫ )السم الفريد للمدير الذي تستخدمه‬binddn •

.(‫ )كلمة مرور المدير الذي تستخدمه‬credentials •

.(‫ )لحقة قاعدة البياظنا ت التي تستخدمها‬searchbase •

.(‫ لخادوم المزود‬IP ‫ )اسم مضيف أو عنوان‬olcUpdateRef •

‫ يجب أن يسكون لسكل مستهلك رقم‬،‫« عدد من ثلثة أرقام يعرف النسخة‬Replica Id») rid •

.(‫ واحد على القل‬rid

▲ | 173
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫أضف المحتويا ت الجديدة‪:‬‬

‫‪sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif‬‬

‫ن‬ ‫ن‬
‫ي البياظنتتتتتتتتتتا ت )ذاتتتتتتتتتتت د‬
‫ي اللحقتتتتتتتتتتة‬ ‫لقتتتتتتتتتتد اظنتهيتتتتتتتتتتت‪ ،‬يجتتتتتتتتتتب أن يبتتتتتتتتتتدأ الن تزامتتتتتتتتتتن قاعتتتتتتتتتتدت د‬

‫‪.(dc=example,dc=com‬‬

‫التختبار‬

‫بعد بدء الستنساخ‪ ،‬تستطيع مراقبته بتشغيل المر‪:‬‬

‫‪ldapsearch -z1 -LLLQY EXTERNAL -H ldapi:/// -s base contextCSN‬‬

‫‪dn: dc=example,dc=com‬‬
‫‪contextCSN: 20120201193408.178454Z#000000#000#000000‬‬

‫عنتتتتتتدما تتوافتتتتتتق المخرجتتتتتتا ت فتتتتتتي المتتتتتتزود والمستتتتتتتهلك )‪20120201193408.178454Z#‬‬

‫‪ 000000#000#000000‬في المثال السابق( في كل الجهازين؛ فستسكون عملية الستنساخ قد تنمت؛‬

‫وفي كتل مترة نيجترى فيها تعتديل فتي المتزود‪ ،‬فتإن القيمتة ستنتعندل وكتذلك يجتب أن نتعتندل قيمة ظناتتج‬

‫المر السابق في المستهلك أو المستهلسكين‪.‬‬

‫إذا كان اتصالك ضعيصفا‪ ،‬أو ك ان حجتم قاعتدة بياظنتا ت ‪ ldap‬كتبيصرا‪ ،‬فربمتا يحتتاج ‪contextCSN‬‬

‫في المستهلك وق صتا ليطابق مثيله فتي المتزود؛ لسكنتك تعلتم أن العمليتة قيتد الجتراء لن ‪contextCSN‬‬

‫في المستهلك يزداد مع الزمن‪.‬‬

‫▲‬ ‫‪| 174‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫إذا كتتان ‪ contextCSN‬فتتي المستتتهلك مفقتتو صدا‪ ،‬أو كتتان ل يطتتابق المتتزود؛ فعليتتك إيقتتاف العمليتتة‬

‫والبحث عن سبب المشسكلة قبل الكمال‪ ،‬جرب التحقق من ستتجل ت ‪ (syslog) slapd‬وملفتتا ت ‪auth‬‬

‫في المتزود للتأكتد فيمتا إذا كتاظنت طلبتا ت الستتيثاق متن المستتهلك قتتد ظنجحتتت أم ل؛ وفيمتا إذا أع اد ت‬

‫طلبياته للحصول على بياظنا ت )ستشبه عبارا ت ‪ ldapsearch‬كثيصرا( أدية أخطاء‪.‬‬

‫لختبار إذا كان يعمل؛ جرب طلب ‪ DN‬في قاعدة البياظنا ت في المستهلك‪:‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL‬‬


‫‪-H ldapi:/// -b dc=example,dc=com dn‬‬

‫ي »‪«People‬‬ ‫ن‬
‫يجب أن تشاهد المستخدم »‪ «john‬والمجموعتتة »‪ «miners‬بالضتتافة إلتتى عقتتدت د‬

‫و » ‪.«Groups‬‬

‫ز‪ .‬التحكم افي الوصول‬

‫إدارة أي ظنوع من الوصتول ) قتتراءة‪ ،‬أو كتابتة ‪ ...‬إلتخ‪ (.‬التتي يجتب أن يحصتل عليهتا المستتخدمون‬

‫للمتتتوارد تتتتدعى »التحسكتتتم فتتتي الوصتتتول« ) ‪(access control‬؛ تعليمتتتا ت الضتتتبط المستتتتخدمة تستتتمى‬

‫»قوائم التحسكم في الوصول« )‪ (access control lists‬أو ‪.ACL‬‬

‫عندما نظنثدبتت حزمتة ‪ ،slapd‬فسنتضت نبط قتوائم مختلفتة للتحسكتم فتي الوصتول؛ ستنلقي ظنظترصة علتى‬

‫بعتتتض ظنتائتتتج هتتتذه القيتتم الفتراضتتية؛ وسنحصتتتل بتتذلك علتتى فسكتترة عتتتن كيفيتتة عمتتل قتتوائم التحسكتتم‬

‫بالوصول وكيفية ضبطها‪.‬‬

‫▲‬ ‫‪| 175‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫لسكي ظنحصل على ‪ ACL‬فعال لطلبية ‪ ،LDAP‬فسنحتاج إلى أن ظننظر إلى سجل ت قوائم التحسكتتم‬

‫بالوصتتول لقاعتتدة البياظنتتا ت التتتي نتجتترى الطلبيتتا ت عليهتتا‪ ،‬بالضتتافة إلتتى واجهتتة أماميتتة )‪(frontend‬‬

‫خاصة لقاعدة البياظنا ت؛ قوائم التحسكم بالوصول المتعلقة بالنقطة الخيرة تسلك ستتلوصكا افتراضتتصيا فتتي‬

‫حالتتة لتتم تتطتتابق النقطتتة الولتتى؛ الواجهتتة الماميتتة لقاعتتدة البياظنتتا ت هتتي ثتتاظني متتا »تنظتتر« إليتته قتتوائم‬

‫التحسكتتم بالوصتتول؛ وأول متتا ستتنتطدبقه قتتوائم التحسكتتم بالوصتتول هتتو أول متتا نستتيطانبق )» ‪first match‬‬

‫ي قتتتوائم التحسكتتتم بالوصتتتول الستتتابنقين؛ ستتتتعطي الوامتتتر التيتتتة‪ ،‬علتتتى التتتتوالي‬


‫‪ («wins‬بيتتتن مصتتتدنر د‬

‫وبالترتيب‪ ،‬قيم ‪ ACL‬لقاعدة بياظنتتا ت ‪ («dc=example,dc=com») hdb‬والقيتتم المتعلقتتة بالواجهتتة‬

‫المامية لقاعدة البياظنا ت‪:‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b‬‬


‫‪cn=config '(olcDatabase={1}hdb)' olcAccess‬‬

‫‪dn: olcDatabase={1}hdb,cn=config‬‬
‫‪olcAccess: {0}to attrs=userPassword,shadowLastChange by self‬‬
‫‪write by anonymous‬‬
‫‪auth by dn="cn=admin,dc=example,dc=com" write by * none‬‬
‫‪olcAccess: {1}to dn.base="" by * read‬‬
‫‪olcAccess: {2}to * by self write by‬‬
‫‪dn="cn=admin,dc=example,dc=com" write by * read‬‬

‫ملحظة‪ :‬يملك ‪ rootDN‬دائصما جميع الحقوق لقاعدة بياظناته؛ تضمينها فتي ق وائم التحسكتم بالوص ول يتوفر توضتيصحا‬
‫للضبط؛ لسكنه يؤدي إلى تخفيض في أداء ‪.slapd‬‬

‫▲‬ ‫‪| 176‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \


cn=config '(olcDatabase={-1}frontend)' olcAccess

dn: olcDatabase={-1}frontend,cn=config
olcAccess: {0}to * by
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,
cn=external,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read

:‫أول قائمة تحسكم بالوصول هي مهمة ومحورية‬

olcAccess: {0}to attrs=userPassword,shadowLastChange by self


write by anonymous auth by dn="cn=admin,dc=example,dc=com"
write by * none

:‫يمسكن أن يعبر عنها بطريقة أخرى لتسهيل فهمها‬

to attrs=userPassword
by self write
by anonymous auth
by dn="cn=admin,dc=example,dc=com" write
by * none

to attrs=shadowLastChange
by self write
by anonymous auth
by dn="cn=admin,dc=example,dc=com" write
by * none

▲ | 177
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫تركيبة قوائم التحسكم بالوصول )هنالك قاعدتين( تجبر ما يلي‪:‬‬

‫الوصتتول المجهتتول '‪ 'auth‬متتوفر إلتتى خاصتتية ‪ userPassword‬لسكتتي يتتتم التصتتال البتتتدائي؛‬

‫ربمتتا هتتذا عسكتتس البتتديهي‪ ،‬ظنحتتتاج إلتتى '‪ 'by anonymous auth‬حتتتى لتتو لتتم ظنسكتتن ظنريتتد الوصتتول‬

‫المجهتتول إلتتى شتتجرة بياظنتتا ت التتدليل‪ .‬بعتتد أن تتصتتل النهايتتة البعيتتدة‪ ،‬فعنتتدها يمسكتتن أن يقتتع الستتتيثاق‬

‫)اظنظر النقطة التية(‪.‬‬

‫يمسكتتن أن يحتتدث الستتتيثاق لن جميتتع المستتتخدمين لتتديهم وصتتول ' ‪) 'read‬بستتبب '‪by self‬‬

‫‪ ('write‬لخاصية ‪.userPassword‬‬

‫عتتدا ذلتتك‪ ،‬فل يمسكتتن الوصتتول إلتتى خاصتتية ‪ userPassword‬متتن أي مستتتخدمين آخريتتن؛ متتع‬

‫استثناء ‪ ،rootDN‬الذي يملك وصوصل كامصل إليها‪.‬‬

‫لسكتتتي يغيتتتر المستتتتخدمون كلمتتتا ت مرورهتتتم‪ ،‬باستتتتخدام ‪ passwd‬أو غيرهتتتا متتتن الدوا ت‪ ،‬فتتتإن‬

‫خاصية ‪ shadowLastChange‬يجب أن تسكون متاحصة بعد الستيثاق من المستخدم‪.‬‬

‫يمسكن البحث في شجرة ‪ DIT‬السابقة بسبب '‪ 'by * read‬في‪:‬‬

‫* ‪to‬‬
‫‪by self write‬‬
‫‪by dn="cn=admin,dc=example,dc=com" write‬‬
‫‪by * read‬‬

‫إذا ل م يسكتن هتذا مرغوصبتا فعليتك تعتديل ‪ACL‬؛ ولسكتي يسكتون الستتيثاق جبرصيتا أثن اء طلتب ‪،bind‬‬

‫فيمسكنك بشسكل بديل )أو بالمشاركة مع ‪ ACL‬المعدلة( استخدام التعليمة '‪.'olcRequire: authc‬‬

‫▲‬ ‫‪| 178‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫وكما نذشكر ستابصقا‪ ،‬ل يوجتد حستاب إدارة نمننشتأ لقاعتدة بياظنتا ت ‪ .slapd-config‬لسكتن هنالتك هوي ة‬

‫‪ SASL‬التي تملك الوصول السكامل إليها؛ والتي تمثل ‪ root‬أو ‪sudo‬؛ ها هي ذا‪:‬‬

‫‪dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth‬‬

‫سيعرض المر التي قوائم التحسكم بالوصول )‪ (ACLs‬لقاعدة بياظنا ت ‪:slapd-config‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b‬‬


‫‪cn=config '(olcDatabase={0}config)' olcAccess‬‬

‫‪dn: olcDatabase={0}config,cn=config‬‬
‫‪olcAccess: {0}to * by‬‬
‫‪dn.exact=gidNumber=0+uidNumber=0,cn=peercred,‬‬
‫‪cn=external,cn=auth manage by * break‬‬

‫ولمتتتا كتتتاظنت هتتتذه هويتتتة ‪ ،SASL‬فإظننتتتا ظنحتتتتاج إلتتتى استتتتخدام آليتتتة ‪ SASL‬عنتتتدما ظنستتتتخدم أداة‬

‫‪ LDAP‬كما رأينا ذلك للعديد من المرا ت في هذا السكتاب؛ هتتذه الليتتة خارجيتة؛ اظنظتتر إلتتى المتتر الستتابق‬

‫كمثال‪ ،‬لحظ أظنه‪:‬‬

‫يجب أن تستخدم ‪ sudo‬لسكي تصبح بهوية الجذر لسكي تطابق قوائم التحسكم بالوصول‪.‬‬ ‫‪.1‬‬

‫اللية الخارجية )‪ (EXTERNAL‬تعمل باستخدام ‪) IPC‬مقابل ظنطاقا ت ‪ (UNIX‬التذي يعنتي‬ ‫‪.2‬‬

‫أظنه عليك استخدام صيغة ‪.ldapi URI‬‬

‫▲‬ ‫‪| 179‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫طريقة موجزة للحصول على جميع قوائم التحسكم بالوصول‪:‬‬

‫\ ‪sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b‬‬


‫‪cn=config '(olcAccess=*)' olcAccess olcSuffix‬‬

‫هنالتتك المزيتتد متتن المتتور التتتي يجتتب الحتتديث عنهتتا فتتي موضتتوع التحسكتتم فتتي الوصتتول؛ راجتتع‬

‫صفحة الدليل ‪.man slapd.access‬‬

‫ح‪TLS .‬‬

‫عنتتد الستتتيثاق لختتادوم ‪ OpenLDAP‬فمتتن الفضتتل استتتخدام جلستتة مشتتفرة؛ ويمسكتتن أن يتتتم‬

‫ذلك باستخدام أمن طبقة النقل ) ‪.([TLS] Transport Layer Security‬‬

‫هنا‪ ،‬سنسكون »سلطة الشهادة« )‪ (Certificate Authority‬الخاصة بنتتا وبعتتدها سنننششتتئ وظنوقتتع‬

‫صنرصفا بمسكتبة ‪ ،gnutls‬فسنستخدم الداة ‪ certtool‬لكمال‬


‫شهادة خادوم ‪LDAP‬؛ ولما كان ‪ slapd‬نم ن‬

‫هذه المهام‪.‬‬

‫‪ .1‬ثبت حزمنت د‬
‫ي ‪ gnutls-bin‬و ‪:ssl-cert‬‬

‫‪sudo apt-get install gnutls-bin ssl-cert‬‬

‫‪ .2‬أظنششئ مفتاصحا خا ص‬
‫صا لسلطة الشهادة‪:‬‬

‫\ ‪sudo sh -c "certtool‬‬
‫"‪--generate-privkey > /etc/ssl/private/cakey.pem‬‬

‫▲‬ ‫|‬ ‫‪180‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ لتعريف سلطة الشهادة‬/etc/ssl/ca.info ‫القالب‬/‫ أظنشئ الملف‬.3

cn = Example Company
ca
cert_signing_key

:‫ أظنششئ شهادة سلطة شهادا ت موقعة ذاتصيا‬.4

sudo certtool --generate-self-signed \


--load-privkey /etc/ssl/private/cakey.pem \
--template /etc/ssl/ca.info \
--outfile /etc/ssl/certs/cacert.pem

:‫صا للخادوم‬
‫ اصنع مفتاصحا خا ص‬.5

sudo certtool --generate-privkey \


--bits 1024 \
--outfile /etc/ssl/private/ldap01_slapd_key.pem

‫ في اسم الملف باستتم مضتيف خادومتتك؛ ستستتاعدك تستمية الشتتهادة والمفتتتاح للمضتتيف‬ldap01 ‫ استبدل‬:‫ملحظة‬
.‫والخدمة التي تستخدمها في توضيح المور‬

:‫ الذي يحتوي‬/etc/ssl/ldap01.info ‫ أظنشئ ملف المعلوما ت‬.6

organization = Example Company


cn = ldap01.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 3650

.‫ عددل هذه القيمة وفصقا لمتطلباتك‬،‫الشهادة السابقة صالحة لعشرة أعوام‬

▲ | 181
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ أظنششئ شهادة الخادوم‬.7

sudo certtool --generate-certificate \


--load-privkey /etc/ssl/private/ldap01_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/cacert.pem \
--load-ca-privkey /etc/ssl/private/cakey.pem \
--template /etc/ssl/ldap01.info \
--outfile /etc/ssl/certs/ldap01_slapd_cert.pem

‫ بالمحتويا ت التية )عتتدلها وفصقتا لمتطلباتتتك؛ حيتتث اعتتتبر ت أمثلتنتا‬certinfo.ldif ‫أظنشئ الملف‬

:(https://www.cacert.org ‫أن الشهادا ت نمننشأة باستخدام‬

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem

:slapd-config ‫ عبر قاعدة بياظنا ت‬TLS ‫ عن عمل‬slapd ‫ لخبار‬ldapmodify ‫استخدم المر‬

sudo ldapmodify -Y EXTERNAL \


-H ldapi:/// -f /etc/ssl/certinfo.ldif

‫ لسكي‬/etc/default/slapd ‫ في‬ldaps:// ‫وعلى ظنقيض العتقاد الشائع؛ ل تحتاج إلى استخدام‬

:‫ كل ما عليك امتلكه هو‬،‫تستخدم التشفير‬

SLAPD_SERVICES="ldap:/// ldapi:///"

▲ | 182
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ملحظظظة‪ :‬أصتتبح ‪ LDAP‬عتبر ‪ (dlaps://) TLS/SSL‬مهجتوصرا لتفضتيل ‪ ،StartTLS‬يشتير الخيتر إلتى جلستة ‪LDAP‬‬
‫)تستمع على منفذ ‪ TCP‬ذي الرقتم ‪ (389‬التتي تصتبح محميتصة بواستطة ‪TLS/SSl‬؛ حيتث ‪- LDAPS‬مثتل ‪ -HTTPS‬هتو‬
‫بروتوكول منفصل مشفر منذ البداية )‪ (encrypted-from-the-start‬الذي يعمل على منفذ ‪ TCP‬ذي الرقم ‪.636‬‬

‫اضبط الملسكية والذوظنا ت‪:‬‬

‫‪sudo‬‬ ‫‪adduser openldap ssl-cert‬‬


‫‪sudo‬‬ ‫‪chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem‬‬
‫‪sudo‬‬ ‫‪chmod g+r /etc/ssl/private/ldap01_slapd_key.pem‬‬
‫‪sudo‬‬ ‫‪chmod o-r /etc/ssl/private/ldap01_slapd_key.pem‬‬

‫أعد تشغيل خدمة ‪:OpenLDAP‬‬

‫‪sudo service slapd restart‬‬

‫تحقق من سجل ت المضيف )‪ (/var/log/syslog‬لترى إن بدأ تشغيل الخادوم بنجاح‪.‬‬

‫ط‪ .‬التناسخ و ‪TLS‬‬

‫إذا ضتت نبطت التناستتخ بيتتن الختتواديم‪ ،‬فمتتن الممارستتا ت الشتتائعة هتتي تشتتفير ) ‪ (StartTLS‬بياظنتتا ت‬

‫النسخ المارة في الشبسكة لتفادي التنصت عليها؛ وهذا منفصل عتتن استتتخدام التشتتفير والستتتيثاق كمتتا‬

‫فعلنا سابصقا؛ سنبني في هذا القسم على استيثاق ‪.TLS‬‬

‫سنفترض هنا أظنك ضبطت الستنساخ بين المزود والمستهلك وفصقتتا للقستتم »التناستتخ«؛ وضتتبطت‬

‫‪ TLS‬للستيثاق في المزود وفصقا للقسم »‪.«TLS‬‬

‫▲‬ ‫‪| 183‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫وكما ذكر سابصقا؛ هدف التناسخ )بالنسبة لنا( هو أن تسكون خدمة ‪ LDAP‬ذا ت إتاحية كبيرصة؛ ولدما‬

‫كنتتا ظنستتتخدم ‪ TLS‬للستتتيثاق فتتي المتتزود فإظننتتا ظنحتتتاج إلتتى ظنفتتس المتتر فتتي المستتتهلك؛ بالضتتافة إلتتى‬

‫ذلتتك‪ ،‬ظنريتتد أن تسكتتون بياظنتتا ت الستنستتاخ المنقولتتة مشتتفرصة‪ ،‬ومتتا بقتتي لنيفنعتتل هتتو إظنشتتاء مفتتتاح وشتتهادة‬

‫للمستتتهلك ثتتم الضتتبط وف صقتتا لتتذلك‪ ،‬وستتنولد المفتتتاح‪ /‬الشتتهادة فتتي المتتزود؛ لسكتتي ظنتجنتتب إظنشتتاء شتتهادة‬

‫أخرى لسلطة الشهادا ت‪ ،‬ثم سننقل ما يلزمنا إلى المستهلك‪.‬‬

‫افي المزود‪:‬‬

‫أظنششئ مجلصدا )الذي سيستخدم في النقل النهائي(‪ ،‬ثم ودلد مفتاح المستهلك الخاص‪:‬‬

‫‪mkdir ldap02-ssl‬‬
‫‪cd ldap02-ssl‬‬
‫\ ‪sudo certtool --generate-privkey‬‬
‫\ ‪--bits 1024‬‬
‫‪--outfile ldap02_slapd_key.pem‬‬

‫أظنشئ ملف المعلوما ت ‪ ldap02.info‬للخادوم المستهلك‪ ،‬وعددل قيمه وفصقا لمتطلباتك‪:‬‬

‫‪organization = Example Company‬‬


‫‪cn = ldap02.example.com‬‬
‫‪tls_www_server‬‬
‫‪encryption_key‬‬
‫‪signing_key‬‬
‫‪expiration_days = 3650‬‬

‫▲‬ ‫‪| 184‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫أظنششئ شهادة المستهلك‬

sudo certtool --generate-certificate \


--load-privkey ldap02_slapd_key.pem \
--load-ca-certificate /etc/ssl/certs/cacert.pem \
--load-ca-privkey /etc/ssl/private/cakey.pem \
--template ldap02.info \
--outfile ldap02_slapd_cert.pem

:‫احصل على ظنسخة من شهادة سلطة الشهادا ت‬

cp /etc/ssl/certs/cacert.pem .

‫ )عتتددل المتتر‬scp ‫ إلى المستهلك؛ حيتتث استتتخدمنا هنتتا‬ldap02-ssl ‫ اظنقل مجلد‬،‫لقد اظنتهينا الن‬

:(‫وفصقا لمتطلباتك‬

cd ..
scp -r ldap02-ssl user@consumer:

:‫افي المستهلك‬

:TLS ‫ضبط استيثاق‬

sudo apt-get install ssl-cert


sudo adduser openldap ssl-cert
sudo cp ldap02_slapd_cert.pem cacert.pem /etc/ssl/certs
sudo cp ldap02_slapd_key.pem /etc/ssl/private
sudo chgrp ssl-cert /etc/ssl/private/ldap02_slapd_key.pem
sudo chmod g+r /etc/ssl/private/ldap02_slapd_key.pem
sudo chmod o-r /etc/ssl/private/ldap02_slapd_key.pem

▲ | 185
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:(‫ وفيه المحتويا ت التية )عددلها وفصقا لمتطلباتك‬/etc/ssl/certinfo.ldif ‫أظنشئ الملف‬

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap02_slapd_cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap02_slapd_key.pem

:slapd-config ‫اضبط قاعدة بياظنا ت‬

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif

.(SLAPD_SERVICES) ‫ في المزود‬/etc/default/slapd ‫اضبط‬

:‫افي المستهلك‬

‫ الموجودة مسبصقا بتتبتتع‬olcSyncrepl ‫ وعددل خاصية‬،‫ للتناسخ من جهة المستهلك‬TLS ‫اضبط‬

.‫ سنرى للمرة الولى كيف ظنعدل قيمة خاصية ما‬،‫؛ وبفعل ذلك‬TLS ‫بعض خيارا ت‬

▲ | 186
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ بالمحتويا ت التية‬consumer_sync_tls.ldif ‫أظنشئ الملف‬

dn: olcDatabase={1}hdb,cn=config
replace: olcSyncRepl
olcSyncRepl: rid=0 provider=ldap://ldap01.example.com
bindmethod=simple
binddn="cn=admin,dc=example,dc=com" credentials=secret
searchbase="dc=example,dc=com"
logbase="cn=accesslog"
logfilter="(&(objectClass=auditWriteObject)(reqResult=0))"
schemachecking=on type=refreshAndPersist retry="60 +"
syncdata=accesslog
starttls=critical tls_reqcert=demand

StartTLS ‫ أن علتتى المستتتهلك استتتخدام‬،‫ علتتى التتتوالي وبتتالترتيب‬،‫الخيتتارا ت الضتتافية تحتتدد‬

‫ ولحظ أي ص‬،‫ مطلوبةة للتحقق من هوية المزود‬CA ‫وأن شهادة‬


‫ لتعتتديل قيتم خاصتية متا‬LDIF ‫ضا صيغة‬

.('replace ')

:‫ظندفذ هذه التعديل ت‬

sudo ldapmodify -Y EXTERNAL \


-H ldapi:/// -f consumer_sync_tls.ldif

:slapd ‫ثم أعد تشغيل‬

sudo service slapd restart

▲ | 187
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫على المزود‪:‬‬

‫تأكد من أن جلسة ‪ TLS‬قتتد بتتدأ ت؛ وذلتتك عتتبر الستتجل ‪ ،/var/log/syslog‬بتافتراض أظنتتك أعتتد ت‬

‫مستوى التسجيل إلى '‪ ،'conns‬وعليه سترى رسائل شبيهة بالتي‪:‬‬

‫‪slapd[3620]: conn=1047 fd=20 ACCEPT from‬‬


‫)‪IP=10.153.107.229:57922 (IP=0.0.0.0:389‬‬
‫‪slapd[3620]: conn=1047 op=0 EXT oid=1.3.6.1.4.1.1466.20037‬‬
‫‪slapd[3620]: conn=1047 op=0 STARTTLS‬‬
‫=‪slapd[3620]: conn=1047 op=0 RESULT oid= err=0 text‬‬
‫‪slapd[3620]: conn=1047 fd=20 TLS established tls_ssf=128‬‬
‫‪ssf=128‬‬
‫‪slapd[3620]: conn=1047 op=1 BIND‬‬
‫‪dn="cn=admin,dc=example,dc=com" method=128‬‬
‫‪slapd[3620]: conn=1047 op=1 BIND‬‬
‫‪dn="cn=admin,dc=example,dc=com" mech=SIMPLE ssf=0‬‬
‫‪slapd[3620]: conn=1047 op=1 RESULT tag=97 err=0 text‬‬

‫ي‪ .‬استيثاق ‪LDAP‬‬

‫بعتتد أن أصتتبح عنتتدك ختتادوم ‪ LDAP‬يعمتتل جيتتصدا‪ ،‬فستتتحتاج إلتتى تثتتبيت مسكتبتتا ت علتتى جهتتاز‬

‫العميل التي تعلم كيف ومتى عليها أن تتصل إلى الخادوم؛ يتم ذلك في أوبنتو تقليدصيا بتثبيت حزمة‬

‫ ت أخرى‪ ،‬وستساعدك في خطوة الضبط؛ ثبت الن الحزمة‪:‬‬


‫‪libnss-ldap‬؛ ستجلب هذه الحزمة أدوا ت‬

‫‪sudo apt-get install libnss-ldap‬‬

‫ ت حول خادوم ‪LDAP‬؛ إذا ارتسكبت خطصأ هنا‪ ،‬يمسكنك المحاولة مرة أخرى بالمر‪:‬‬
‫سنتسأل عن معلوما ت‬

‫‪sudo dpkg-reconfigure ldap-auth-config‬‬

‫ستظهر ظنتائج مربع الحوار السابق في ملف ‪ ،/etc/ldap.conf‬إذا تطنلتتب الختتادوم خيتتارا ت‬
‫ ت غيتتر‬

‫موجودة في القائمة‪ ،‬فعليك تعديل هذا الملف وفصقا لها‪.‬‬

‫▲‬ ‫‪| 188‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫اضبط ‪ LDAP‬لستخدامه مع ‪:NSS‬‬

‫‪sudo auth-client-config -t nss -p lac_ldap‬‬

‫اضبط النظام لستخدام ‪ LDAP‬للستيثاق‪:‬‬

‫‪sudo pam-auth-update‬‬

‫اختر ‪ LDAP‬وأدية آليا ت استيثاق أخرى قد تحتاج لها من القائمة‪.‬‬

‫تستطيع الن تسجيل الدخول بتصاريح مبنية على ‪.LDAP‬‬

‫سيحتاج عملء ‪ LDAP‬إلى الشتتارة إلتتى عتتددة ختتواديم إذا ناستتتخشدم الستنستاخ؛ يجتتب أن تضتتع‬

‫شيصئا شبيصها بالسطر التي في ملف ‪:/etc/ldap.conf‬‬

‫‪uri ldap://ldap01.example.com ldap://ldap02.example.com‬‬

‫إذا نظنشفنذ ت مهلة )‪ (timeout‬الطلب‪ ،‬فسيحاول العميل الوصول إلتتى المستتتهلك )‪ (ldap02‬إذا لتتم‬

‫يستجيب المزود )‪.(ldap01‬‬

‫إذا كنتتت تريتتد استتتخدام ‪ LDAP‬لتخزيتتن مستتتخدمي ستتامبا‪ ،‬فتتإن عليتتك ضتتبط ستتامبا ليستتتوثق‬

‫عبر ‪ ،LDAP‬راجع القسم »استخدام سامبا مع ‪ «LDAP‬لمزيد من المعلوما ت‪.‬‬

‫ملحظظظة‪ :‬بتتديل عتتن حزمتتة ‪ libnss-ldap‬هتتي حزمتتة ‪libnss-ldapd‬؛ التتتي ستتتجلب معهتتا حزمتتة ‪ nscd‬التتذي قتتد‬
‫ل ظنرغب فيها؛ احذفها ببساطة بعد التثبيت‪.‬‬

‫▲‬ ‫‪| 189‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ إدارة المستخدمين والمجموعات‬.‫ك‬

‫ لسكتتن السلستتلة السكتتبيرة متتن العتتدادا ت‬،‫ متتع أدوا ت كافيتتة لدارة التتدليل‬ldap-utils ‫تتتأتي حزمتتة‬

‫ علتتى ستتسكربتا ت متعلقتتة بهتتذه الدوا ت‬ldapscripts ‫المطلوبة قد تصدعب استتتخدامها؛ تحتتتوي حزمتتة‬

.‫التي يجدها بعض الشخاص أسهل في الستخدام‬

:‫ثدبت الحزمة‬

sudo apt-get install ldapscripts

:‫ حتى يصبح شبيصها بالتي‬/etc/ldapscripts/ldapscripts.conf ‫ثم عددل الملف‬

SERVER=localhost
BINDDN='cn=admin,dc=example,dc=com'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=example,dc=com'
GSUFFIX='ou=Groups'
USUFFIX='ou=People'
MSUFFIX='ou=Computers'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

:‫ الوصول إلى الدليل‬rootDN ‫ لسكي يستطيع‬ldapscripts.passwd ‫أظنششئ الن الملف‬

sudo sh -c "echo -n 'secret' > \


/etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd

.«secret» ‫ بدصل من‬rootDN ‫ ضع كلمة المرور الخاصة بمستخدم‬:‫ملحظة‬

▲ | 190
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫أصبحت السسكربتا ت جاهز صة لدارة دليلك؛ هذه بضعة أمثلة حول طريقة استخدامها‪:‬‬

‫إظنشاء مستخدم جديد‪:‬‬

‫‪sudo ldapadduser george example‬‬

‫هذا سنينششئ مستخدصما بمعدرف ‪ george‬ويضبط مجموعة المستخدم الرئيسية إلى ‪.example‬‬

‫تغيير كلمة مرور المستخدم‪:‬‬

‫‪sudo ldapsetpasswd george‬‬


‫‪Changing password for user‬‬
‫‪uid=george,ou=People,dc=example,dc=com‬‬
‫‪New Password:‬‬
‫‪New Password (verify):‬‬

‫حذف مستخدم‪:‬‬

‫‪sudo ldapdeleteuser george‬‬

‫إضافة مجموعة‪:‬‬

‫‪sudo ldapaddgroup qa‬‬

‫حذف مجموعة‪:‬‬

‫‪sudo ldapdeletegroup qa‬‬

‫▲‬ ‫|‬ ‫‪191‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫إضافة مستخدم إلى مجموعة‬

sudo ldapaddusertogroup george qa

.george ‫ ذا ت القيمة‬qa ‫ لمجموعة‬memberUid ‫عليك أن ترى الن خاصية‬

:‫إزالة مستخدم من مجموعة‬

sudo ldapdeleteuserfromgroup george qa

.qa ‫ من المجموعة‬memberUid ‫يجب أن تزال الن الخاصية‬

‫ بإضتتافة أو حتتتذف أو استتتتبدل خاصتتيا ت المستتتتخدم؛‬ldapmodifyuser ‫يستتتمح لتتتك ستتتسكربت‬

:‫ على سبيل المثال‬،ldapmodify ‫يستخدم هذا السسكربت البنية العامة لداة‬

sudo ldapmodifyuser george


# About to modify the following entry :
dn: uid=george,ou=People,dc=example,dc=com
objectClass: account
objectClass: posixAccount
cn: george
uid: george
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/george
loginShell: /bin/bash
gecos: george
description: User account
userPassword::
e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk=

# Enter your modifications here, end with CTRL-D.


dn: uid=george,ou=People,dc=example,dc=com
replace: gecos
gecos: George Carlin

.«George Carlin» ‫ باسم‬gecos ‫يجب أن يصبح الن المستخدم‬

▲ | 192
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ هتتتو ظنظتتتام القتتتوالب؛ تستتتمح لتتتك القتتتوالب بتخصتتتيص‬ldapscripts ‫ميتتتزة جميلتتتة متتتن ميتتتزا ت‬

‫ عتتددل‬،user ‫ لتفعيتتل قتتالب‬،‫ وكائنتتا ت الجهتتاز؛ فعلتتى ستتبيل المثتتال‬،‫ والمجموعتتة‬،‫خاصتتيا ت المستتتخدم‬

:‫ مغديصرا‬/etc/ldapscripts/ldapscripts.conf ‫الملف‬

UTEMPLATE="/etc/ldapscripts/ldapadduser.template"

‫ اظنستتتتتخ أو أعتتتتتد تستتتتتمية ملتتتتتف‬،/etc/ldapscripts ‫هنالتتتتتك عينتتتتتا ت عتتتتتن القتتتتتوالب فتتتتتي مجلتتتتتد‬

:/etc/ldapscripts/ldapadduser.template ‫ إلى‬ldapadduser.template.sample

sudo cp \
/usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \
/etc/ldapscripts/ldapadduser.template

‫عددل القالب الجديد ليضيف الخاص يا ت التتي تريتدها؛ سنينششتئ متا يلتي مستتخدمين جتدد بقيمة‬

:objectClass ‫ للخاصية‬inetOrgPerson

dn: uid=<user>,<usuffix>,<suffix>
objectClass: inetOrgPerson
objectClass: posixAccount
cn: <user>
sn: <ask>
uid: <user>
uidNumber: <uid>
gidNumber: <gid>
homeDirectory: <home>
loginShell: <shell>
gecos: <user>
description: User account
title: Employee

‫ يستألك‬ldapadduser ‫؛ وه ي متا ستيجعل‬sn ‫< النمستتخندمة للخاصتتية‬ask> ‫لحتظ القيمتة‬

▲ | 193
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

.‫عن قيمتها‬

:‫ هذه هي قائمةة كاملةة بها‬،‫هنالك أدوا ت في هذه الحزمة لم ظنشرحها هنا‬

ldaprenamemachine
ldapadduser
ldapdeleteuserfromgroup
ldapfinger
ldapid
ldapgid
ldapmodifyuser
ldaprenameuser
lsldap
ldapaddusertogroup
ldapsetpasswd
ldapinit
ldapaddgroup
ldapdeletegroup
ldapmodifygroup
ldapdeletemachine
ldaprenamegroup
ldapaddmachine
ldapmodifymachine
ldapsetprimarygroup
ldapdeleteuser

‫ النسخ الحتياطي والسترجاع‬.‫ل‬

‫ فحتتان الن التتوقت للتحقتتق متتن أن عملنتتا يمسكتتن أن‬،‫ كمتا ظنريتتده تماصمتتا‬LDAP ‫الن يجب أن يعمل‬

.‫نيسنترنجع وقت الحاجة‬

▲ | 194
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫صتتا الستتند الخلفتتي‬


‫كتتل متتا ظنحتتتاج هتتو طريقتتة لنستتخ قاعتتدة بياظنتتا ت ‪ ldap‬احتياطصيتتا‪ ،‬وخصو ص‬

‫)‪ backend‬التتتتتتتتتتتتي هتتتتتتتتتتتي ‪ (cn=config‬والواجهتتتتتتتتتتتتة الماميتتتتتتتتتتتتة )‪ frontend‬التتتتتتتتتتتتي هتتتتتتتتتتتي‬

‫‪(dc=example,dc=com‬؛ إذا كنتتتتتت ستنستتتتتخ هتتتتتذه القواعتتتتتد ظنستتتتتصخا احتياطصيتتتتتا إلتتتتتى‪ -‬ولشنننقتتتتتل‪-‬‬

‫‪ ،/export/backup‬فإظننتتتا سنستتتتخدم ‪ slapcat‬كمتتتا هتتتو مو ن‬


‫ضتتتح فتتتي الستتتسكربت التتتتي المتتتدعو‬

‫‪:/usr/local/bin/ldapbackup‬‬

‫‪#!/bin/bash‬‬

‫‪BACKUP_PATH=/export/backup‬‬
‫‪SLAPCAT=/usr/sbin/slapcat‬‬

‫‪nice ${SLAPCAT} -n 0 > ${BACKUP_PATH}/config.ldif‬‬


‫‪nice ${SLAPCAT} -n 1 > ${BACKUP_PATH}/example.com.ldif‬‬
‫‪nice ${SLAPCAT} -n 2 > ${BACKUP_PATH}/access.ldif‬‬
‫‪chmod 640 ${BACKUP_PATH}/*.ldif‬‬

‫ملحظظظة‪ :‬هتتذه الملفتتا ت هتتي ملفتتا ت ظنصتتية غيتتر مضتتغوطة تحتتتوي كتتل شتتيء فتتي قواعتتد بياظنتتا ت ‪ LDAP‬بمتتا فيهتتا‬
‫مخطتتط الشتتجرة‪ ،‬وأستتماء المستتتخدمين‪ ،‬وكتتل كلمتتا ت المتترور؛ لتتذلك ربمتتا تفسكتتر فتتي جعتتل ‪ /export/backup‬قستتصما‬
‫مشفصرا؛ وحتى كتابة سسكربت يشفر هذه الملفا ت عند إظنشتائها‪ ،‬وربمتا تفعتل كل المري ن‪ ،‬ولسكتن ذل ك متعل ةق بمتطلبتا ت‬
‫المن في ظنظامك‪.‬‬

‫كتتل متتا يلتتزم الن هتتو الحصتتول علتتى ستتسكربت مهتتام مجدولتتة )‪ (cron‬لتشتتغيل هتتذا البرظنامتتج كتتل‬

‫فترة زمنية ) ترى أظنها مناسبة( ؛ ستيسكون ملئصما للسك ثيرين جدولتة تنفيتذ البرظنامتج مترة واحتدة كتل يتوم؛‬

‫ ت أكثر في اليوم؛ هذا مثال عن سسكربت ‪ cron‬متتدعو ‪/etc/cron.d/‬‬


‫لسكن قد يحتاج الخرون إلى مرا ت‬

‫‪ ،ldapbackup‬والذي سيعمل كل ليلة في تمام الساعة ‪:22:45‬‬

‫‪MAILTO=backup-emails@domain.com‬‬
‫‪45 22 * * * root /usr/local/bin/ldapbackup‬‬

‫▲‬ ‫‪| 195‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

.‫ يجب ظنقلها لخادوم النسخ الحتياطي‬،‫وبعد إظنشاء الملفا ت‬

:‫ فإن عملية السترجاع ستسكون شبيهصة بما يلي‬،ldap ‫وعلى فرض أظنك أعد ت تثبيت‬

sudo service slapd stop


sudo mkdir /var/lib/ldap/accesslog
sudo slapadd -F /etc/ldap/slapd.d -n 0 -l \
/export/backup/config.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 1 -l \
/export/backup/domain.com.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 2 -l \
/export/backup/access.ldif
sudo chown -R openldap:openldap /etc/ldap/slapd.d/
sudo chown -R openldap:openldap /var/lib/ldap/
sudo service slapd start

▲ | 196
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫م‪ .‬مصادر‬

‫المصدر الساسي هو توثيق ‪.www.openldap.org‬‬ ‫•‬

‫هنالتتتتك السكتتتتثير متتتتن صتتتتفحا ت التتتتدليل للحزمتتتتة ‪slapd‬؛ هتتتتذه أهمهتتتتا آختتتتذين بعيتتتتن العتبتتتتار‬ ‫•‬

‫المعلوما ت المقدمة في هذا الفصل‪:‬‬

‫‪man‬‬ ‫‪slapd‬‬
‫‪man‬‬ ‫‪slapd-config‬‬
‫‪man‬‬ ‫‪slapd.access‬‬
‫‪man‬‬ ‫‪slapo-syncprov‬‬

‫صفحا ت الدليل الخرى‪:‬‬ ‫•‬

‫‪man auth-client-config‬‬
‫‪man pam-auth-update‬‬

‫صفحة ويسكي مجتمع أوبنتو »‪ «OpenLDAP‬تحتوي مجموعصة من الملحظا ت‪.‬‬ ‫•‬

‫كتاب ‪ O'Reilly‬المدعو »‪.«LDAP System Administration‬‬ ‫•‬

‫كتاب ‪ Packt‬المدعو » ‪.«Mastering OpenLDAP‬‬ ‫•‬

‫▲‬ ‫‪| 197‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪ .2‬اتستخدام تسامبا مع ‪LDAP‬‬


‫يشتترح هتتذا القستتم دمتتج ستتامبا متتع ‪LDAP‬؛ دور ختتادوم ستتامبا هتتو أن يسكتتون خادوصمتتا قائصمتتا بحتتد‬

‫ذاتتتته‪ ،‬ويتتتوفر دليتتتل ‪ LDAP‬بطاقتتتة الستتتتيثاق بالضتتتافة إلتتتى احتتتتواء معلومتتتا ت حستتتاب المستتتتخدم‬

‫ي من أدواره الممسكنة(؛ المتطلتتب المستتبق هتتو‬


‫والمجموعة والجهاز التي يتطلبها سامبا لسكي يعمل )في أ ي‬

‫خادوم ‪ OpenLDAP‬مضبوط متع دليتل يمسكتن استتخدامه لطلبيتا ت الستتيثاق؛ راجتع القستم »خ ادوم‬

‫‪ «OpenLDAP‬لمزيتتد متتن المعلومتتا ت حتتول تحقيتتق هتتذا المتطلتتب؛ وبعتتد إكمتتال هتتذا القستتم‪ ،‬عليتتك‬

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

‫ا‪ .‬تثبيت البرمجيات‬

‫هنالتتتتتتك ثلث حتتتتتتزم مطلوبتتتتتتة لدمتتتتتتج ستتتتتتامبا متتتتتتع ‪ :LDAP‬حزمتتتتتتة ‪ ،samba‬و ‪،samba-doc‬‬

‫و ‪.smbldap-tools‬‬

‫وإذا أردظنتتا الدقتتة‪ ،‬فتتإن حزمتتة ‪ smbldap-tools‬ليستتت مطلوبتتة‪ ،‬لسكتتن متتا لتتم يسكتتن لتتديك طريقتتة‬

‫أختترى لدارة قيتتود ستتامبا المختلفتتة )المستتتخدمين والمجموعتتا ت والحواستتيب( فتتي ‪ ،LDAP‬فعليتتك‬

‫تثبيتها‪.‬‬

‫ثدبت هذه الحزم الن‪:‬‬

‫‪sudo apt-get install samba samba-doc smbldap-tools‬‬

‫▲‬ ‫‪| 198‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ب‪ .‬ضبط ‪LDAP‬‬

‫سنضبط الن خادوم ‪ LDAP‬لسكي يلئم بياظنتتا ت ستامبا‪ ،‬إذ أظننتتا ستنجري ثلث مهمتتا ت فتتي هتتذا‬

‫القسم‪:‬‬

‫استيراد مخطط )‪.(schema‬‬ ‫‪.1‬‬

‫فهرسة بعض القيود‪.‬‬ ‫‪.2‬‬

‫‪ .3‬إضافة كائنا ت )‪.(objects‬‬

‫مخطط سامبا‬

‫لسكتتي نيستتتخندم ‪ OpenLDAP‬كستتند خلفتتي )‪ (backend‬لستتامبا؛ فمنطقصيتتا يجتتب أن نتستتتخدم‬

‫ ت تستطيع وصتف بياظنتا ت ستتامبا وصتتصفا ستتليصما؛ و يمسكتتن الحصتول علتى‬


‫شجرة معلوما ت الدليل خاصيا ت‬

‫مثل هذه الخاصيا ت باستخدام مخطط سامبا في ‪LDAP‬؛ لنفعل ذلك الن‪.‬‬

‫ملحظة‪ :‬لمزيد من المعلوما ت حول المخططا ت وتثبيتهم‪ ،‬راجع القسم »تعديل قاعدة بياظنا ت ضبط ‪.«slapd‬‬

‫يمسكتتن العثتتور علتتى المخطتتط فتتي حزمتتة ‪ samba-doc‬التتتي ثبتناهتتا الن‪ ،‬لسكنهتتا تحتتتاج إلتتى أن‬

‫ك ضغطها ونتننسخ إلى مجلد ‪:/etc/ldap/schema‬‬


‫نينف ن‬

‫‪sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz‬‬
‫‪/etc/ldap/schema‬‬
‫‪sudo gzip -d /etc/ldap/schema/samba.schema.gz‬‬

‫▲‬ ‫‪| 199‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ الذي يحتوي على السطر التية‬schema_convert.conf ‫احصل على ملف الضبط‬

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/ldapns.schema
include /etc/ldap/schema/pmi.schema
include /etc/ldap/schema/samba.schema

.‫ لسكي نيبقي على المخرجا ت‬ldif_output ‫احصل على مجلد‬

:‫حدد فهرس المخطط‬

slapcat -f schema_convert.conf -F ldif_output -n 0 | \


grep "samba,cn=schema"
dn: cn={14}samba,cn=schema,cn=config

:LDIF ‫حدول المخطط إلى صيغة‬

slapcat -f schema_convert.conf -F ldif_output -n0 \


-H ldap:///cn={14}samba,cn=schema,cn=config -l cn=samba.ldif

▲ | 200
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:‫ المونلد بحذف معلوما ت الفهرس حتى تصل إلى‬cn=samba.ldif ‫عددل ملف‬

dn: cn=samba,cn=schema,cn=config
...
cn: samba

:‫احذف السطر في السفل‬

structuralObjectClass: olcSchemaConfig
entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080827045234Z

.‫ستختلف قيم خاصياتك‬

:‫أضف المخطط الجديد‬

sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn=samba.ldif

:‫ولطلب وإظهار المخطط الجديد‬

sudo ldapsearch -Q -LLL -Y EXTERNAL \


-H ldapi:/// -b cn=schema,cn=config 'cn=*samba*'

▲ | 201
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫افهارس سامبا‬

‫( بناصء عليهتا؛ فهرستة‬indices) ‫ لنضبط الن بعض الفهارس‬،‫ عن خاصيا ت سامبا‬slapd ‫يعرف الن‬

.‫المدخل ت هي طريقة لزيادة الداء عندما نيجشري العميل بحصثا نمرنشصحا على شجرة معلوما ت الدليل‬

:‫ بالمحتويا ت التية‬samba_indices.ldif ‫أظنششئ الملف‬

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

:‫ لتحميل الفهارس الجديدة‬ldapmodify ‫استخدم الداة‬

sudo ldapmodify -Q -Y EXTERNAL \


-H ldapi:/// -f samba_indices.ldif

:ldapsearch ‫ فيجب أن تشاهد الفهارس الجديدة باستخدام‬،‫إذا جرى كل شيء على ما يرام‬

sudo ldapsearch -Q -LLL -Y EXTERNAL -H \


ldapi:/// -b cn=config olcDatabase={1}hdb olcDbIndex

▲ | 202
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫إضاافة كائنات ‪ LDAP‬لسامبا‬

‫تالصيا‪ ،‬اضبط حزمة ‪ smbldap-tools‬لمطابقة بيئتك؛ تأتي هذه الحزمة مع ملف ضبط سيستتأل‬

‫بعتتتض الستتتئلة عتتتن الخيتتتارا ت الضتتترورية )استتتمه ‪ ،smbldap-config.pl‬وكتتتان استتتمه فيمتتتا مضتتتى‬

‫‪(configure.pl‬؛ لسكن هنالك عدلة ليست مثبتة لسكنه موجودة في السكود المصدري )‪apt-get source‬‬

‫‪.(smbldap-tools‬‬

‫ن‬
‫لضتتبط الحزمتتة يتتدوصيا‪ ،‬عليتتك إظنشتتاء وتعتتديل ملفتت د‬
‫ي ‪/etc/smbldap-tools/smbldap.conf‬‬

‫و ‪./etc/smbldap-tools/smbldap_bind.conf‬‬

‫سيضيف سسكربت ‪ smbldap-populate‬كائنا ت ‪ LDAP‬اللزمة لعمتتل ستتامبا؛ متتن الجيتتد عتتادصة‬

‫أن تأخذ ظنسخصة احتياطيصة من كامل الدليل باستخدام ‪:slapcat‬‬

‫‪sudo slapcat -l backup.ldif‬‬

‫أكمل بإملء الدليل بعد أخذك لنسختة احتياطيتة منه‪:‬‬

‫‪sudo smbldap-populate‬‬

‫تستتتطيع إظنشتتاء ملتتف ‪ LDIF‬يحتتتوي كائنتتا ت ستتامبا الجديتتدة بتنفيتتذ المتتر ‪sudo smbldap-‬‬

‫‪ populate -e samba.ldif‬؛ وهذا سيسمح لك بمعاينة التعديل ت والتأكد من أن كل شيء صحيح؛‬

‫ثم ظندفذ السسكربت لسكن بدون الخيار ‪-e‬؛ أو تستطيع أخذ ملف ‪ LDIF‬واستيراد بياظناته كالمعتاد‪.‬‬

‫يجب أن يملك دليل ‪ LDAP‬الن المعلوما ت الضرورية للستيثاق من مستخدمي سامبا‪.‬‬

‫▲‬ ‫‪| 203‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ ضبط سامبا‬.‫ج‬

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

/etc/samba/smb.conf ‫ فعددل الملف‬،LDAP ‫ سامبا«؛ لتضبط سامبا ليستخدم‬:‫»الفصل الثامن عشر‬

:ldap ‫ وأضف بعض معامل ت‬passdb backend ‫وأزل التعليق قبل معامل‬

# passdb backend = tdbsam

# LDAP Settings
passdb backend = ldapsam:ldap://hostname
ldap suffix = dc=example,dc=com
ldap user suffix = ou=People
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=admin,dc=example,dc=com
ldap ssl = start tls
ldap passwd sync = yes
...
add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w
"%u"

.‫عددل القيم لتطابق بيئتك‬

:‫ لتفعيل العدادا ت الجديدة‬samba ‫أعد تشغيل خدمة‬

sudo restart smbd


sudo restart nmbd

:(slapd ‫ضشبنطت أثناء تثبيت حزمة‬


‫ )تلك التي ن‬rootDN ‫أخبر سامبا الن عن كلمة مرور‬

sudo smbpasswd -w password

▲ | 204
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫إذا كتان لتديك مستتخدم ‪ LDAP‬موجتود مستتب صقا‪ ،‬وأرد ت تضتمينه فتتي ستامبا‪ ،‬فستتتحتاج لضتافة‬

‫بعض الخاصيا ت؛ نتفنعتل أداة ‪ smbpasswd‬هتتذا أي ص‬


‫ضتا )يجتب أن يقتدر المضتيف عل ى رؤيتة ]أو سترد[‬

‫هؤلء المستخدمين عبر ‪NSS‬؛ نثدبت واضبط إما ‪ libnss-ldapd‬أو ‪:(libnss-ldap‬‬

‫‪sudo smbpasswd -a username‬‬

‫سنيطنلب منك إدخال كلمة المرور‪ ،‬وسنتعتنبر هي كلمة المرور الجديدة لهذا المستخدم‪.‬‬

‫لدارة حستتتتتابا ت المستتتتتتخدم والمجموعتتتتتة والجهتتتتتاز‪ ،‬فاستتتتتتخدم الدوا ت المتتتتتوفرة متتتتتن حزمتتتتتة‬

‫‪smbldap-tools‬؛ هذه بعض المثلة‪:‬‬

‫إضافة مستخدم جديد‪:‬‬

‫‪sudo smbldap-useradd -a -P username‬‬

‫يضيف الخيار ‪ -a‬خاصيا ت سامبا‪ ،‬ويستدعي الخيار ‪ -P‬الداة ‪ smbldap-passwd‬بعد إظنشتتاء‬

‫المستخدم مما يسمح لك بإدخال كلمة مرور لذاك المستخدم‪.‬‬

‫لزالة مستخدم‪:‬‬

‫‪sudo smbldap-userdel username‬‬

‫اسنتخشدم الخيار ‪ -r‬في المر السابق لحذف مجلد المنزل للمستخدم المحدد‪.‬‬

‫▲‬ ‫‪| 205‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫لضافة مجموعة‪:‬‬

‫‪sudo smbldap-groupadd -a groupname‬‬

‫وكما في المر ‪ ،smbldap-useradd‬يضيف الخيار ‪ -a‬خاصيا ت سامبا‪.‬‬

‫لظنشاء مستخدم جديد ويسكون عضصوا في مجموعة‪:‬‬

‫‪sudo smbldap-groupmod -m username groupname‬‬

‫يمسكن أن يضيف الخيار ‪ -m‬أكثر من مستخدم في ظنفس الوقت بسردهم مفصوصل بينهم بفاصلة‪.‬‬

‫لحذف مستخدم من مجموعة‪:‬‬

‫‪sudo smbldap-groupmod -x username groupname‬‬

‫لضافة حساب جهاز في سامبا‪:‬‬

‫‪sudo smbldap-useradd -t 0 -w username‬‬

‫استتتبدل ‪ username‬باستتم محطتتة العمتتل )‪ ،(workstation‬نينششتتئ الخيتتار ‪ -t 0‬حستتاب جهتتاز‬

‫بدون تأخير‪ ،‬بينما يحدد الخيار ‪ -w‬الحساب كحساب جهاز؛ لحتتظ أي ص‬


‫ضتتا أن معامتتل ‪add machine‬‬

‫‪ script‬في ‪ /etc/samba/smb.conf‬قد ن‬
‫غدير لسكي يستخدم ‪.smbldap-useradd‬‬

‫▲‬ ‫‪| 206‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫هذه هي الدوا ت في حزمة ‪ smbldap-tools‬التي لم ظنشرحها هنا‪:‬‬

‫‪smbldap-groupadd‬‬
‫‪smbldap-groupdel‬‬
‫‪smbldap-groupmod‬‬
‫‪smbldap-groupshow‬‬
‫‪smbldap-passwd‬‬
‫‪smbldap-populate‬‬
‫‪smbldap-useradd‬‬
‫‪smbldap-userdel‬‬
‫‪smbldap-userinfo‬‬
‫‪smbldap-userlist‬‬
‫‪smbldap-usermod‬‬
‫‪smbldap-usershow‬‬

‫د‪ .‬مصادر‬

‫للمزيد من المعلوما ت حول تثبيت وضبط سامبا‪ ،‬راجع »الفصل الثتتامن عشتتر‪ :‬ستتامبا« متتن‬ ‫•‬

‫هذا السكتاب‪.‬‬

‫هنالك عددة أماكن ودثق فيها ‪ LDAP‬مع سامبا في » ‪.«Samba HOWTO Collection‬‬ ‫•‬

‫علتتتتتى الرغتتتتتم متتتتتن أن هتتتتتذه الصتتتتتفحة قديمتتتتتة )‪ (2007‬لسكتتتتتن صتتتتتفحة »‪Linux Samba-‬‬ ‫•‬

‫‪ «OpenLDAP HOWTO‬تحتوي ملحظا ت مهمة‪.‬‬

‫الصتتتتتتفحة الرئيستتتتتتية » ‪ «Samba Ubuntu community documentation‬فيهتتتتتتا‬ ‫•‬

‫مجموعة من الوصل ت للمقال ت المفيدة‪.‬‬

‫▲‬ ‫‪| 207‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪ .3‬مقدمة عن ‪Kerberos‬‬
‫إن ‪ Kerberos‬هتتو ظنظتتام استتتيثاق شتتبسكي مبنتتي علتتى مفهتتوم الجهتتة الثالثتتة الموثوقتتة؛ الجهتتتان‬

‫الخريتان هما المستخدم والخدمة التي يريد المستخدم أن يستتتوثق فيهتتا؛ ل يمسكتتن لجميتتع الختتدما ت‬

‫والتطبيقتتتا ت استتتتخدام ‪Kerberos‬؛ لسكتتتن الختتتدما ت التتتتي تستتتتطيع ذلتتتك تجعلتتته نيقتتتدرب بيئتتتة الشتتتبسكة‬

‫لتصبح أقرب خطوصة إلى »تسجيل الدخول الموحد« )‪.([SSO] Single Sign On‬‬

‫يشرح هذا القسم تثبيت وضبط خادوم ‪ ،Kerberos‬وبعض المثلة عن ضبط العملء‪.‬‬

‫ا‪ .‬لمحة عامة‬

‫إذا كنت جديصدا على ‪ ، Kerberos‬فهذه بعض المصطلحا ت التتي متن الجيتد معرفتهتا قبتل إعتداد‬

‫خادوم ‪ ،Kerberos‬أغلبها مرتبطةة بأشياء قد تعرفها من البيئا ت الخرى‪:‬‬

‫مبتتدأ )‪ :(Principal‬يجتتب أن نتعتتنرف أديتتة مستتتخدمين أو حواستتيب أو ختتدما ت متتوفرة متتن‬ ‫•‬

‫الخواديم كمبادئ ‪.Kerberos‬‬

‫النماذج )‪ :(Instances‬تستخدم لمبادئ الخدمة ومبادئ الدارة الخاصة‪.‬‬ ‫•‬

‫الحقول )‪ :(Realms‬الحقل الفريد للتحسك م التذي تتم تزويتده متن عمليتة تثتبيت ‪Kerberos‬؛‬ ‫•‬

‫تخيل أن الحقول هي مجال أو مجموعة من المضيفين والمستتتخدمين التتذين ينتمتتون إليهتتا‪،‬‬

‫ونيصط نلح أن الحقل يجب أن يسكون بأحرف كبيرة؛ سيستخدم أوبنتو افتراضصيا عنوان ‪DNS‬‬

‫نمحدوصل إلى أحر ت‬


‫ف كبيرة )‪ (EXAMPLE.COM‬اسصما للحقل‪.‬‬

‫▲‬ ‫‪| 208‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫مركتتز توزيتتع المفاتيتتح ) ‪ :([KDC] Key Distribution Center‬يتسكتتون متتن ثلثتتة أقستتام‪:‬‬ ‫•‬

‫قاعتتدة بياظنتا ت لسكتل المبتتادئ‪ ،‬وختادوم استتيثاق‪ ،‬وختادوم منتح بطاقتتا ت )‪ticket granting‬‬

‫‪ (server‬؛ يحب أن يسكون هنالك مركز توزيع للمفاتيح واحد على القل لسكل حقل‪.‬‬

‫بطاقتتتتة منتتتتح البطاقتتتتا ت ) ‪ :(Ticket Granting Ticket‬نتصتتتتندر متتتتن ختتتتادوم الستتتتتيثاق‬ ‫•‬

‫)‪([AS] Authentication Server‬؛ بطاقتتتة منتتتح البطاقتتتا ت )‪ (TGT‬مشتتتفرة بسكلمتتتة متتترور‬

‫المستخدم الذي يعلمها فقط المستخدم و مركز توزيع المفاتيح )‪.(KDC‬‬

‫ختتتادوم منتتتح البطاقتتتا ت )‪ :([TGS] Ticket Granting Server‬نيصتتتشدر خدمتتتة البطاقتتتا ت‬ ‫•‬

‫للعملء عند الطلب‪.‬‬

‫البطاقتتتا ت‪ :‬تأكيتتتد هويتتتة مبتتتدأين‪ ،‬أحتتتد تلتتتك المبتتتادئ هتتتو المستتتتخدم‪ ،‬والختتتر هتتتو الخدمتتتة‬ ‫•‬

‫المطلوبتة متن المستتخدم؛ تؤستس البطاقتا ت مفتتاح تشتفير لنيستتخندم فتي التصتال ت المنتة‬

‫أثناء جلسة الستيثاق‪.‬‬

‫ملفتتتا ت ‪ :Keytab‬الملفتتتا ت المستتتتخرجة متتتن قاعتتتدة بياظنتتتا ت مبتتتادئ مركتتتز توزيتتتع المفاتيتتتح‬ ‫•‬

‫وتحتوي على مفتاح التشفير للخدمة أو المضيف‪.‬‬

‫ولجمتتع القطتتع متع بعضتتها بع ص‬


‫ضتا‪ ،‬لتتدى الحقتل مركتز توزيتتع مفاتيتتح واحتتد علتى القتل ‪-‬ويفضتل أن‬

‫يسكون لديه أكتثر متن واحتد لضتمان تتوفر الخدمتة‪ -‬التذي يحتتوي علتى قاعتدة بياظنا ت بالمبادئ‪ ،‬وعنتدما‬

‫نيستتدجل مستتتخدةم دختتوله إلتتى منصتتة العمتتل المضتتبوطة لستتتخدام استتتيثاق ‪Kerberos‬؛ فتتإن مركتتز‬

‫توزيتتع المفاتيتتح يصتتدر بطاقتتة منتتح البطاقتتا ت ) ‪ ،(TGT‬وإذا كتتاظنت التصتتاريح التتتي أعطاهتتا المستتتخدم‬

‫▲‬ ‫‪| 209‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫مطابقتتة‪ ،‬فستتيتم الستتتيثاق متتن المستتتخدم وبإمسكتتاظنه الن طلتتب البطاقتتا ت لختتدما ت ‪ Kerberos‬متتن‬

‫ختادوم منتتح البطاقتا ت ) ‪ ،(TGS‬ستستتمح خدمتة البطاقتتا ت للمستتخدم أن يستتتوثق إلتى خدمتة دون أن‬

‫نيد ش‬
‫خل اسم المستخدم أو كلمة المرور‪.‬‬

‫ب‪ .‬تخادوم ‪Kerberos‬‬

‫التثبيت‬

‫لنقاشنا هذا‪ ،‬سننششئ مجال ‪ MIT Kerberos‬مع الخاصيا ت التية )عددلها لتلئم حاجاتك(‪:‬‬

‫الحقل‪.EXAMPLE.COM :‬‬ ‫•‬

‫مركز توزيع المفاتيح الرئيسي‪.(192.168.0.1) kdc01.example.com :‬‬ ‫•‬

‫مركز توزيع المفاتيح الثاظنوي‪.(192.168.0.2) kdc02.example.com :‬‬ ‫•‬

‫مبدأ المستخدم‪.steve :‬‬ ‫•‬

‫مبدأ المدير‪.steve/admin :‬‬ ‫•‬

‫ملحظظظة‪ :‬متتن المستحستتن ‪ -‬وبشتتدة‪ -‬أن تسكتتون معرفتتا ت مستتتخدمين الشتتبسكة الموثتتوقين فتتي مجتتال مختلتتف عتتن‬
‫المستخدمين المحليين )لنقل أظنه يبدأ من ‪.(5000‬‬

‫قبل تثبيت ختادوم ‪ ،Kerberos‬فمتن الضتروري وجتود خ ادوم ‪ DNS‬مضتبوط مستبصقا؛ ولمتا كتان‬

‫حقل ‪ Kerberos‬عرف صيا يستخدم اسم النطاق‪ ،‬فإن هذا القسم يستخدم النطتتاق ‪EXAMPLE.COM‬‬

‫المشروحة طريقة ضبطه في قسم الرئيس الولي في »الفصل الثامن‪ :‬خدمة اسم النطاق )‪.«(DNS‬‬

‫▲‬ ‫|‬ ‫‪210‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪ Kerberos‬هو بروتوكول حستاس بالنستبة للتوقت؛ فلتو كان وقتتت النظتام المحلتي يختلتف بيتن‬

‫جهاز العميل وجهاز الخادوم أكثر من خمس دقائق )افتراضصيا(‪ ،‬فلن تستطيع منصة العمل أن تستوثق‬

‫متتن العميتتل‪ .‬ولتصتتحيح المشتتسكلة‪ ،‬يجتتب أن يزامتتن جميتتع المضتتيفين وقتهتتم بواستتطة بروتوكتتول وقتتت‬

‫الشتتبسكة )‪(NTP‬؛ للمزيتتد متتن المعلومتتا ت حتتول ضتتبط ‪ ،NTP‬راجتتع القستتم »مزامنتتة التتوقت باستتتخدام‬

‫بروتوكول ‪.«NTP‬‬

‫أول خطتتتوة فتتتي ضتتتبط حقتتتل ‪ Kerberos‬هتتتي تثتتتبيت حزمنتتتت د‬


‫ي ‪ krb5-kdc‬و ‪krb5-admin-‬‬

‫‪server‬؛ أدخل المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install krb5-kdc krb5-admin-server‬‬

‫سنتستتأل فتتي ظنهايتتة التثتتبيت عتتن استتم مضتتيف ‪ Kerberos‬وختتواديم ‪- Admin‬اللتتذان يمسكتتن أن‬

‫يسكوظنا ظنفس الخادوم أو غيره‪ -‬للحقل )‪.(realm‬‬

‫ملحظة‪ :‬افتراضصيا‪ ،‬نيننشأ الحقل من اسم ظنطاق مركز توزيع المفاتيح‪.‬‬

‫ثم أظنششئ حقصل جديصدا باستخدام الداة ‪:kdb5_newrealm‬‬

‫‪sudo kdb5_newrealm‬‬

‫▲‬ ‫|‬ ‫‪211‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫الضبط‬

‫تستخدم الستئلة التتي ستألوك إياهتا أثنتتاء التثتتبيت لضتتبط ملتتف ‪/etc/krb5.conf‬؛ إذا احتجتتت‬

‫لتعديل إعدادا ت مركز توزيع المفتاح )‪ (KDC‬فعددل ببساطة الملف وأعد تشغيل عفريتتت ‪.krb5-kdc‬‬

‫إذا احتجت لعادة ضبط ‪ Kerberos‬من الصفر‪ ،‬ربما لتغير اسم الحقل‪ ،‬فيمسكنك ذلك بالمر‪:‬‬

‫‪sudo dpkg-reconfigure krb5-kdc‬‬

‫بعتتد أن يعمتتل ‪ KDC‬عم صل ستتليصما‪ ،‬فتتإظنه متتن الضتتروري وجتتود مستتتخدم متتدير )مبتتدأ المتتدير(‪ .‬متتن‬

‫المستحسن استخدام اسم مستخدم مختلف عن اسم المستخدم الذي تستعمله عادصة‪ .‬يمسكن فعل ذلك‬

‫عبر الداة ‪ ،kadmin.local‬بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo kadmin.local‬‬
‫‪Authenticating as principal root/admin@EXAMPLE.COM with‬‬
‫‪password.‬‬
‫‪kadmin.local: addprinc steve/admin‬‬
‫;‪WARNING: no policy specified for steve/admin@EXAMPLE.COM‬‬
‫‪defaulting to no policy‬‬
‫‪Enter password for principal "steve/admin@EXAMPLE.COM":‬‬
‫‪Re-enter password for principal "steve/admin@EXAMPLE.COM":‬‬
‫‪Principal "steve/admin@EXAMPLE.COM" created.‬‬
‫‪kadmin.local: quit‬‬

‫في المثال السابق‪ ،‬يسكون ‪ steve‬هو مبدأ‪ ،‬و ‪ /admin‬هو ظنمتوذج‪ ،‬و يشتتير ‪@EXAMPLE.COM‬‬

‫إلتتتى الحقتتتل‪ ،‬ويسكتتتون مبتتتدأ المستتتتخدم هتتتو ‪ ،steve@EXAMPLE.COM‬ويجتتتب أن يحمتتتل امتيتتتازا ت‬

‫المستخدم العادي فقط‪.‬‬

‫ملحظة‪ :‬استبدل ‪ EXAMPLE.COM‬و ‪ steve‬بالحقل واسم مستخدم المدير عندك على التوالي‪.‬‬

‫▲‬ ‫‪| 212‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ثم يحتاج مستخدم المدير الجديد إلى أن يحصل على أذوظنا ت قوائم التحسكتتم بالوصتتول )‪(ACL‬‬

‫الملئمة؛ نتضنبط هذه الذوظنا ت في ملف ‪:/etc/krb5kdc/kadm5.acl‬‬

‫‪steve/admin@EXAMPLE.COM‬‬ ‫*‬

‫يعطي هذا القيتد ‪ steve/admin‬القتدرة علتى القيتام بأي عمليتة فتي جميتع المبادئ فتي الحقتل؛‬

‫تستتتطيع ضتتبط المبتتادئ بامتيتتازا ت أقتتل؛ والتتذي يسكتتون ملئصمتتا إذا احتجتتت مبتتدأ متتدير يستتتطيع طتتاقم‬

‫العمل المبتدئ استخدامه في عملء ‪Kerberos‬؛ راجع صفحة الدليل ‪ man kadm5.acl‬لمزيد من‬

‫التفاصيل‪.‬‬

‫أعد الن تشغيل ‪ krb5-admin-server‬لسكي تأخذ قوائم التحسكم بالوصول الجديدة مفعولها‪:‬‬

‫‪sudo service krb5-admin-server restart‬‬

‫يمسكن اختبار مبدأ المستخدم الجديد باستخدام الداة ‪:kinit‬‬

‫‪kinit steve/admin‬‬
‫‪steve/admin@EXAMPLE.COM's Password:‬‬

‫بعد إدخال كلمة المرور‪ ،‬فاستخدم ‪ klist‬لعرض معلوما ت حول بطاقة منح البطاقا ت )‪:(TGT‬‬

‫‪klist‬‬
‫‪Credentials cache:‬‬ ‫‪FILE:/tmp/krb5cc_1000‬‬
‫‪Principal:‬‬ ‫‪steve/admin@EXAMPLE.COM‬‬
‫‪Issued‬‬ ‫‪Expires‬‬ ‫‪Principal‬‬
‫‪Jul 13 17:53:34‬‬ ‫‪Jul 14 03:53:34‬‬
‫‪krbtgt/EXAMPLE.COM@EXAMPLE.COM‬‬

‫▲‬ ‫‪| 213‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫حيتتتث استتتم ملتتتف التخزيتتتن المتتتؤقت ‪ krb5cc_1000‬مسكتتتون متتتن الستتتابقة _‪ krb5cc‬ومعتتترف‬

‫المستخدم ‪ ،uid‬الذي فتي هتتذه الحالتة ‪1000‬؛ ربمتا تحتتاج لضتافة قيتتد فتتي ملتتف ‪ /etc/hosts‬متتن أجتل‬

‫مركز توزيع المفاتيح لسكي يستطيع العميل العثور عليه‪ ،‬على سبيل المثال‪:‬‬

‫‪192.168.0.1‬‬ ‫‪kdc01.example.com‬‬ ‫‪kdc01‬‬

‫استتتتبدل ‪ 192.168.0.1‬بعنتتتوان مركتتتز توزيتتتع المفاتيتتتح؛ هتتتذا يحتتتدث عتتتادة عنتتتدما تملتتتك حقتتتل‬

‫‪ Kerberos‬يشمل عددة شبسكا ت مفصولة بموجها ت )‪.(routers‬‬

‫أفضل طريقة للسماح للعملء بتحديد مركز توزيع المفاتيح للحقتل هتو استتخدم ستجل ت ‪DNS‬‬

‫‪ ،SRV‬أضف ما يلي إلى ‪:/etc/named/db.example.com‬‬

‫‪_kerberos._udp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪1‬‬ ‫‪0 88‬‬


‫‪kdc01.example.com.‬‬
‫‪_kerberos._tcp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪1‬‬ ‫‪0 88‬‬
‫‪kdc01.example.com.‬‬
‫‪_kerberos._udp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪10‬‬ ‫‪0 88‬‬
‫‪kdc02.example.com.‬‬
‫‪_kerberos._tcp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪10‬‬ ‫‪0 88‬‬
‫‪kdc02.example.com.‬‬
‫‪_kerberos-adm._tcp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪1‬‬ ‫‪0 749‬‬
‫‪kdc01.example.com.‬‬
‫‪_kpasswd._udp.EXAMPLE.COM.‬‬ ‫‪IN SRV‬‬ ‫‪1‬‬ ‫‪0 464‬‬
‫‪kdc01.example.com.‬‬

‫ملحظة‪ :‬استبدل ‪ ،EXAMPLE.COM‬و ‪ ،kdc01‬و ‪ ،kdc02‬باسم النطاق‪ ،‬ومركز توزيع المفاتيح الرئيسي‪ ،‬ومركتتز‬
‫توزيع المفاتيح الثاظنوي على التوالي وبالترتيب‪.‬‬

‫اظنظر إلى الفصل الثامن لتعليما ت تفصيلية حول ضتتبط ‪ .DNS‬أصتتبح حقتتل ‪ Kerberos‬الجديتتد‬

‫جاهصزا لستيثاق العملء‪.‬‬

‫▲‬ ‫‪| 214‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ج‪ .‬مركز توزيع المفاتيح الثانوي‬

‫بعد أن حصلت على مركز توزيع المفاتيح )‪ (KDC‬فتتي شتتبسكتك‪ ،‬فمتتن المستحستتن الحصتتول علتتى‬

‫مركتز ثتاظنوي فتي حتال لتم يسكتن المركتز الرئيستي متتوافصرا؛ وأي ص‬
‫ضتا لتو كان عنتدك عملء ‪ Kerberos‬فتي‬

‫شبسكا ت مختلفة )ربما مفصولة بموجها ت تستخدم ‪ ،(NAT‬فمن الحسكمتتة وضتتع مركتتز توزيتتع ثتتاظنوي فتتي‬

‫كل شبسكة من تلك الشبسكا ت‪.‬‬

‫أوصل‪ ،‬ثبتتت الحتتزم‪ ،‬عنتتدما تستأل عتتن أستماء ‪ Kerberos‬و ‪ Admin server‬فادختتل استتم مركتتز‬

‫توزيع المفاتيح الرئيسي‪:‬‬

‫‪sudo apt-get install krb5-kdc krb5-admin-server‬‬

‫بعد أن ثبتت الحزم‪ ،‬أظنششئ مبدأ مضيف ‪ ،KDC‬بإدخال المر التي في الطرفية‪:‬‬

‫"‪kadmin -q "addprinc -randkey host/kdc02.example.com‬‬

‫ملحظة‪ :‬بعد تنفيذك لوامر ‪ kadmin‬فسنتسأل عن كلمة مرور ‪.username/admin@EXAMPLE.COM‬‬

‫استخرج ملف ‪:Keytab‬‬

‫\ ‪kadmin -q "ktadd -norandkey‬‬


‫"‪-k keytab.kdc02 host/kdc02.example.com‬‬

‫▲‬ ‫‪| 215‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫يجتتتتتتب أن يسكتتتتتتون هنالتتتتتتك ملتتتتتف ‪ keytab.kdc02‬فتتتتتتي مجلتتتتتدك الحتتتتتالي‪ ،‬اظنقتتتتتل الملتتتتتتف إلتتتتتى‬

‫‪:/etc/krb5.keytab‬‬

‫‪sudo mv keytab.kdc02 /etc/krb5.keytab‬‬

‫ملحظة‪ :‬المسار إلى ‪ keytab.kdc02‬يختلف تبصعا لمجلد العمل الحالي‪.‬‬

‫ضا أن نتشدسكل قائم صة بالمبادئ فتي ملتف ‪Keytab‬؛ مم ا يفيتد فتي استسكشتاف الخط اء؛‬
‫تستطيع أي ص‬

‫استخدم الداة ‪:klist‬‬

‫‪sudo klist -k /etc/krb5.keytab‬‬

‫يشير الخيار ‪ -k‬إلى أن الملف هو ملف ‪.keytab‬‬

‫هنالك حاجة لوجود ملف ‪ kpropd.acl‬فتي كتل مركتز لتوزيتع المفاتيتح التذي يعترض كتل مراكتز‬

‫توزيع المفاتيح للحقل؛ على سبيل المثال‪ ،‬نأظن ششئ في مركز توزيع المفاتيح الرئيسي والثاظنوي الملف‬

‫‪/etc/krb5kdc/kpropd.acl:‬‬
‫‪host/kdc01.example.com@EXAMPLE.COM‬‬
‫‪host/kdc02.example.com@EXAMPLE.COM‬‬

‫أظنششئ قاعدة بياظنا ت فارغة في المركز الثاظنوي‪:‬‬

‫‪sudo kdb5_util -s create‬‬

‫▲‬ ‫‪| 216‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ابتتتتدأ الن عفريتتتتت ‪ ،kpropd‬التتتتذي يستتتتتمع إلتتتتى التصتتتتال ت متتتتن أداة ‪kprop‬؛ تستتتتتخدم أداة‬

‫‪ kprop‬لنقل ملفا ت التفريغ‪:‬‬

‫‪sudo kpropd -S‬‬

‫من الطرفية في مركز توزيع المفاتيح الرئيسي‪ ،‬أظنشئ ملف تفريغ من قاعدة بياظنا ت المبادئ‪:‬‬

‫‪sudo kdb5_util dump /var/lib/krb5kdc/dump‬‬

‫استخرج ملف ‪ keytab‬في مركز توزيع المفاتيح الرئيسي واظنقله إلى ‪:/etc/krb5.keytab‬‬

‫"‪kadmin -q "ktadd -k keytab.kdc01 host/kdc01.example.com‬‬


‫‪sudo mv keytab.kdc01 /etc/krb5.keytab‬‬

‫ملحظة‪ :‬تأكد من وجود مضيف مرتبط مع ‪ kdc01.example.com‬قبل استخراج ‪.Keytab‬‬

‫استخدم الداة ‪ kprop‬لدفع التغيرا ت إلى قاعدة البياظنا ت في ‪ KDC‬الثاظنوي‪:‬‬

‫\ ‪sudo kprop -r EXAMPLE.COM‬‬


‫‪-f /var/lib/krb5kdc/dump kdc02.example.com‬‬

‫ملحظظظة‪ :‬يجتتب أن نتظهتتر رستتالة ‪ SUCCEEDED‬إذا تمتتت عمليتتة »النستتخ« بنجتتاح‪ ،‬إذا كتتاظنت هنالتتك رستتالة خطتتأ‪،‬‬
‫فتحقق من ‪ /var/log/syslog‬في مركز توزيع المفاتيح الثاظنوي لمزيتد من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 217‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ربما ترغب بإظنشاء مهمة مجدولة لتحديث قاعدة البياظنا ت في مركز توزيع المفاتيح الثتتاظنوي كتتل‬

‫فتتترة زمنيتتة؛ متتا يلتي ستتيدفع التغييتترا ت إلتى قاعتتدة البياظنتا ت كتتل ستتاعة )لحتظ أن الستتطر الطويتل قتتد‬

‫نجدزء لجزأين لسكي يتسع في عرض الصفحة(‪:‬‬

‫‪#‬‬ ‫‪m h dom mon dow command‬‬


‫‪0‬‬ ‫&& ‪* * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump‬‬
‫↪‬ ‫‪/usr/sbin/kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump‬‬
‫↪‬ ‫‪kdc02.example.com‬‬

‫أظنشئ ملف ‪ stash‬في المركز الثاظنوي لنيحنفظ به مفتاح ‪ Kerberos‬الرئيسي )‪:(Master Key‬‬

‫‪sudo kdb5_util stash‬‬

‫في النهاية‪ ،‬شغل عفريت ‪ krb5-kdc‬في المركز الثاظنوي‪:‬‬

‫‪sudo service krb5-kdc start‬‬

‫يجب أن يسكون المركتتز الثتتاظنوي قتتادصرا علتى إعطتاء البطاقتتا ت للحقتتل؛ يمسكنتك اختبتار ذلتك بإيقتاف‬

‫عفريت ‪ krb5-kdc‬في المركز الرئيسي؛ ثم استخدام ‪ kinit‬لطلب بطاقتة‪ ،‬وإذا جترى كتل شتيء علتى‬

‫متتتا يتتترام‪ ،‬فيجتتتب أن تحصتتتل علتتتى بطاقتتتة متتتن مركتتتز توزيتتتع المفاتيتتتح الثتتاظنوي؛ عتتتدا ذلتتتك‪ ،‬تحقتتتق متتتن‬

‫‪ /var/log/syslog‬و ‪ /var/log/auth.log‬في مركز توزيع المفاتيح الثاظنوي‪.‬‬

‫▲‬ ‫‪| 218‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫د‪ .‬عميل ‪ Kerberos‬لليينكس‬

‫يشرح هذا القسم ضبط ظنظام ليننسكس كعميل ‪Kerberos‬؛ هذا سيسمح بالوصول إلى أدية خدمة‬

‫تستخدم ‪ Kerberos‬بعد أن يستطيع المستخدم تسجيل دخوله إلى النظام‪.‬‬

‫التثبيت‬

‫لسكتتتتي يتتتتتم الستتتتتيثاق إلتتتتى حقتتتتل ‪Kerberos‬؛ فتتتتإن حزمنتتتتت د‬


‫ي ‪ krb5-user‬و ‪libpam-krb5‬‬

‫مطلوبتتتان؛ بالضتتافة إلتتى غيرهتتا متتن الحتتزم غيتتر المطلوبتتة لسكنهتتا تستتهل عملتتك؛ أد ش‬
‫ختتل المتتر التتتي فتتي‬

‫شمنحث الطرفية لتثبيت هذه الحزم‪:‬‬

‫\ ‪sudo apt-get install krb5-user libpam-krb5 libpam-ccreds‬‬


‫‪auth-client-config‬‬

‫تستتمح حزمتتة ‪ auth-client-config‬بضتتبط ‪ PAM‬ضتتبصطا بستتيصطا للستتتيثاق متتن مصتتادر عتتددة‪،‬‬

‫وسنتخدزن حزمة ‪ libpam-ccreds‬اعتماديا ت الستيثاق مما يستتمح لتتك بتستتجيل التتدخول فتتي حتتال‬

‫لتتتم يسكتتتن مركتتتز توزيتتتع المفاتيتتتح متا صحتتتا؛ ستتتتفيد هتتتذه الحزمتتتة الحواستتتيب المحمولتتتة‪ ،‬التتتتي يمسكتتتن أن‬

‫تستتتوثق باستتتخدام ‪ Kerberos‬عنتتدما تسكتتون فتتي شتتبسكة الشتتركة‪ ،‬لسكنهتتا تحتتتاج إلتتى الوصتتول عنتتدما‬

‫تسكون خارج الشبسكة أي ص‬


‫ضا‪.‬‬

‫▲‬ ‫‪| 219‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫الضبط‬

‫لضبط العميل‪ ،‬أدخل ما يلي في الطرفية‪:‬‬

‫‪sudo dpkg-reconfigure krb5-config‬‬

‫ستتتنيطنلب منتتتك إدختتتال استتتم حقتتتل ‪Kerberos‬؛ أي ص‬


‫ضتتتا إن لتتتم لتتتديك ‪ DNS‬مضتتتبوط متتتع ستتتجل ت‬

‫‪Kerberos SRV‬؛ فستظهر قائمة تسألك عن اسم مضيف مركز توزيع المفاتيح وخادوم إدارة الحقل‪.‬‬

‫يضتتيف ‪ dpkg-reconfigure‬قيتتوصدا إلتتى ملتتف ‪ /etc/krb5.conf‬للحقتتل الختتاص بتتك‪ ،‬يجتتب‬

‫أن تحصل على قيود شبيهة بالتي‪:‬‬

‫]‪[libdefaults‬‬
‫‪default_realm = EXAMPLE.COM‬‬
‫‪...‬‬
‫]‪[realms‬‬
‫{ = ‪EXAMPLE.COM‬‬
‫‪kdc = 192.168.0.1‬‬
‫‪admin_server = 192.168.0.1‬‬
‫}‬

‫ملحظظظة‪ :‬إذا ن‬
‫ضتتبطت ‪ uid‬لسكتتتل متتن مستتتخدمي شتتبسكتك الموثتتوقين ليبتتدأ متتن ‪5000‬؛ كمتتا هتتو منصتتوح بتته فتتي قستتم‬
‫»التثتتتتبيت«‪ ،‬فتستتتتتطيع عنتتتتدها أن تختتتتبر ‪ pam‬بتتتتأن يستتتتتوثق باستتتتتخدام مستتتتتخدمي ‪ Kerberos‬عنتتتتدما يسكتتتتون‬
‫‪ uid‬أكبر من ‪:5000‬‬
‫‪# Kerberos should only be applied to ldap/kerberos users, not local ones.‬‬
‫‪for i in common-auth common-session common-account common-password; do‬‬
‫\ ‪sudo sed -i -r‬‬
‫\ '‪-e 's/pam_krb5.so minimum_uid=1000/pam_krb5.so minimum_uid=5000/‬‬
‫‪/etc/pam.d/$i‬‬
‫‪done‬‬

‫▲‬ ‫‪| 220‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫هذا ما سيتجنب الطلب لسكلما ت مرور )غير موجتودة( لمس تخدم موثتوق محلصيتا عنتد تغييتر كلمتة‬

‫المرور باستخدام ‪.passwd‬‬

‫يمسكنك اختبار الضبط بطلب بطاقة باستخدام الداة ‪ ،kinit‬على سبيل المثال‪:‬‬

‫‪kinit steve@EXAMPLE.COM‬‬
‫‪Password for steve@EXAMPLE.COM:‬‬

‫يمسكن عرض التفاصيل عند إعطاء بطاقة باستخدام ‪:klist‬‬

‫‪klist‬‬
‫‪Ticket cache: FILE:/tmp/krb5cc_1000‬‬
‫‪Default principal: steve@EXAMPLE.COM‬‬
‫‪Valid starting‬‬ ‫‪Expires‬‬ ‫‪Service principal‬‬
‫‪07/24/08 05:18:56‬‬ ‫‪07/24/08 15:18:56‬‬
‫‪krbtgt/EXAMPLE.COM@EXAMPLE.COM‬‬
‫‪renew until 07/25/08 05:18:57‬‬

‫‪Kerberos 4 ticket cache: /tmp/tkt1000‬‬


‫‪klist: You have no tickets cached‬‬

‫ثتتتتم استتتتتخدم ‪ auth-client-config‬لضتتتتبط وحتتتتدة ‪ libpam-krb5‬لطلتتتتب بطاقتتتتة أثنتتتتاء‬

‫تسجيل الدخول‪:‬‬

‫‪sudo auth-client-config -a -p kerberos_example‬‬

‫يجب أن تحصل الن على بطاقة بعد عملية استيثاق ظناجحة‪.‬‬

‫▲‬ ‫‪| 221‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ه‪ .‬مصادر‬

‫للمزيد من المعلوما ت حول ظنسخة ‪ MIT‬من ‪ ،Kerberos‬راجع موقع »‪.«MIT Kerberos‬‬ ‫•‬

‫توجد بعض التفاصيل في صفحة ويسكي أوبنتو »‪.«Kerberos‬‬ ‫•‬

‫السكتتتاب متتن ‪ O'Reilly‬المستتمى » ‪ «Kerberos: The Definitive Guide‬هتتو مرجتتع‬ ‫•‬

‫ممتاز أثناء ضبط ‪.Kerberos‬‬

‫ي ‪ #ubuntu-server‬و ‪ #kerberos‬علتتتى ختتادوم ‪IRC‬‬ ‫ن‬ ‫ص‬


‫تستتتتطيع أيضتتا القتتتدوم إلتتتى قنتتتات د‬ ‫•‬

‫الشهير ‪ Freenode‬إذا كاظنت لديك أسئلة حول ‪.Kerberos‬‬

‫▲‬ ‫‪| 222‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪ .4‬اتستخدام ‪ Kerberos‬مع ‪LDAP‬‬


‫ل يستعمل أغلب الناس ‪ Kerberos‬لوحده‪ ،‬فبعد أن يستوثق المستخدم ) ‪ ،(Kerberos‬فسنحتاج‬

‫لمعرفة ماذا بإمسكاظنه أن يفعل )تصريح ]‪([authorization‬؛ وهنا تسكون مهمة البرامج مثل ‪.LDAP‬‬

‫قد يسكون استنساخ قاعدة مبادئ ‪ Kerberos‬بين خادومين أمصرا معقصدا‪ ،‬ويضيف قاعتتدة بياظنتتا ت‬

‫مستتتتخدم أختتترى إلتتتى شتتتبسكتك؛ لحستتتن الحتتتظ‪ MIT Kerberos ،‬مضتتتبوةط ليستتتتخدم دليتتتل ‪LDAP‬‬

‫ي ‪ Kerberos‬الرئيستتي والثتتاظنوي لستتتخدام‬


‫كقاعدة بياظنا ت للمبادئ؛ يشرح هتتذا القستتم ضتتبط ختتادونم د‬
‫‪ OpenLDAP‬لقاعدة بياظنا ت المبادئ‪.‬‬

‫ملحظة‪ :‬المثلة هنا تستخدم ‪ MIT Kerberos‬و ‪.OpenLDAP‬‬

‫ا‪ .‬ضبط ‪OpenLDAP‬‬

‫أوصل‪ ،‬يجب تحميل المخطط الضتروري علتى خ ادوم ‪ OpenLDAP‬التذي لتديه اتصال شتبسكي متع‬

‫مركز توزيع المفاتيح الرئيسي والثاظنوي؛ بقية هذا القسم تفترض أن لديك استنستتاخ ‪ LDAP‬مضتتبوط‬

‫بيتتن ختتادومين علتتى القتتل؛ للمزيتتد متتن المعلومتتا ت حتتول ضتتبط ‪ OpenLDAP‬راجتتع القستتم »ختتادوم‬

‫‪.«OpenLDAP‬‬

‫متتن المطلتتوب أي ص‬
‫ضتتا ضتتبط ‪ OpenLDAP‬متتن أجتتل اتصتتال ت ‪ TLS‬و ‪SSL‬؛ لتتذلك ستتتسكون جميتتع‬

‫البياظنا ت المارة بين خادومي ‪ LDAP‬و ‪ KDC‬مشفرصة؛ راجع القسم »‪ «TLS‬للتفاصيل‪.‬‬

‫ملحظة‪ cn=admin,cn=config :‬هو المستخدم الذي أظنشأظناه مع امتيتاز السكتابتة إل ى قاعتدة بياظنتا ت ‪ldap‬؛ تسكتون‬
‫القيمة في كثير من الحيان هي ‪ ،RootDN‬عددل قيمته وفصقا للضبط عندك‪.‬‬

‫▲‬ ‫‪| 223‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫؛ أي أد ش‬LDAP ‫ فتتي ختتادوم‬krb5-kdc-ldap ‫ فثدبت الحزمتتة‬،LDAP ‫لتحميل المخطط على‬


‫ختتل‬

:‫المر التي في الطرفية‬

sudo apt-get install krb5-kdc-ldap

:kerberos.schema.gz ‫ثم استخرج محتويا ت الملف‬

sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz


sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema \
/etc/ldap/schema/

‫؛ آليتة إضتافة مخطتط جديتتد إلتى‬cn=config ‫ إلتى شتتجرة‬kerberos ‫يجب أن يضتاف مخطتتط‬

.«slapd ‫ مفصلةة في قسم »تعديل قاعدة بياظنا ت ضبط‬slapd

‫ يحتتتوي‬،‫ أو أي استتم آختتر ذي معنتتى‬،schema_convert.conf ‫ أظنششتتئ ملتتف ضتتبط باستتم‬،‫أوصل‬

:‫على السطر التية‬

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/kerberos.schema

▲ | 224
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:LDIF ‫أظنششئ مجلصدا مؤقصتا لحتواء ملفا ت‬

mkdir /tmp/ldif_output

:‫ لتحويل ملفا ت المخطط‬slapcat ‫استخدم الن‬

slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s \


"cn={12}kerberos,cn=schema,cn=config" > /tmp/cn\=kerberos.ldif

.‫عددل اسم الملف والمسار السابق لنيطاشبق ما عندك إن كان مختلصفا‬

:/tmp/cn=kerberos.ldif ‫عددل الخاصيا ت التية في الملف المونلد‬

dn: cn=kerberos,cn=schema,cn=config
...
cn: kerberos

:‫واحذف السطر التية من ظنهاية الملف‬

structuralObjectClass: olcSchemaConfig
entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc
creatorsName: cn=config
createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090111203515Z

.‫ لسكن تأكد أظنها قد شنحشذنفت‬،‫قد تختلف قيم تلك الخاصيا ت‬

▲ | 225
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

:ldapadd ‫حدمل المخطط الجديد بالمر‬

ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn=kerberos.ldif

:krb5principalname ‫أضف فهرصسا لخاصية‬

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
modifying entry "olcDatabase={1}hdb,cn=config"

:(ACL) ‫ حددث قوائم التحسكم في الوصول‬،‫وفي النهاية‬

ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
dn: olcDatabase={1}hdb,cn=config
replace: olcAccess
olcAccess: to
attrs=userPassword,shadowLastChange,krbPrincipalKey by
dn="cn=admin,dc=example,dc=com" write by anonymous auth by self
write by * none
-
add: olcAccess
olcAccess: to dn.base="" by * read
-
add: olcAccess
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by *
read
modifying entry "olcDatabase={1}hdb,cn=config"

.Kerberos ‫ جاهصزا لسكي يخدم كقاعدة بياظنا ت مبادئ‬LDAP ‫ أصبح دليل‬،‫هذا كل ما في المر‬

▲ | 226
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ ضبط مركز توزيع المفاتيح الرئيسي‬.‫ب‬

.‫ حان الوقت الن لضبط مركز توزيع المفاتيح‬،OpenLDAP ‫بعد ضبط‬

:‫ بتنفيذ المر‬،‫ ثدبت الحزم الضرورية التية‬،‫أوصل‬

sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap

:‫ بإضافة الخيارا ت التية تحت القسام الملئمة لها‬/etc/krb5.conf ‫عددل الن ملف‬

[libdefaults]
default_realm = EXAMPLE.COM
...

[realms]
EXAMPLE.COM = {
kdc = kdc01.example.com
kdc = kdc02.example.com
admin_server = kdc01.example.com
admin_server = kdc02.example.com
default_domain = example.com
database_module = openldap_ldapconf
}
...

[domain_realm]
.example.com = EXAMPLE.COM

...

[dbdefaults]
ldap_kerberos_container_dn = dc=example,dc=com

▲ | 227
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and
realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read and write rights
on
# the realm container, principal container and
realm sub-trees
ldap_service_password_file =
/etc/krb5kdc/service.keyfile
ldap_servers = ldaps://ldap01.example.com
ldaps://ldap02.example.com
ldap_conns_per_server = 5
}

،cn=admin,dc=example,dc=com ‫ و‬،dc=example,dc=com ‫ و‬،example.com ‫ عتتتتتددل قيتتتتتم‬:‫ملحظظظظظظة‬


.‫ لشبسكتك‬LDAP ‫ وخادوم‬،LDAP ‫ وكائن‬،‫ للقيم الملئمة للنطاق‬ldap01.example.com ‫و‬

:‫ لظنشاء الحقل‬kdb5_ldap_util ‫ استخدم الداة‬،‫لحصقا‬

sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com create \


-subtrees dc=example,dc=com -r EXAMPLE.COM -s \
-H ldap://ldap01.example.com

▲ | 228
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫أظنششتئ »مخبتأص« )‪ (stash‬لسكلمتة المتترور المستتخدم فتتي ختادوم ‪ ،LDAP‬تستتخدم هتتذه السكلمتتة متتن‬

‫‪ ldap_kdc_dn‬و ‪ ldap_kadmind_dn‬في ملف ‪:/etc/krb5.conf‬‬

‫\ ‪sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw‬‬


‫‪-f /etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com‬‬

‫اظنسخ شهادة سلطة الشهادا ت من خادوم ‪:LDAP‬‬

‫‪scp ldap01:/etc/ssl/certs/cacert.pem .‬‬


‫‪sudo cp cacert.pem /etc/ssl/certs‬‬

‫الن عددل ‪ /etc/ldap/ldap.conf‬ليستخدم الشهادة‪:‬‬

‫‪TLS_CACERT /etc/ssl/certs/cacert.pem‬‬

‫ملحظة‪ :‬يجب أن نتننسخ الشتهادة أي صضتا إلتى مرك ز توزي ع المفاتي ح الثتاظنوي‪ ،‬للستماح بالتصتال إل ى ختواديم ‪LDAP‬‬
‫باستخدام ‪.LDAPS‬‬

‫▲‬ ‫‪| 229‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫تستطيع الن إضافة مبادئ ‪ Kerberos‬إلى قاعدة بياظنا ت ‪ ،LDAP‬وسنتننسخ إلى بقيتتة ختتواديم‬

‫‪ LDAP‬المضبوطة للستنساخ‪ .‬فأدخل ما يليل لضافة مبدأ باستخدام الداة ‪:kadmin.local‬‬

‫‪sudo kadmin.local‬‬
‫‪Authenticating as principal root/admin@EXAMPLE.COM with‬‬
‫‪password.‬‬
‫‪kadmin.local: addprinc -x‬‬
‫‪dn="uid=steve,ou=people,dc=example,dc=com" steve‬‬
‫‪WARNING: no policy specified for steve@EXAMPLE.COM; defaulting‬‬
‫‪to no policy‬‬
‫‪Enter password for principal "steve@EXAMPLE.COM":‬‬
‫‪Re-enter password for principal "steve@EXAMPLE.COM":‬‬
‫‪Principal "steve@EXAMPLE.COM" created.‬‬

‫يجتتتتتتتتتتتتتتتتتتتتتتتب أن تسكتتتتتتتتتتتتتتتتتتتتتتتون خاصتتتتتتتتتتتتتتتتتتتتتتتيا ت ‪ ،krbPrincipalName‬و ‪،krbPrincipalKey‬‬

‫و ‪ ،krbLastPwdChange‬و ‪ krbExtraData‬مضتتتتتتتتافصة إلتتتتتتتتى كتتتتتتتتائن المستتتتتتتتتخدم ‪uid=steve,‬‬

‫ي ‪ kinit‬و ‪ klist‬لختبتتتتتار إذا أصتتتتتدر‬ ‫ن‬


‫‪ou=people, dc=example, dc=com‬؛ استتتتتتخدم أداتتتتتت د‬

‫المستخدم المعين بطاقصة‪.‬‬

‫ملحظة‪ :‬إذا كان كائن المستخدم نمنشتصأ مستبصقا‪ ،‬فإظنه يجتب إضتافة الخيتار "‪ -x dn="...‬إل ى خاصتيا ت ‪Kerberos‬؛‬
‫لظنه سنيننشأ فيما عدا ذلك كائن مبدأي جديد في شجرة الحقل الفرعية‪.‬‬

‫▲‬ ‫‪| 230‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ ضبط مركز توزيع المفاتيح الثانوي‬.‫ج‬

‫ هتتتو شتتتبيه بضتتتبطه لستتتتخدام قاعتتتدة‬LDAP ‫ضتتتبط مركتتتز توزيتتتع المفاتيتتتح الثتتتاظنوي لستتتتخدم‬

.‫ العادية‬Kerberos ‫بياظنا ت‬

:‫ بتطبيق المر التي في الطرفية‬،‫ ثبت الحزم الضرورية‬،‫أوصل‬

sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap

:LDAP ‫ ليستخدم‬/etc/krb5.conf ‫عددل الن ملف‬

[libdefaults]
default_realm = EXAMPLE.COM

...

[realms]
EXAMPLE.COM = {
kdc = kdc01.example.com
kdc = kdc02.example.com
admin_server = kdc01.example.com
admin_server = kdc02.example.com
default_domain = example.com
database_module = openldap_ldapconf
}

...

[domain_realm]
.example.com = EXAMPLE.COM

...

[dbdefaults]
ldap_kerberos_container_dn = dc=example,dc=com

[dbmodules]

▲ | 231
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

openldap_ldapconf = {
db_library = kldap
ldap_kdc_dn = "cn=admin,dc=example,dc=com"
# this object needs to have read rights on
# the realm container, principal container and
realm sub-trees
ldap_kadmind_dn = "cn=admin,dc=example,dc=com"

# this object needs to have read and write


rights on
# the realm container, principal container and
realm sub-trees
ldap_service_password_file =
/etc/krb5kdc/service.keyfile
ldap_servers = ldaps://ldap01.example.com
ldaps://ldap02.example.com
ldap_conns_per_server = 5
}

:LDAP ‫أظنششئ مخبصأ لسكلمة مرور‬

sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw \


-f /etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com

/etc/krb5kdc/.k5.EXAMPLE.C ‫« على المركز الرئيس ي‬Master Key» ‫الن اظنسخ مخبأ‬

‫ أو عتتبر‬،scp ‫ إلتتى مركتتز توزيتتع المفاتيتتح الثتتاظنوي؛ تأكتتد متتن ظنستتخ الملتتف عتتبر اتصتتال مشتتفر مثتتل‬OM

.‫وسيط تخزين فيزيائي‬

sudo scp /etc/krb5kdc/.k5.EXAMPLE.COM steve@kdc02.example.com:~


sudo mv .k5.EXAMPLE.COM /etc/krb5kdc/

.‫ باسم الحقل الحقيقي‬EXAMPLE.COM ‫ استبدل‬،‫ مرصة أخرى‬:‫ملحظة‬

▲ | 232
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫وبالعودة إلى المركز الثاظنوي‪ ،‬أعد تشغيل خادوم ‪ ldap‬فقط‪:‬‬

‫‪sudo service slapd restart‬‬

‫في النهاية‪ ،‬ابدأ عفريت ‪:krb5-kdc‬‬

‫‪sudo service krb5-kdc start‬‬

‫ي ‪) ldap‬وبالتالي ‪ (kerberos‬متزامننين‪.‬‬
‫تأكد أن خادونم د‬

‫تستطيع الن إكمال استيثاق المستخدمين إن أصبح ختتادوم ‪ LDAP‬أو ‪ ،Kerberos‬أو ختتادوم‬

‫‪ LDAP‬وخادوم ‪ Kerberos‬غير متوفرين‪.‬‬

‫د‪ .‬مصادر‬

‫لدى دليل »‪ «Kerberos Admin Guide‬بعض التفاصيل الضافية‪.‬‬ ‫•‬

‫للمزيد من المعلوما ت حول ‪ kdb5_ldap_util‬راجع صفحة دليل ‪.man kdb5_ldap_util‬‬ ‫•‬

‫مصدر آخر مفيد هو صفحة الدليل ‪.man krb5.conf‬‬ ‫•‬

‫اظنظر أي ص‬
‫ضا لصفحة ويسكي أوبنتو‪.«Kerberos and LDAP» :‬‬ ‫•‬

‫▲‬ ‫‪| 233‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪ .5‬اتستخدام ‪ SSSD‬مع ‪Active Directory‬‬


‫يشتتترح هتتتذا القستتم استتتتخدام ‪ SSSD‬للستتتتيثاق متتتن تستتتجيل ت دختتتول المستتتخدم باستتتتخدام‬

‫‪ Active Directory‬بطريقتة »‪«ad‬؛ أمتا فتي الصتدارا ت القديمتة متتن ‪ ،sssd‬كان متن الممسكتن أن يتتم‬

‫الستتتيثاق بطريقتتة »‪ ،«ldap‬لسكتتن عنتتدما يتتتم الستتتيثاق باستتتخدام مايسكروستتوفت وينتتدوز ‪Active‬‬

‫‪ ،Directory‬فسكتتان متتن الضتتروري تثتتبيت إضتتافا ت ‪ POSIX AD‬فتتي المتحسكتتم بالنطتتاق؛ لسكتتن طريقتتة‬

‫»‪ «ad‬تبدسط الضبط ول تتطلب أدية تغيرا ت في بنية المتحسكم بالنطاق‪.‬‬

‫ا‪ .‬الشروط المسبقة والافتراضات والمتطلبات‬

‫ظنفترض أن لديك ‪ Active Directory‬مضبوط وجاهز للعمل‪.‬‬ ‫•‬

‫ظنفترض أن المتحسكم بالنطاق يعمل كخادوم ‪.DNS‬‬ ‫•‬

‫ظنفترض أن المتحسكم بالنطاق هو خادوم ‪ DNS‬الرئيسي المحدد في ‪./etc/resolv.conf‬‬ ‫•‬

‫ظنفترض أن قيود ‪ ،_kerberos‬و‪ ،_ldap‬و ‪... _kpasswd‬إلخ‪ .‬مضبوطة في منطقة ‪.DNS‬‬ ‫•‬

‫ظنفترض أن الوقت نمزانمةن على المتحسكم بالنطاق‪.‬‬ ‫•‬

‫النطاق المستخدم في هذا المثال هو ‪.myubuntu.example.com‬‬ ‫•‬

‫ب‪ .‬التثبيت‬

‫يجتب تثتبيت الحتزم ‪ ،krb5-user‬و ‪ ،samba‬و ‪ ،sssd‬و ‪ntp‬؛ ظنحت اج إلتى تثتبيت ستامبا ح تى‬

‫لتتو لتتم نيقتتددم الختتادوم أديتتة مشتتاركا ت‪ .‬هنالتتك حاجتتة لحقتتل ‪ Kerberos‬والستتم السكامتتل أو عنتتوان ‪IP‬‬

‫للمتحسكما ت بالنطاق‪.‬‬

‫▲‬ ‫‪| 234‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫أد ش‬
‫خل المر التي لتثبيت تلك الحزم‪:‬‬

‫‪sudo apt-get install krb5-user samba sssd ntp‬‬

‫اظنظتتر إلتى القستم التتالي لطريقتة الجابتة عتتن الستئلة التتي يستألها الستسكربت المشتنغل بعتد تثتتبيت‬

‫حزمة ‪.krb5-user‬‬

‫ج‪ .‬ضبط ‪Kerberos‬‬

‫سنتستتأل عنتتد تثتتبيت حزمتتة ‪ krb5-user‬عتتن استتم الحقتتل )‪ (realm name‬بتتأحر ت‬


‫ف كتتبيرة؛‬

‫وعن خادوم مركز توزيع المفاتيح ) أي المتحسكتتم بالنطتتاق( وعتتن الختتادوم المتتدير )المتحسكتتم بالنطتتاق‬

‫أي ص‬
‫ضتتتا فتتتي هتتتذا المثتتتال(؛ وهتتتذا متتتا ستتتيسكتب القستتتمين ]‪ [realm‬و ] ‪ [domain_realm‬فتتتي ملتتتف‬

‫‪ /etc/krb5.conf‬؛ هتتتتذه القستتتتام ليستتتتت ضتتتترورية إن كتتتتان الكتشتتتتاف التلقتتتتائي للنطتتتتاق مفدعصل‪،‬‬

‫ي‪.‬‬
‫خل ذلك فسكلهما ضرور ة‬

‫إذا كتتتتتتان استتتتتتم النطتتتتتتاق ‪ ،myubuntu.example.com‬فأد ش‬


‫ختتتتتتل استتتتتتم الحقتتتتتتل كمتتتتتتا يلتتتتتتي‪:‬‬

‫‪.MYUBUNTU.EXAMPLE.COM‬‬

‫وبشسكل اختياري‪ ،‬عددل الملف ‪ /etc/krb5.conf‬مضتيصفا بعتض الخيارا ت لتحديتد متدة صتلحية‬

‫بطاقة ‪) Kerberos‬هذه القيم جيدة لتستخدم قيصما افتراضيصة(‪:‬‬

‫]‪[libdefaults‬‬

‫‪default_realm = MYUBUNTU.EXAMPLE.COM‬‬
‫‪ticket_lifetime = 24h #‬‬

‫▲‬ ‫‪| 235‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫‪renew_lifetime = 7d‬‬

‫إذا لتتتتم نتحتتتتندد قيمتتتتة ‪ ،default_realm‬فربمتتتتا متتتتن الضتتتتروري تستتتتجيل التتتتدخول باستتتتتخدام »‬

‫‪ «username@domain‬بدصل من »‪.«username‬‬

‫يجتتتب أن يسكتتتون وقتتتت النظتتتام فتتتي عضتتتو ظنطتتتاق ‪ Active Directory‬متوافصقتتتا متتتع متتتثيله فتتتي‬

‫المتحسكتتتم بالنطتتتاق‪ ،‬وإل فستفشتتتل عمليتتتة الستتتتيثاق باستتتتخدام ‪Kerberos‬؛ فمثصل‪ ،‬يمسكتتتن أن نيتتتودفر‬

‫خادوم المتحسكم بالنطاق خدمة ‪NTP‬؛ عددل الملف ‪:/etc/ntp.conf‬‬

‫‪server dc.myubuntu.example.com‬‬

‫د‪ .‬ضبط سامبا‬

‫يجتتب أن نيستتتخندم ستتامبا لتتتوفير ختتدما ت ‪ netbois/nmbd‬المتعلقتتة بالستتتيثاق متتن ‪Active‬‬

‫‪ ،Directory‬حتى وإن لم نتشانرك أدية ملفا ت‪ .‬عددل الملتتف ‪ /etc/samba/smb.conf‬وأضتتف متتا يلتتي‬

‫إلى قسم ] ‪:[global‬‬

‫]‪[global‬‬

‫‪workgroup = MYUBUNTU‬‬
‫‪client signing = yes‬‬
‫‪client use spnego = yes‬‬
‫‪kerberos method = secrets and keytab‬‬
‫‪realm = MYUBUNTU.EXAMPLE.COM‬‬
‫‪security = ads‬‬

‫ملحظة‪ :‬بعض المراجع تقول أظنه يجب تحديد » ‪ «password server‬وأن يشير إلتى المتحسكتم بالنطتاق؛ لسكتن هتذا‬

‫▲‬ ‫‪| 236‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الستيثاق الشبسكي‬

‫ضتتشبنط‬
‫ للعثتتور علتتى المتحسكتتم بالنطتتاق؛ حيتتث نيعتتشرض ستتامبا افتراضتتصيا تحتتذيصرا إن ن‬DNS ‫ي فقتتط إن لتتم نيضتتنبط‬
‫ضتترور ة‬
.«security = ads » ‫« مع‬password server» ‫الخيار‬

SSSD ‫ ضبط‬.‫ه‬

‫ في حزمة‬/etc/sssd/sssd.conf ‫ل يوجد ملف ضبط افتراضي أو مثال عن ملف الضبط لملف‬

:‫ ؛ فمن الضروري إظنشاء واحد؛ ها هو ذا أصغر ملف ضبط يمسكن أن يعمل‬sssd

[sssd]

services = nss, pam


config_file_version = 2
domains = MYUBUNTU.EXAMPLE.COM

[domain/MYUBUNTU.EXAMPLE.COM]
id_provider = ad
access_provider = ad

# Use this if users are being logged in at /.


# This example specifies /home/DOMAIN-FQDN/user as $HOME.
# Use with pam_mkhomedir.so
override_homedir = /home/%d/%u

# Uncomment if the client machine hostname doesn't match


# the computer object on the DC.
# ad_hostname = mymachine.myubuntu.example.com

# Uncomment if DNS SRV resolution is not working


# ad_server = dc.mydomain.example.com

# Uncomment if the AD domain is named differently than the


Samba domain
# ad_domain = MYUBUNTU.EXAMPLE.COM

# Enumeration is discouraged for performance reasons.


# enumerate = true

▲ | 237
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫بعد حفظ الملف‪ ،‬فاظنقل الملسكية إلى الجذر‪ ،‬وغدير أذوظنا ت الملف إلى ‪:600‬‬

‫‪sudo chown root:root /etc/sssd/sssd.conf‬‬


‫‪sudo chmod 600 /etc/sssd/sssd.conf‬‬

‫حيث سيرفض ‪ sssd‬أن يعمل إن لم تسكن الملسكية أو الذوظنا ت صحيحصة‪.‬‬

‫و‪ .‬التأكد من ضبط ‪nsswitch.conf‬‬

‫الستتتتتتسكربت التتتتتتذي يعمتتتتتتل بعتتتتتتد تثتتتتتتبيت حزمتتتتتتة ‪ sssd‬نيجتتتتتتري بعتتتتتتض التعتتتتتتديل ت علتتتتتتى ملتتتتتتف‬

‫‪ /etc/nsswitch.conf‬تلقائصيا؛ حيث يجب أن يسكون كما يلي‪:‬‬

‫‪passwd:‬‬ ‫‪compat sss‬‬


‫‪group:‬‬ ‫‪compat sss‬‬
‫‪...‬‬
‫‪netgroup:‬‬ ‫‪nis sss‬‬
‫‪sudoers:‬‬ ‫‪files sss‬‬

‫ز‪ .‬تعديل ملف ‪/etc/hosts‬‬

‫أضتف استصما بتدي صل التذي يحتدد استم النطتاق السكامتل للحاس وب المحلتي فتي ملتف ‪/etc/hosts‬‬

‫كما يلي‪:‬‬

‫‪192.168.1.10 myserver myserver.myubuntu.example.com‬‬

‫هذا مفيد لستخدامه مع تحديثا ت ‪ DNS‬الديناميسكية‪.‬‬

‫▲‬ ‫‪| 238‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ح‪ .‬النضمام إلى ‪Active Directory‬‬

‫عليك الن إعادة تشغيل ‪ ntp‬و ‪ ،samba‬وتشغيل ‪:sssd‬‬

‫‪sudo‬‬ ‫‪service ntp restart‬‬


‫‪sudo‬‬ ‫‪restart smbd‬‬
‫‪sudo‬‬ ‫‪restart nmbd‬‬
‫‪sudo‬‬ ‫‪start sssd‬‬

‫ثم اختبر الضبط بمحاولة الحصول على بطاقة ‪:Kerberos‬‬

‫‪sudo kinit Administrator‬‬

‫تحقق من البطاقة باستخدام‪:‬‬

‫‪sudo klist‬‬

‫إذا كاظنت هنالك بطاقة مع تاريخ اظنتهاء الصلحية‪ ،‬فقد حان الوقت للظنضمام إلى النطاق‪:‬‬

‫‪sudo net ads join -k‬‬

‫التحتتذير » ‪«No DNS domain configured. Unable to perform DNS Update.‬‬

‫يعني أظنه ليس هنالك اسم بديل )أو اسم بديل صحيح( في ملف ‪ ،/etc/hosts‬ول يمسكن للنظام توفير‬

‫السم السكامل له؛ فعليك التحقق من السم البديل في ‪ /etc/hosts‬كما هو مشتتروح فتتي قستتم »تعتتديل‬

‫ملف ‪ «/etc/hosts‬أعله‪.‬‬

‫▲‬ ‫‪| 239‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫الرستتالة »‪ «NT_STATUS_UNSUCCESSFUL‬تشتتير إلتتى أن الظنضتتمام إلتتى النطتتاق قتتد فشتتل‬

‫وأن هنالك شيء ما خاطئ‪ ،‬عليك مراجعة الخطوا ت السابقة وإصلح المشسكلة قبل الكمال‪.‬‬

‫هنالك تحققان آخران اختياريان للتأكد من أن الظنضمام إلى النطاق قد ظنجح؛ لحظ أظنه إذا ظنجح‬

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

‫المحاولة مر صة أخرى؛ حيث يبدو أن بعض التغيرا ت ل تحدث في الوقت الحقيقي‪.‬‬

‫التحقق الول‪:‬‬

‫تحقتتتق متتتن »وحتتتدة التنظيتتم« )‪ (Organizational Unit‬لحستتتابا ت الحواستتتيب فتتتي ‪Active‬‬


‫ن‬
‫‪ Directory‬للتأكتتد متتن أن حستتاب الحاستتوب قتتد أظن ششتتئ )وحتتدا ت التنظيتتم هتتي موضتتوع ختتارج عتتن‬

‫ظنطاق هذا السكتاب(‪.‬‬

‫التحقق الثاني‪:‬‬

‫ظندفذ المر التي لمستخدم ‪ AD‬معدين )المدير مثصل(‪:‬‬

‫‪getent passwd username‬‬

‫ملحظة‪ :‬إذا ضتبطت الخاصتية » ‪ «enumerate = ture‬فتي ملتف ‪ ،sssd.conf‬فتإن المتر ‪ getnet passwd‬دون‬
‫تمريتتر استتم مستتتخدم كوستتيط ستتنيعرض جميتتع مستتتخدمي النطتتاق؛ ربمتتا يسكتتون هتتذا الستتلوك مفيتتصدا للختبتتار‪ ،‬لسكنتته‬
‫بطيء وغير مستحسن للخواديم الظنتاجية‪.‬‬

‫▲‬ ‫‪| 240‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ط‪ .‬اتختبار الستيثاق‬

‫يجب أن يسكون الن من الممسكن الستيثاق عبر ‪:Active Directory‬‬

‫‪su - username‬‬

‫إذا نعشم ن‬
‫ل المر السابق بنجاح‪ ،‬فيجب أن تعمل بقية طرق الستيثاق )‪ ،getty‬و ‪.(SSH‬‬

‫ن‬
‫إذا أظن ششئ حساب الحاسوب‪ ،‬مما يشير إلى أن النظام قد اظنضم إلى النطاق‪ ،‬لسكن فشل الستيثاق؛‬

‫فربمتتتتتا متتتتتن المفيتتتتتد مراجعتتتتتة الملتتتتتف ‪ /etc/pam.d‬و ‪ sssdwitch.conf‬وأي ص‬


‫ضتتتتتا تغيتتتتترا ت الملفتتتتتا ت‬

‫المشروحة آظنصفا في هذا القسم‪.‬‬

‫ي‪ .‬مجلدات المنزل مع ‪pam_mkhomedir‬‬

‫عنتتتتد تستتتتجيل التتتتدخول باستتتتتخدام حستتتتاب مستتتتتخدم ‪ ،Active Directory‬فمتتتتن المحتمتتتتل‬

‫أ دل يسكتتون للمستتتخدم مجلتتد منتتزل‪ ،‬ويمسكتتن حتتل هتتذه المشتتسكلة باستتتخدام ‪،pam_mkhomedir.so‬‬

‫حيتث سنيننشتأ مجلتد المنتتزل للمستتخدم عنتتد تستجيل التدخول؛ عتددل ملتتف ‪/etc/pam.d/common-‬‬

‫‪ ،session‬وأضف هذا السطر مباشرصة بعد » ‪:«session required pam_unix.so‬‬

‫‪session‬‬ ‫‪required‬‬ ‫‪pam_mkhomedir.so skel=/etc/skel/ umask=0022‬‬

‫ملحظة‪ :‬قد تحتاج إلى » ‪ «override_homedir‬في مل ف ‪ sssd.conf‬للعم ل عمصل صتحيصحا‪ ،‬تأك د م ن ض بط تل ك‬


‫الخاصية هناك‪.‬‬

‫▲‬ ‫‪| 241‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الستيثاق الشبسكي‬

‫ك‪ .‬الستيثاق افي سطح مكتب أوبنتو‬

‫متتن الممسكتتن أي ص‬
‫ضتتا الستتتيثاق متتن المستتتخدمين فتتي ستتطح مسكتتتب أوبنتتتو باستتتخدام حستتابا ت‬

‫‪Active Directory‬؛ لسكتتتتن لتتتتن تظهتتتتر أستتتتماء حستتتتابا ت مستتتتتخدمي ‪ AD‬فتتتتي قائمتتتتة الختيتتتتار متتتتع‬

‫المستخدمين المحليين‪ ،‬لذلك يجب تعتديل ‪lightdm‬؛ وذلتك بتحريتر الملتف ‪/etc/lightdm/lightd‬‬

‫‪ m.conf.d/50-unity-greeter.conf‬وإضافة السطرين التيين‪:‬‬

‫‪greeter-show-manual-login=true‬‬
‫‪greeter-hide-users=true‬‬

‫أعد القلع لعادة تشغيل ‪ ،lightdm‬حيث يمسكن الن تسجيل الدخول باستخدام حساب تتتابع‬

‫للنطاق إما بالشسكل » ‪ «username‬أو » ‪.«username/username@domain‬‬

‫ل‪ .‬المصادر‬

‫صفحة مشروع ‪.SSSD‬‬ ‫•‬

‫مقالة » ‪.«DNS Server Configuration guidelines‬‬ ‫•‬

‫صفحة » ‪.«Active Directory DNS Zone Entries‬‬ ‫•‬

‫صفحة »‪.«Kerberos config options‬‬ ‫•‬

‫▲‬ ‫‪| 242‬‬


‫‪8‬‬
‫خدمة اتسم النطاق‬

‫‪DNS‬‬

‫▲‬ ‫‪| 243‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫خدمة اسم النطاق )‪ (Domain Name Service‬هي خدمة إظنترظنت تربتتط بيتتن عنتاوين ‪IP‬‬

‫وأستتماء النطتتاق السكاملتة ) ‪([FQDN] fully qualified domain names‬؛ وفتي هتذه الطريقتتة‪،‬‬

‫تخفتتتف خدمتتتة ‪ DNS‬متتتن حاجتتتة تتتتذكر عنتتتاوين ‪ .IP‬تستتتمى الحواستتتيب التتتتي تشتتتدغل خدمتتتة ‪DNS‬‬

‫»خواديم السماء«‪ ،‬ويأتي أوبنتو مع ‪ ،(Brekley Internet Naming Daemon ) BIND‬وهو‬

‫أشهر خدمة لعداد خادوم أسماء في ليننسكس‪.‬‬

‫‪ .1‬التثبيت‬
‫خل المر التي في شمنحث الطرفية لتثبيت خادوم ‪:dns‬‬
‫أد ش‬

‫‪sudo apt-get install bind9‬‬

‫حزمة ‪ dnsutils‬مفيدةة جتتصدا فتتي اختبتتار واستسكشتتاف أخطتتاء ‪DNS‬؛ قتتد تسكتتون هتتذه الدوا ت‬

‫مثبتصة مسبصقا على ظنظامك؛ لسكن للتأكد من وجودها أو تثبيتها‪ ،‬أد ش‬


‫خل المر التي‪:‬‬

‫‪sudo apt-get install dnsutils‬‬

‫▲‬ ‫‪| 244‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫‪ .2‬الضبط‬
‫هنالك العديد من الطرق لضبط ‪ BIND9‬؛ لسكن بعض أشهر هذه العدادا ت هي ختتادوم تخزيتتن‬

‫أستتتماء ) ‪ ،(caching nameserver‬الرئيتتتس الولتتتي )‪ ،(primary master‬والرئيتتتس الثتتتاظنوي‬

‫)‪.(secondary master‬‬

‫عنتتتتد ضتتتبطه كختتتتادوم تخزيتتتتن أستتتماء‪ ،‬فستتتيجد ‪ BIND9‬جواصبتتتا عتتتن استتتتتعلما ت الستتتماء‬

‫وسيتذكر الجواب عندما نيطنلب النطاق مرصة أخرى‪.‬‬

‫عندما نيضنبط كختتادوم رئيتس أولتي‪ ،‬فستيقرأ ‪ BIND9‬البياظنتتا ت لنطتاق )‪ (Zone‬فتي ملتف فتتي‬

‫المضيف ويستوثق لهذا النطاق‪.‬‬

‫عنتتدما نيضتتنبط كختتادوم رئيتتس ثتتاظنوي؛ فسيحصتتل ‪ BIND9‬علتتى بياظنتتا ت النطتتاق متتن ختتادوم‬

‫أسماء آخر ويستوثق للنطاق‪.‬‬

‫ا‪ .‬لمحة‬

‫نتخنزن ملفا ت ضبط ‪ DNS‬فتي المجلتتد ‪ ،/etc/bind‬ملتتف الضتتبط الرئيستتي لتطتتبيق ‪ bind‬هتتو‬

‫‪./etc/bind/named.conf‬‬

‫نيحددد سطر ‪ include‬استتنم الملتتف التتذي يحتتتوي علتتى خيتتارا ت ‪DNS‬؛ ستتطر ‪ directory‬فتتي‬

‫ملف ‪ /etc/bind/named.conf.options‬يخبر ‪ DNS‬أين سيبحث عتتن الملفتتا ت‪ ،‬جميتتع الملفتتا ت‬

‫التي يستخدمها ‪ BIND‬ستتعلق بهذا المجلد‪.‬‬

‫▲‬ ‫‪| 245‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫يصف ملف ‪ /etc/bind/db.root‬خواديم السماء الرئيسية في العالم؛ تتغير هذه الخواديم‬

‫مع مرور الوقت‪ ،‬لذلك يجب أن نيحندث ملف ‪ /etc/bind/db.root‬بيتتن الحيتتن والختتر؛ وذلتتك يتتتم‬

‫عادصة في تحديثا ت حزمة ‪bind9‬؛ نيعدرف القسم ‪ zone‬خادوصما رئيستتصيا )‪ ،(master server‬وهتتو‬

‫مخزن في ملف مذكور في خيار ‪.file‬‬

‫من الممسكن ضبط ظنفس الخادوم ليسكون خادوم تخزيتتن أستماء‪ ،‬ورئيتتس أولتي‪ ،‬ورئيتس ثتتاظنوي؛‬

‫ويمسكتتن أن يسكتتون الختتادوم »بدايتتة الستتلطة« )‪ ([SOA] Start of Authority‬لنطتتاق واحتتد‪ ،‬بينمتتا‬

‫يوفر خدمة ثاظنوية لنطتتاق آختتر؛ ومتع كتتل هتذا فهتو يتوفر ختدما ت التخزيتن للمضتتيفين علتتى الشتتبسكة‬

‫المحلية ‪.LAN‬‬

‫ب‪ .‬تخادوم تخزين السماء‬

‫الضبط الفتراضي هو العمل كخادوم تخزين؛ كل ما هو مطلوب هتتو ببستتاطة إضتتافة عنتتاوين‬

‫‪ IP‬لخواديم ‪ DNS‬التي وفرها لتك متزود الخدمتة ‪ISP‬؛ ببستاطة‪ ،‬أزل التعليقتا ت عتن الستطر التيتة‬

‫وعدلها في ملف ‪:/etc/bind/named.conf.options‬‬

‫{ ‪forwarders‬‬
‫;‪1.2.3.4‬‬
‫;‪5.6.7.8‬‬
‫;}‬

‫ملحظة‪ :‬استبدل ‪ 1.2.3.4‬و ‪ 5.6.7.8‬بعناوين ‪ IP‬لخواديم السماء لديك‪.‬‬

‫▲‬ ‫‪| 246‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫أعتد الن تشتغيل ختادوم ‪ DNS‬لتفعيتل الضتبط الجديتد‪ ،‬وذل ك بتنفيتذ المتر التتي متن شمنحتث‬

‫الطرفية‪:‬‬

‫‪sudo service bind9 restart‬‬

‫راجع القسم »‪ «dig‬لمزيتد من المعلوما ت حول اختبار خادوم تخزين ‪.DNS‬‬

‫ج‪ .‬الرئيس اليولي‬

‫سنضتتبط فتتي هتتذا القستتم ‪ BIND9‬كختتادوم رئيتتس أولتتي للنطتتاق ‪example.com‬؛ استتتبدل‬

‫‪ example.com‬باسم ظنطاقك السكامل‪.‬‬

‫ملف تمرير المنطقة‬

‫لضتتافة منطقتتة ‪ DNS‬إلتتى ‪ ،BIND9‬ممتتا يحتتول ‪ BIND9‬إلتتى ختتادوم رئيتتس أولتتي‪ ،‬فتتإنن أول‬

‫خطوة هي تعديل ملف ‪:/etc/bind/named.conf.local‬‬

‫{ "‪zone "example.com‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.example.com‬‬
‫;}‬

‫ ت تلقائيتتتصة عتتتبر ‪ ،DDNS‬فعليتتتك استتتتخدام الملتتتف ‪/var/lib/bind‬‬


‫ملحظظظظة‪ :‬إذا كتتتان سيستتتتقبل ‪ bind‬تحتتتديثا ت‬
‫‪ /db.example.com‬بتتتدصل متتتن ‪ /etc/bind/db.example.com‬ستتتواصء فتتتي الملتتتف الستتتابق أو فتتتي أمتتتر النستتتخ‬
‫التي‪.‬‬

‫▲‬ ‫‪| 247‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫استخدم الن ملف ظنطاق موجود مسبصقا كقالب لظنشاء ملف ‪:/etc/bind/db.example.com‬‬

‫‪sudo cp /etc/bind/db.local /etc/bind/db.example.com‬‬

‫عددل ملف النطاق الجديد ‪ /etc/bind/db.example.com‬مغديتصرا ‪ localhost‬إلتى ‪FQDN‬‬

‫لخادومك‪ ،‬واترك النقطتتة الضتتافية فتتي النهايتتة؛ وغديتر ‪ 127.0.0.1‬إلتتى عنتوان ‪ IP‬لختادوم الستتماء‬

‫و ‪ root.localhost‬إلتتى عنتتوان بريتتد صتتالح‪ ،‬لسكتتن باستتتخدام "‪ ".‬بتتدصل متتن رمتتز "@" واتتترك أي ص‬
‫ضتتا‬

‫النقطة الضافية في النهاية؛ عددل التعليق لسكي يبدين النطاق الخاص بهذا الملف‪.‬‬

‫ضتتا أظنششتئ ستجصل لختادوم‬


‫أظنشئ »ستجصل« )‪ (record‬للنطتتاق الساستي‪ ،example.com ،‬وأي ص‬

‫السماء‪ ،‬الذي هو في هذا المثال ‪:ns.example.com‬‬

‫;‬
‫‪; BIND data file for example.com‬‬
‫;‬
‫‪$TTL‬‬ ‫‪604800‬‬
‫@‬ ‫‪IN‬‬ ‫‪SO‬‬ ‫( ‪example.com. root.example.com.‬‬
‫‪2‬‬ ‫‪; Serial‬‬
‫‪604800‬‬ ‫‪; Refresh‬‬
‫‪86400‬‬ ‫‪; Retry‬‬
‫‪2419200‬‬ ‫‪; Expire‬‬
‫‪604800‬‬ ‫‪; Negative Cache TTL‬‬
‫)‬
‫@‬ ‫‪IN‬‬ ‫‪A‬‬ ‫;‪192.168.1.10‬‬
‫@‬ ‫‪IN‬‬ ‫‪NS‬‬ ‫‪ns.example.com.‬‬
‫@‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.10‬‬
‫@‬ ‫‪IN‬‬ ‫‪AAAA‬‬ ‫‪::1‬‬
‫‪ns‬‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.10‬‬

‫يجتتب أن تزيتتد الرقتتم التسلستتلي ) ‪ (Serial Number‬فتتي كتتل متترة تعتتددل فيهتتا علتتى ملتتف‬

‫النطاق؛ إذا عندلت عدة تغيرا ت قبل إعادة تشغيل ‪ ،BIND9‬نفشزد الرقم التسلسلي مرصة واحدصة فقط‪.‬‬

‫▲‬ ‫‪| 248‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫تستطيع الن إضافة ستجل ت ‪ DNS‬في ظنهايتة ملتف المنطقتتة‪ ،‬راج ع القستم » أظن واع الستجل ت‬

‫الشائعة« للتفاصيل‪.‬‬

‫ملحظظظظة‪ :‬يحتتتب العديتتتد متتتن متتتدراء الظنظمتتتة استتتتخدام تاريتتتخ آختتتر تعتتتديل كرقتتتم تسلستتتلي للمنطقتتتة؛ مثتتتل‬
‫‪ 2012010100‬الذي هو ‪) yyyymmddss‬حيث ‪ ss‬هو الرقم التسلسلي(‪.‬‬

‫بعتتتد أن أجريتتتت تعتتتديلتك فتتتي ملتتتف النطتتتاق؛ فيجتتتب إعتتتادة تشتتتغيل ‪ BIND9‬لسكتتتي تأختتتذ‬

‫التعديل ت مجراها‪.‬‬

‫‪sudo service bind9 restart‬‬

‫ملف النطاق المعكوس‬

‫بعد أن ضبطت النطتاق لحتل الستماء إلتى عنتاوين ‪ ،IP‬فمتن المطلتوب أي ص‬


‫ضتا »ظنطتاق معسكتوس«‬

‫) ‪(Reverse zone‬؛ يسمح النطاق المعسكوس لخدمة ‪ DNS‬بحل العناوين إلى أسماء‪.‬‬

‫عددل ملف ‪ /etc/bind/named.conf.local‬وأضف ما يلي‪:‬‬

‫{ "‪zone "1.168.192.in-addr.arpa‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.192‬‬
‫;}‬

‫ملحظة‪ :‬استبدل ‪ 1.168.192‬بأول ثلث خاظنا ت تستخدمها شبسكتك؛ ونسدم ملف النطاق‬

‫▲‬ ‫‪| 249‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫‪ /etc/bind/db.192‬تستتميصة ملئمتتصة‪ ،‬حيتتث يجتتب أن نيطتتاشبق أول خاظنتتة متتن خاظنتتا ت عنتتوان‬

‫الشبسكة‪.‬‬

‫أظنششئ الن ملف ‪:/etc/bind/db.192‬‬

‫‪sudo cp /etc/bind/db.127 /etc/bind/db.192‬‬

‫ثم غدير ملف ‪ /etc/bind/db.192‬معددصل ظنفس الخيارا ت في ‪:/etc/bind/db.example.com‬‬

‫;‬
‫‪; BIND reverse data file for local 192.168.1.XXX net‬‬
‫;‬
‫‪$TTL‬‬ ‫‪604800‬‬
‫@‬ ‫‪IN‬‬ ‫‪SOA‬‬ ‫‪ns.example.com. root.example.com.‬‬
‫(‬
‫‪2‬‬ ‫‪; Serial‬‬
‫‪604800‬‬ ‫‪; Refresh‬‬
‫‪86400‬‬ ‫‪; Retry‬‬
‫‪2419200‬‬ ‫‪; Expire‬‬
‫‪604800‬‬ ‫‪; Negative Cache TTL‬‬
‫;)‬
‫@‬ ‫‪IN‬‬ ‫‪NS‬‬ ‫‪ns.‬‬
‫‪10‬‬ ‫‪IN‬‬ ‫‪PTR‬‬ ‫‪ns.example.com.‬‬

‫يجتب أن نيتزاد الرقتتم التسلستلي فتي النطتاق المعسكتوس فتي كتتل مترة نيعتندل فيهتتا الملتف‪ .‬فلسكتتل‬

‫ستتجل ‪ A‬تضتتبطه فتتي ‪ /etc/bind/db.example.com‬لعنتتوان مختلتتف‪ ،‬يجتتب عليتتك أن تن ش‬


‫شتتئ‬

‫سجل ‪ PTR‬في ‪./etc/bind/db.192‬‬

‫أعد تشغيل ‪ BIND9‬بعد إظنشاء ملف النطاق المعسكوس‪.‬‬

‫‪sudo service bind9 restart‬‬

‫▲‬ ‫‪| 250‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫د‪ .‬الرئيس الثانوي‬

‫بعد أن نيض نبط الرئيس الولي فسنحتاج إلى رئيس ثاظنوي لسكي ظنحتافظ علتتى بقتتاء النطتتاق فتتي‬

‫حال لم يسكن الرئيس الولي متوفصرا‪.‬‬

‫فتتتي البدايتتتة‪ ،‬يجتتتب أن نيستتت نمح بنقتتتل النطتتتاق فتتتي الختتتادوم الرئيتتتس الولتتتي؛ لتتتذا أضتتتف الخيتتتار‬

‫‪ allow-transfer‬إلى قسم النطاق والنطاق المعسكوس في ملف ‪:/etc/bind/named.conf.local‬‬

‫{ "‪zone "example.com‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.example.com‬‬
‫;} ;‪allow-transfer { 192.168.1.11‬‬
‫;}‬

‫{ "‪zone "1.168.192.in-addr.arpa‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.192‬‬
‫;} ;‪allow-transfer { 192.168.1.11‬‬
‫;}‬

‫ملحظة‪ :‬استبدل ‪ 192.168.1.11‬بعنوان ‪ IP‬لخادوم السماء الثاظنوي‪.‬‬

‫أعد تشغيل خدمة ‪ BIND9‬في الرئيس الولي‪:‬‬

‫‪sudo service bind9 restart‬‬

‫▲‬ ‫‪| 251‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫الن ثدبت على الرئيتتس الثتاظنوي الحزمتتة ‪ bind9‬بنفتس الطريقتة التتي ثبتتهتا علتى الولتي؛ ثتم‬

‫ي التمرير والعسكس‪:‬‬ ‫ن‬ ‫د‬


‫عدل ملف ‪ /etc/bind/named.conf.local‬وأضف التعاريف التية لنطاق د‬

‫{ "‪zone "example.com‬‬
‫;‪type slave‬‬
‫;"‪file "db.example.com‬‬
‫;} ;‪masters { 192.168.1.10‬‬
‫;}‬

‫{ "‪zone "1.168.192.in-addr.arpa‬‬
‫;‪type slave‬‬
‫;"‪file "db.192‬‬
‫;} ;‪masters { 192.168.1.10‬‬
‫;}‬

‫ملحظة‪ :‬استبدل ‪ 192.168.1.10‬بعنوان ‪ IP‬لخادوم السماء الولي‪.‬‬

‫أعد تشغيل خدمة ‪ BIND9‬على الخادوم الثاظنوي‪:‬‬

‫‪sudo service bind9 restart‬‬

‫▲‬ ‫‪| 252‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ DNS ‫خدمة اسم النطاق‬

‫ شتتيصئا شتتبيصها بمتتا يلتتي )نقدستتنمت بعتتض الستتطر‬/var/log/syslog ‫يجتتب أن تشتتاهد فتتي ستتجل‬

:(‫لسكي تتسع في عرض الصفحة‬

client 192.168.1.10#39448: received notify for zone


'1.168.192.in-addr.arpa'
zone 1.168.192.in-addr.arpa/IN: Transfer started.
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
connected using 192.168.1.11#37531
zone 1.168.192.in-addr.arpa/IN: transferred serial 5
transfer of '100.18.172.in-addr.arpa/IN' from 192.168.1.10#53:
Transfer completed: 1 messages,
6 records, 212 bytes, 0.002 secs (106000 bytes/sec)
zone 1.168.192.in-addr.arpa/IN: sending notifies (serial 5)

client 192.168.1.10#20329: received notify for zone


'example.com'
zone example.com/IN: Transfer started.
transfer of 'example.com/IN' from 192.168.1.10#53: connected
using 192.168.1.11#38577
zone example.com/IN: transferred serial 5
transfer of 'example.com/IN' from 192.168.1.10#53: Transfer
completed: 1 messages,
8 records, 225 bytes, 0.002 secs (112500 bytes/sec)

‫ نتن نقتتل المنطقتتة فقتتط إذا كتتان الرقتتم التسلستتلي علتتى الولتتي أكتتبر منتته علتتى الثتتاظنوي؛ وإذا أرد ت أن يعلتتم‬:‫ملحظظظة‬
also-notify ‫ فعليتتتتتك إضتتتتتافة الخيتتتتتار‬،‫ الثاظنويتتتتتة‬DNS ‫الرئيتتتتتس الولتتتتتي بتعتتتتتديل ت النطاقتتتتتا ت فتتتتتي ختتتتتواديم‬
./etc/bind/named.conf.local ‫ {; في ملف‬ipaddress; }

▲ | 253
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫مثال على إضافة الخيار ‪ also-notify‬إلى ملف ‪:/etc/bind/named.conf.local‬‬

‫{ "‪zone "example.com‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.example.com‬‬
‫;} ;‪allow-transfer { 192.168.1.11‬‬
‫;} ;‪also-notify { 192.168.1.11‬‬
‫;}‬

‫{ "‪zone "1.168.192.in-addr.arpa‬‬
‫;‪type master‬‬
‫;"‪file "/etc/bind/db.192‬‬
‫;} ;‪allow-transfer { 192.168.1.11‬‬
‫;} ;‪also-notify { 192.168.1.11‬‬
‫;}‬

‫ملحظة‪ :‬المجلد الفتراضي للنطاقا ت غير الموثوق منها هتو ‪/var/cache/bind‬؛ نيضتنبط هتذا المجلتد أي ص‬
‫ضتتا فتي‬
‫‪ AppArmor‬ليسمح للعفريت ‪ named‬بالسكتابة إليه؛ للمزيتد م ن المعلومتا ت حتول ‪ ،AppArmor‬راجتع »الفصتل‬
‫التاسع‪ :‬الحماية«‪.‬‬

‫▲‬ ‫‪| 254‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫‪ .3‬اتستكشاف الخطاء وإدصلتحها‬


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

‫مع ‪ DNS‬و ‪.BIND9‬‬

‫ا‪ .‬التختبار‬

‫ملف ‪ resolv.conf‬أول خطوة فتي اختبتار ‪ BIND9‬هتي إضتتافة عنتوان ‪ IP‬لختتادوم الستماء‬

‫ضتتا لمضتتيف آختتر للتأكتتد متترصة‬


‫للتتذي يستتتبين أستتماء المضتتيفين؛ يجتتب أن نيضتتنبط ختتادوم الستتماء أي ص‬

‫أخرى؛ تحقق إن كان الملف ‪ /etc/resolv.conf‬يحتوي على السطر التية‪:‬‬

‫‪nameserver 192.168.1.10‬‬
‫‪nameserver 192.168.1.11‬‬

‫خواديم السماء التي تستتتمع علتى *‪ 127.‬مستؤولة عتن إضتتافة عنتتاوين ‪ IP‬الخاصتتة بهتتم إلتتى‬

‫ملتتتف ‪) resolv.conf‬باستتتتخدام ‪(resolveconf‬؛ وهتتتذا يتتتتم عتتتبر الملتتتف ‪/etc/default/bind9‬‬

‫بتغيير السطر ‪ RESOLVECONF=no‬إلى ‪.RESOLVECONF=yes‬‬

‫ملحظة‪ :‬يجب إضافة عنوان ‪ IP‬لخادوم السماء الثاظنوي في حال لم يسكن الخادوم الولي متوفصرا‪.‬‬

‫‪dig‬‬

‫إذا ثبتتتتت حزمتتتة ‪ dnsutils‬فيمسكنتتتك اختبتتتار إعتتتداداتك باستتتتخدام أداة البحتتتث فتتتي ‪DNS‬‬

‫المسماة ‪.dig‬‬

‫▲‬ ‫‪| 255‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫بعتتتد تثتتتبيت ‪ ،BIND9‬فاستتتتخدم ‪ dig‬متتتع بطاقتتتة ‪) loopback‬أي ‪ (localhost‬للتأكتتتد أظنهتتتا‬

‫خل المر التي في شمنحث الطرفية‪:‬‬


‫تستمع على المنفذ ‪53‬؛ أد ش‬

‫‪dig -x 127.0.0.1‬‬

‫يجب أن نتشاشهد أسطصرا شبيهة بالتي في ظناتج المر‪:‬‬

‫‪;; Query time: 1 msec‬‬


‫)‪;; SERVER: 192.168.1.10#53(192.168.1.10‬‬

‫ضبنطت ‪ BIND9‬كخادوم تخزين السماء‪ ،‬فتتابحث )‪ (dig‬عتتن ظنطتتاق ختتارجي للتحقتق متتن‬
‫إذا ن‬

‫زمن الطلبية‪:‬‬

‫‪dig ubuntu.com‬‬

‫لحظ وقت الطلبية في ظنهاية ظناتج المر السابق‪:‬‬

‫‪;; Query time: 49 msec‬‬

‫بعد استخدام ‪ dig‬مرصة أخرى‪ ،‬يجب أن يتحسن الرقم السابق‪:‬‬

‫‪;; Query time: 1 msec‬‬


‫‪ping‬‬

‫▲‬ ‫‪| 256‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫لشرح كيف نتستخدم التطبيقا ت ‪ DNS‬لسكي يستبين اسم المضتتيف؛ فسنستتتخدم الداة ‪ping‬‬

‫لرسال طلب ‪ICMP echo‬؛ وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪ping example.com‬‬

‫ما سبق سيختبر إن استطاع خادوم السماء استبيان الستتم ‪ ns.example.com‬وتحتتويله‬

‫إلى عنوان ‪IP‬؛ يجب أن تشابه مخرجا ت المر السابق ما يلي‪:‬‬

‫‪PING ns.example.com (192.168.1.10) 56(84) bytes of data.‬‬


‫‪64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms‬‬
‫‪64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms‬‬
‫‪named-checkzone‬‬

‫طريقتتة رائعتتة لختبتتار ملفتتا ت النطاقتتا ت لتتديك هتتي استتتخدام الداة المثبتتتة متتع حزمتتة ‪bind9‬؛‬

‫تسمح هذه الداة لك بالتأكد من أن الضبط صحيح قبل إعادة تشغيل ‪ BIND9‬وجعل التغيرا ت حيصة‪.‬‬

‫أد ش‬
‫خل المر التي في الطرفية لختبار ملف النطاق في مثالنا‪:‬‬

‫‪named-checkzone example.com /etc/bind/db.example.com‬‬

‫إذا كان كل شيتء مضبوصطا ضبصطا سليصما‪ ،‬فستشاهد مخرجا ت‬


‫ ت شبيهتة بما يلي‪:‬‬

‫‪zone example.com/IN: loaded serial 6‬‬


‫‪OK‬‬

‫▲‬ ‫‪| 257‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫وبشسكل مشابه‪ ،‬أدخل ما يلي لختبار ملف النطاق العسكسي‪:‬‬

‫‪named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192‬‬

‫يجب أن تسكون المخرجا ت شبيهصة بما يلي‪:‬‬

‫‪zone 1.168.192.in-addr.arpa/IN: loaded serial 3‬‬


‫‪OK‬‬

‫ملحظة‪ :‬سيسكون الرقم التسلسلي لملف النطاق عندك مختلصفا عادصة‪.‬‬

‫ب‪ .‬التسجيل‬

‫لتتتدى ‪ BIND9‬خيتتتارا ت كتتتثيرة لضتتتبط التستتتجيل )‪(logging‬؛ هنالتتتك خيتتتاران رئيستتتيان همتتتا‬

‫الخيتتتار ‪ channel‬التتتذي يضتتتبط أيتتتن ستتتيذهب الستتتجل‪ ،‬والخيتتتار ‪ category‬التتتذي يحتتتدد متتتا هتتتي‬

‫المعلوما ت التي سنتسنجل‪.‬‬

‫إذا لم نيحندد ضبةط للتسجيل‪ ،‬فالضبط الفتراضي هو‪:‬‬

‫{ ‪logging‬‬
‫;} ;‪category default { default_syslog; default_debug‬‬
‫;} ;‪category unmatched { null‬‬
‫;}‬

‫يشتترح هتتذا القستتم ضتتبط ‪ BIND9‬لرستتال رستتائل ‪ debug‬متعلقتتة بطلبيتتا ت ‪ DNS‬إلتتى ملتتتف‬

‫منفصل‪.‬‬

‫▲‬ ‫‪| 258‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫سنحتاج أوصل إلى ضبط »قناة« )‪ (channel‬لتحديد الملف الذي سنترنستتل إليتته الرستتائل‪ ،‬عتتدل‬

‫ملف ‪ ،/etc/bind/named.conf.local‬وأضف ما يلي‪:‬‬

‫{ ‪logging‬‬
‫{ ‪channel query.log‬‬
‫;"‪file "/var/log/query.log‬‬
‫;‪severity debug 3‬‬
‫;}‬
‫;}‬

‫اضبط الن تصنيصفا لرسال جميع طلبيا ت ‪ DNS‬إلى ملف ‪:query‬‬

‫{ ‪logging‬‬
‫{ ‪channel query.log‬‬
‫;"‪file "/var/log/query.log‬‬
‫;‪severity debug 3‬‬
‫;}‬
‫;} ;‪category queries { query.log‬‬
‫;}‬

‫ملحظظظة‪ :‬لحتتظ أن الخيتتار ‪ debug‬يمسكتتن أن نيضتتنبط متتن المرحلتتة ‪ 1‬إلتتى ‪3‬؛ وستستتتخدم المرحلتتة ‪ 1‬إذا لتتم نتحتتندد‬
‫مرحلة‪.‬‬

‫ولما كان عفريت ‪ named‬يعمل كمستخدم ‪ ،bind‬فيجب إظنشاء الملف ‪/var/log/query.log‬‬

‫وتغيير ملسكيته‪:‬‬

‫‪sudo touch /var/log/query.log‬‬


‫‪sudo chown bind /var/log/query.log‬‬

‫▲‬ ‫‪| 259‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫قبتتل أن يتمسكتتن العفريتتت ‪ named‬متتن السكتابتتة إلتتى ملتتف الستتجل الجديتتد‪ ،‬فيجتتب أن نيحتتندث‬

‫ضبط ‪AppArmor‬؛ أوصل‪ ،‬عددل ملف ‪ /etc/apparmor.d/usr.sbin.named‬وأضف‪:‬‬

‫‪/var/log/query.log w,‬‬

‫ثم أعد تحميل ملف ضبطه‪:‬‬

‫‪cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r‬‬

‫للمزيد من المعلوما ت حول ‪ ،AppArmor‬راجع الفصل التاسع‪.‬‬

‫أعد الن تشغيل ‪ BIND9‬لسكي تأخذ التغييرا ت مفعولها‪:‬‬

‫‪sudo service bind9 restart‬‬

‫يجب أن ترى الملف ‪ /var/log/query.log‬ممتلصئا بمعلوما ت الطلبيا ت؛ هذا مثال بسيط عتتن‬

‫ضبط تسجيل ‪BIND9‬؛ راجع القسم »المزيد من المعلوما ت« للمزيد من الخيارا ت المتقدمة‪.‬‬

‫▲‬ ‫‪| 260‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫‪ .4‬المراجع‬

‫ا‪ .‬أنواع السجلت الشائعة‬

‫يغطي هذا القسم بعض أظنواع سجل ت ‪ DNS‬الشائعة‪.‬‬

‫سجل ‪ :A‬يربط هذا السجل عنوان ‪ IP‬إلى اسم مضيف‪.‬‬

‫‪www‬‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.12‬‬

‫ستتجل ‪ :CNAME‬نيستتتخندم لظنشتتاء استتم بتتديل لستتجل موجتتود مستتبصقا‪ ،‬ل يمسكنتتك استتتخدام‬

‫سجل ‪ CNAME‬للشارة إلى سجل ‪ CNAME‬آخر‪.‬‬

‫‪web‬‬ ‫‪IN‬‬ ‫‪CNAME‬‬ ‫‪www‬‬

‫ستتجل ‪ :MX‬نيستتتخندم لتعريتتتف أيتتن يجتتب أن نير نستتل البريتتد؛ يجتتب أن يشتتير إلتتى ستتجل ‪،A‬‬

‫وليس سجل ‪.CNAME‬‬

‫‪IN‬‬ ‫‪MX‬‬ ‫‪1‬‬ ‫‪mail.example.com.‬‬


‫‪mail‬‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.13‬‬

‫ستتجل ‪ :NS‬نيستتتخندم لتعريتتف أديتتة ختتواديم نتنختتددم ظنستتصخا متتن المنطقتتة؛ يجتتب أن يشتتير إلتتى‬

‫سجل ‪ ،A‬وليس إلى ‪CNAME‬؛ هذا مسكان تعريف الخادومين الولى والثاظنوي‪.‬‬

‫‪IN‬‬ ‫‪NS‬‬ ‫‪ns.example.com.‬‬


‫‪IN‬‬ ‫‪NS‬‬ ‫‪ns2.example.com.‬‬
‫‪ns‬‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.10‬‬
‫‪ns2‬‬ ‫‪IN‬‬ ‫‪A‬‬ ‫‪192.168.1.11‬‬

‫▲‬ ‫‪| 261‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة اسم النطاق ‪DNS‬‬

‫ب‪ .‬المزيد من المعلومات‬

‫دليل »‪ «DNS HOWTO‬يشرح الخيارا ت المتقدمة لضبط ‪.BIND9‬‬ ‫•‬

‫اظنظر إلى ‪ bind9.net‬للحصول على شرح معدمق لعمل ‪ DNS‬و ‪.BIND9‬‬ ‫•‬

‫ب شتائع أصتبح فتي إصتداره الختامس؛ وهنالتك أي ص‬


‫ضتا‬ ‫كتتتاب »‪ «DNS and BIND‬هتو كتتا ة‬ ‫•‬

‫كتاب »‪.«DNS and BIND on IPv6‬‬

‫مسكان رائع لطلب المساعدة في ‪ BIND9‬والتعاون مع مجتمع خادوم أوبنتو هو قنتتاة ‪IRC‬‬ ‫•‬

‫على خادوم »‪.Freenode «#ubuntu-server‬‬

‫أي ص‬
‫ضا‪ ،‬راجع »‪ «BIND Server HOWTO‬في ويسكي أوبنتو‪.‬‬ ‫•‬

‫▲‬ ‫‪| 262‬‬


‫الحماية‬
‫‪9‬‬

‫▲‬ ‫‪| 263‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫يجب أن تضع الحماية ظنصب عين ديك عند تثبيت وظنشر واستخدام أي ظنوع متتن أظنظمتتة تشتتغيل‬

‫الحاستتوب؛ وعلتتى الرغتتتم متتتن أن تثبيصتتتتا حتتتديصثا لوبنتتتو هتتو آمتتن ظنستتتبصيا للستتتخدام الفتتوري علتتى‬

‫الظنتتترظنت‪ ،‬لسكتتن متتن المهتتم أن يسكتتون لتتديك فهتتم متتتوازن لحالتتة حمايتتة أظنظمتتتك بنتتاصء علتتى طريقتتة‬

‫استخدامها بعد »ظنشرها« )‪.(deployment‬‬

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

‫‪ ، 14.04‬ويخط الخطوط العريضة للجراءا ت التي يمسكنك أن تستخدمها لحماية خادومتتك وشتتبسكتك‬

‫من أي عدد من التهديدا ت المنية المحتملة‪.‬‬

‫‪ .1‬إدارة المستخدمين‬
‫إدارة المستخدمين هي جزء جتوهري فتتي الحفتتاظ علتى ظنظتتاتم آمتن؛ تقتود الدارة غيتتر السكفتء‬

‫للمستتتخدمين والمتيتتازا ت عتتاد صة إلتتى إضتتعاف أمتتان النظتتام؛ وبالتتتالي متتن الضتتروري أن تفهتتم كيتتف‬

‫تحميه باستخدام تقنيا ت إدارة حسابا ت المستخدمين‪.‬‬

‫ا‪ .‬أين هو حساب الجذر؟‬

‫اتخذ مطورو أوبنتو قتتراصرا واعصيتتا بتعطيتتل حستتاب الجتتذر الداري افتراضتتصيا فتي جميتتع حتتال ت‬

‫ن‬
‫تثبيت أوبنتو؛ هذا ل يعني أن حساب الجذر محذوةف أو ل يمسكن الوصول إليه‪ ،‬حيتتث أستتشنند ت إليتته‬

‫ببساطة كلمة مرور ل نتطاشبق أدية قيمة؛ أي أظنك ل تستطيع الدخول إليه مباشرصة‪.‬‬

‫▲‬ ‫‪| 264‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫لسكتتتن بتتتدصل متتتن ذلتتتك‪ ،‬نينحتتت د‬


‫ث المستتتتخدمون أن يستتتتخدموا أداصة باستتتم ‪ sudo‬لتنفيتتتذ مهتتتام إدارة‬

‫النظتتام؛ حيتتث تستتمح ‪ sudo‬لمستتتخدم موثتتوق بترقيتتة امتيتتازاته باستتتخدام كلمتتة متتروره بتتدصل متتن‬

‫الحاجة لمعرفة كلمة المرور الخاصة بحساب الجذر‪ .‬هتتذه الطريقتتة البستتيطة تعطتتي المستتؤولية لجميتتع‬

‫أفعال المستخدم‪ ،‬وتمنح مدير النظام تحسكصما بالفعال التي يستطيع القيام بها مع امتيازاته الحالية‪.‬‬

‫إذا أرد ت تفعيل حساب الجذر لسبب ما‪ ،‬فببساطة أسند كلمة مرور لذاك الحساب‪:‬‬

‫‪sudo passwd‬‬

‫ستطلب منتك أداة ‪ sudo‬كلمتة مترورك‪ ،‬ثتم ستتطلب منتك تتوفير كلمتتة مترور جديتتدة لحستاب‬

‫الجذر كما هو موضح هنا‪:‬‬

‫)‪[sudo] password for username: (enter your own password‬‬


‫)‪Enter new UNIX password: (enter a new password for root‬‬
‫)‪Retype new UNIX password: (repeat new password for root‬‬
‫‪passwd: password updated successfully‬‬

‫استخدم المر ‪ passwd‬بهذه الطريقة لتعطيل كلمة مرور حساب الجذر‪:‬‬

‫‪sudo passwd -l root‬‬

‫لسكن إذا أرد ت تعطيل الحساب ظنفسه‪ ،‬فاستخدم المر التي‪:‬‬

‫‪usermod --expiredate 1‬‬

‫▲‬ ‫‪| 265‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫تستطيع التعلم أكثر عن ‪ sudo‬بالنظر إلى صفحة الدليل المتعلقة بهذا المر‪:‬‬

‫‪man sudo‬‬

‫ن‬
‫ينتمي المستخدم الذي أظنششئ أثناء تثبيت أوبنتو افتراضصيا إلى المجموعتتة »‪ «sudo‬النمضتتافة‬

‫ي حستتاب آختتر امتيتتازا ت‬


‫إلتتى ملتتف ‪ /etc/sudoers‬كمستتتخدم ‪ sudo‬موثتتوق؛ إذا رغبتتت بمنتتح أ د‬

‫الجذر كاملصة عبر ‪ ،sudo‬فأضف ذاك الحساب إلى المجموعة ‪.sudo‬‬

‫ب‪ .‬إضاافة وحذف المستخدمين‬

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

‫إل قليصل بيتتن أغلبيتتة أظنظمتتة تشتتغيل غنتتو‪/‬لي ننسكتتس الختترى؛ تحتتث أوبنتتتو‪ ،‬والتوزيعتتا ت المبنيتتة علتتى‬

‫دبيان‪ ،‬على استخدام الحزمة »‪ «adduser‬لدارة الحسابا ت‪.‬‬

‫لضافة حساب مستخدم جديد‪ ،‬استخدم الشسكل العام التي‪ ،‬وأكمل مع الرستتائل التتتي تطلتتب‬

‫منك إعطاء كلمة مرور للحساب‪ ،‬وتعريف بعض الخاصيا ت مثل السم السكامل ورقم الهاتف ‪...‬إلخ‪.‬‬

‫‪sudo adduser username‬‬

‫استخدم المر التي لحذف مستخدم ومجموعته الرئيسية‪:‬‬

‫‪sudo deluser username‬‬

‫ل يؤدي حذف حساب مستخدم إلى حتتذف مجلتتد المنتتزل الموافتتق لته؛ هتتذا يعتتود لتك إن كنتتت‬

‫تريد أو ل تريد حذف المجلد يدوصيا أو البقاء عليه وفصقا لسياساتك‪.‬‬

‫▲‬ ‫‪| 266‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ن‬ ‫ص‬
‫تتتتتذكر أن أي مستتتتتخدم آختتتتر نيضتتتتاف لحقتتتتا بنفتتتتس معرفتتتت د‬
‫ي ‪ UID/GID‬للمستتتتتخدم القتتتتديم‬

‫سيحصل على وصول كامل لهذا المجلد إذا لم تتخذ الحتياطا ت اللزمة‪.‬‬

‫قتتد ترغتتب بتغييتتر قيتتم ‪ UID/GID‬إلتتى قيتتم أختترى ملئمتتة أكتتثر ‪-‬كحستتاب الجتتذر مثصل‪ -‬وربمتتا‬

‫تريد أي ص‬
‫ضا ظنقل المجلد لتفادي التضاربا ت المستقبلية‪:‬‬

‫‪sudo chown -R root:root /home/username/‬‬


‫‪sudo mkdir /home/archived_users/‬‬
‫‪sudo mv /home/username /home/archived_users/‬‬

‫لسكتتي تقفتتل حستتاب مستتتخدم مؤقصتتتا أو تلغتتي قفلتته‪ ،‬فاستتتخدم المتتر ‪ passwd‬متتع الخيتتارا ت‬

‫الموافقة للعملية التي تريد إجراءها كما يلي )على التوالي وبالترتيب(‪:‬‬

‫‪sudo passwd -l username‬‬


‫‪sudo passwd -u username‬‬

‫لضافة أو حذف مجموعة خاصة‪ ،‬فاستخدم المرين التيين على التوالي وبالترتيب‪:‬‬

‫‪sudo addgroup groupname‬‬


‫‪sudo delgroup groupname‬‬

‫استخدم الشسكل التي من أمر ‪ adduser‬لضافة مستخدم إلى مجموعة‪:‬‬

‫‪sudo adduser username groupname‬‬

‫ج‪ .‬أمن حساب المستخدم‬

‫عنتتتدما نينشتتتأ مستتتتخدةم جديتتتد‪ ،‬فسنتنششتتتئ الداة ‪ adduser‬مجلتتتد منتتتزل جديتتتد يظهتتتر باستتتم‬

‫▲‬ ‫‪| 267‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ ،/home/username‬يتشتتتسكل ملتتتف الحستتتاب ) ‪ (profile‬الفتراضتتتي اعتمتتتاصدا علتتتى المحتويتتتا ت‬

‫الموجودة في مجلد ‪ /etc/skel‬الذي يحتوي على أساسيا ت ضبط الحساب‪.‬‬

‫إذا كتتتان ستتتيحتوي خادومتتتك علتتتى عتتت ددة مستتتتخدمين‪ ،‬فيجتتتب أن تتتتولي أذوظنتتتا ت مجلتتتد المنتتتزل‬

‫للمستتتخدم اهتماصمتتا شتتديصدا لتحقيتتق سترية بياظنتتاته؛ افتراضتتييا‪ ،‬مجلتتدا ت منتتزل المستتتخدم فتتي أوبنتتتو‬

‫نتن نشأ بأذوظنتا ت القتراءة والتنفيتتذ؛ هتذا يعنتتي أن كتل المستتتخدمين يستتطيعون الوصتتول والتجتتول فتي‬

‫محتويا ت مجلدا ت المنزل للمستخدمين الخرين‪ ،‬ربما ل يلئم ذلك احتياجا ت بيئة تشغيل ظنظامك‪.‬‬

‫استخدم المر التي للتأكد من أذوظنا ت مجلد المنزل للمستخدمين الحاليين‪:‬‬

‫‪ls -ld /home/username‬‬

‫نيظشهتتر الناتتتج التتتي أن مجلتتد ‪ /home/username‬لتتديه أذن القتتراءة لجميتتع المستتتخدمين‬

‫)العالم أو ‪:(world‬‬

‫‪drwxr-xr-x 2 username username 4096 2007-10-02 20:03 username‬‬

‫تستطيع إزالة أذن القراءة للجميع بتنفيذ المر‪:‬‬

‫‪sudo chmod 0750 /home/username‬‬

‫ملحظة‪ :‬بعض الشخاص يميلون لستخدام الخيار التعاودي )‪ ([recursive ] -R‬دوصما دون تمييز الحال ت التي‬
‫يجب استخدامه فيها‪ ،‬الذي نيع ددل أذوظنا ت المجلدا ت »البناء« والملفا ت التي فيها‪ ،‬لسكن هذا ليتتس ضتترورصيا‪ ،‬وربمتتا‬
‫يتستتبب ببعتتض النتائتتج غيتتر المرغتتوب بهتتا؛ يسكفتتي تعتتديل أذوظنتتا ت المجلتتد »الب« فقتتط لمنتتع المستتتخدمين غيتتر‬

‫▲‬ ‫‪| 268‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫المصنرح لهم بدخول أي شيء داخل هذا المجلد الب‪.‬‬

‫طريقة أخرى أكثر فعاليصة هي تعديل ضبط الذوظنا ت الفتراضية العتتام للداة ‪ adduser‬عنتتد‬

‫إظنشتتاء مجلتتدا ت المنتتزل للمستتتخدمين الجتتدد؛ عتتددل ببستتاطة الملتتف ‪ /etc/adduser.conf‬وغديتتر‬

‫قيمتتة المتغيتتر ‪ DIR_MODE‬إلتتى قيمتتتة مناستتب تة‪ ،‬حيتتث ستحصتتل جميتتع مجلتتدا ت المنتتزل الجديتتدة‬

‫على الذوظنا ت الصحيحة‪:‬‬

‫‪DIR_MODE=0750‬‬

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

‫‪ls -ld /home/username‬‬

‫ن‬
‫النتائج التية نتظشهر أظنه قد أزيل إذن القراءة لجميع المستخدمين‪:‬‬

‫‪drwxr-x--- 2 username username 4096 2007-10-02 20:03 username‬‬

‫▲‬ ‫‪| 269‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫د‪ .‬سياسة كلمة المرور‬

‫أحد أهم الجواظنب في حمايتتة ظنظامتتك هتو استتتخدام سياستتة قويتتة لسكلمتا ت المترور؛ إذ تتطلتب‬

‫العديتتتد متتتن الختراقتتتا ت المنيتتتة الناجحتتتة استتتتخدام هجمتتتا ت »القتتتوة القاستتتية« ) ‪(brute force‬‬

‫وتخميتتن كلمتتا ت المتترور الضتتعيفة متتن القتتاموس؛ إذا كنتتت تنتتوي تتتوفير أي ظنتتوع متتن التحسكتتم البعيتتد‬

‫التتذي يتطلتتب كلمتتة المتترور المحليتتة للنظتتام‪ ،‬فتأكتتد أظنتتك تحقتتق المتطلبتتا ت التتدظنيا متتن تعقيتتد كلمتتا ت‬

‫المرور‪ ،‬ومدة كلمة المرور الدظنيا‪ ،‬والتدقيق الرتيب لظنظمة الستيثاق عندك‪.‬‬

‫طول كلمة المرور الدنيا‬

‫تتطلب أوبنتو افتراضصيا طوصل أصغر صيا لسكلمة المرور يساوي ستة محارف‪ ،‬يمسكن التحسكتتم بهتتذه‬

‫القيمة في ملف ‪ /etc/pam.d/common-password‬الظاهر هنا‪:‬‬

‫‪password‬‬ ‫]‪[success=2 default=ignore‬‬ ‫‪pam_unix.so‬‬


‫‪obscure sha512‬‬

‫إذا أرد ت تغيير الحد الدظنى لطول كملة المرور إلى ثماظنية محارف‪ ،‬فعددل المتغير الملئم إلتتى‬

‫‪min=8‬؛ كما يلي‪:‬‬

‫‪password‬‬ ‫]‪[success=2 default=ignore‬‬ ‫‪pam_unix.so‬‬


‫‪obscure sha512 min=8‬‬

‫ملحظة‪ :‬التحقق البسيط متن كلمتة المترور‪ ،‬والطتتول الدظنتتى لهتا ل نيطنبتق علتى الوامتر النمننفتتذة باستتخدام ‪sudo‬‬
‫لعداد مستخدم جديد‪.‬‬

‫▲‬ ‫‪| 270‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫مدة صلحية كلمة المرور‬

‫عنتتتد إظنشتتتاء حستتتابا ت للمستتتتخدمين‪ ،‬فيجتتتب أن نتن ششتتتئ سياستتتة لعمتتتر كلمتتتة المتتترور الدظنتتتى‬

‫والقصى وإجبار المستخدمين على تغيير كلما ت مرورهم عندما تنتهي مدتها‪.‬‬

‫استخدم المر التي لعرض حالة حساب مستخدم‪:‬‬

‫‪sudo chage -l username‬‬

‫نيظ شهتتر ظناتتتج المتتر الستتابق حقتتائق متتثيرة للهتمتتام حتتول حستتاب المستتتخدم‪ ،‬ولنفتتترض أظنتته‬

‫ل توجد أدية سياسا ت مطنبقة‪:‬‬

‫‪Last password change‬‬ ‫‪:‬‬ ‫‪Jan 20, 2008‬‬


‫‪Password expires‬‬ ‫‪:‬‬ ‫‪never‬‬
‫‪Password inactive‬‬ ‫‪:‬‬ ‫‪never‬‬
‫‪Account expires‬‬ ‫‪:‬‬ ‫‪never‬‬
‫‪Minimum number of days between password change‬‬ ‫‪:‬‬ ‫‪0‬‬
‫‪Maximum number of days between password change‬‬ ‫‪:‬‬ ‫‪99999‬‬
‫‪Number of days of warning before password expires:‬‬ ‫‪7‬‬

‫استخدم المر التي ببساطة وتابع مع الرسائل التفاعلية لضبط أدية قيمة من هذه القيم‪:‬‬

‫‪sudo chage username‬‬

‫▲‬ ‫‪| 271‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫متا يلتي مثتا ة‬


‫ل لطريقتة تغييتر تاريتخ اظنتهتتاء الصتلحية ) ‪ (-E‬إلتى ‪ ،01/31/2008‬والعمتر الدظنتى‬

‫لسكلمتتة المتترور )‪ (-m‬إلتتى ‪ 5‬أيتتام‪ ،‬والعمتتر القصتتى لسكلمتتة المتترور )‪ (-M‬إلتتى ‪ 90‬يوصمتتا‪ ،‬ومتتدة الخمتتول‬

‫)‪ ،inactivity‬الخيار ‪ (-I‬إلتى ‪ 5‬أيتتام بعتد اظنتهتتاء صتتلحية كلمتة المترور‪ ،‬ومتدة وقتتت التحتتذير )‪(-W‬‬

‫إلى ‪ 14‬يوصما قبل اظنتهاء صلحية كلمة المرور‪.‬‬

‫‪sudo chage -E 01/31/2008 -m 5 -M 90 -I 5 -W 14 username‬‬

‫للتأكد من التعديل ت‪ ،‬استخدم ظنفس المر المذكور آظنصفا‪:‬‬

‫‪sudo chage -l username‬‬

‫يجب أن نيظ شهر الناتج السياسا ت الجديدة التي أعددظناها لهذا الحساب‪:‬‬

‫‪Last password change‬‬ ‫‪:‬‬ ‫‪Jan‬‬ ‫‪20,‬‬ ‫‪2008‬‬


‫‪Password expires‬‬ ‫‪:‬‬ ‫‪Apr‬‬ ‫‪19,‬‬ ‫‪2008‬‬
‫‪Password inactive‬‬ ‫‪:‬‬ ‫‪May‬‬ ‫‪19,‬‬ ‫‪2008‬‬
‫‪Account expires‬‬ ‫‪:‬‬ ‫‪Jan‬‬ ‫‪31,‬‬ ‫‪2008‬‬
‫‪Minimum number of days between password change‬‬ ‫‪:‬‬ ‫‪5‬‬
‫‪Maximum number of days between password change‬‬ ‫‪:‬‬ ‫‪90‬‬
‫‪Number of days of warning before password expires:‬‬ ‫‪14‬‬

‫ه‪ .‬اعتبارات أمنية أتخرى‬

‫تستخدم العديد من التطبيقتتا ت آليتتا ت استتيثاق أختترى يمسكتتن أن يغفلهتتا حتتتى متدراء الظنظمتتة‬

‫الختتبراء؛ وبالتتتالي فمتتن المهتتم فهتتم والتحسكتتم فتتي طريقتتة استتتيثاق المستتتخدمين وحصتتولهم علتتى‬

‫الوصول إلى الخدما ت والتطبيقا ت على خادومك‪.‬‬

‫▲‬ ‫‪| 272‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫وصول ‪ SSH‬من المستخدمين المعطلين‬

‫ل يمنع تعطيل حساب مستخدم من دخوله إلى خادومك عن بعد إن كتتان قتتد ضتبط استتتيثاق‬

‫بمفتاح ‪ RSA‬عام؛ وسيتمسكنون من الحصتول علتتى وصتول إلتى الصتتدفة )‪ (shell‬فتتي الختادوم دون‬

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

‫من وصول ‪ SSH‬الذي تم الستيثاق منه؛ أي ‪./home/username/.ssh/authroized_keys‬‬

‫احذف أو أعد تسمية مجلد ‪ .ssh/‬في مجلد المنزل للمستخدم لتعطيتتل إمسكاظنيتتا ت الستتتيثاق‬

‫عبر ‪.SSH‬‬

‫ن‬
‫تأكد أن تتحقق من أدية اتصال ت ‪ SSH‬قد أظنششتئت متن المستتخدم المعنطتل؛ حيتث متن الممسكتن‬

‫أن يملسكوا اتصال ت داخلة أو خارجة موجودة مسبصقا‪» ،‬اقتل« )‪ (kill‬تلك العمليا ت إذا عثر ت عليها‪.‬‬

‫‪who | grep username‬‬ ‫‪# to get the pts/X terminal‬‬


‫‪sudo pkill -f pts/X‬‬

‫احصتتر الوصتتول عتتبر ‪ SSH‬إلتتى حستتابا ت المستتتخدمين التتذين يجتتب أن يحصتلوا عليهتتا فقتتط؛‬

‫فعلتتى ستتبيل المثتتال‪ ،‬ربمتتا تننششتتئ مجموعتتة تستتميها »‪ «sshlogin‬وتضتتيف استتم المجموعتتة كقيمتتة‬

‫مرتبطة بالمتغير ‪ AllowGroups‬الموجود في الملف ‪./etc/ssh/sshd_config‬‬

‫‪AllowGroups sshlogin‬‬

‫▲‬ ‫‪| 273‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ثم أضف مستخدمي ‪ SSH‬المستتموح لهتتم إلتتى المجموعتتة »‪ ،«sshlogin‬وأعتتد تشتتغيل خدمتتة‬

‫‪:SSH‬‬

‫‪sudo adduser username sshlogin‬‬


‫‪sudo service ssh restart‬‬

‫استيثاق المستخدم بقواعد البيانات الخارجية‬

‫تتطلتتب معظتتم الشتتبسكا ت المشتتاريع التجاريتتة آليتتنة استتتيثاتق مركزيتتة والتحسكتتم بالوصتتول إلتتى‬

‫جميع مصادر النظام‪ ،‬إذا ضبطت خادومك ليستوثق من المستخدمين متتن قاعتتدة بياظنتتا ت خارجيتتة؛‬

‫فتأكتتد متتن تعطيتتل حستتابا ت المستتتخدمين محلصيتتا وخارجصيتتا‪ ،‬وبهتتذا تتأكتتد متتن أن البتتديل المحلتتي‬

‫للستيثاق غير متوفر‪.‬‬

‫▲‬ ‫‪| 274‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ .2‬تأمين الطرفية‬
‫وكما غيرها من ترساظنة الحماية التي تستخدمها لحمايتتة خادومتتك‪ ،‬متتن القواعتتد الصتتارمة هتتو‬

‫التأمين ضد الضرار الناتجة عن شخص لديه الوصول الفيزيائي لبيئتك‪ ،‬على سبيل المثال‪ ،‬ستترقة‬

‫القتتراص الصتتلبة‪ ،‬أو خلتتل فتتي الطاقتتة السكهربائيتتة ‪ ...‬إلتتخ؛ وبالتتتالي يجتتب أن يسكتتون تتتأمين الطرفيتتة‬

‫جتتزصءا رئيستت صيا فتتي استتتراتيجية الحمايتتة الفيزيائيتتة؛ ستتيحد »قفتتل الشاشتتة« )‪ (screen door‬متتن‬

‫تأثير مجرم عادي‪ ،‬أو على القل سيبطئ عمل مجرم مصتتمم علتى إلحتاق الذى بنظامتتك! لتذلك متتن‬

‫المستحسن إجراء بعض احتياطا ت الوقاية فيما يتعلق بحماية الطرفية‪.‬‬

‫سيساعدك ما يلي في الدفاع عن خادومك ضد المشاكل التي قد تسبب عواقب وخيمة‪.‬‬

‫ا‪ .‬تعطيل ‪Ctrl+Alt+Delete‬‬

‫بتتتادئ ذي بتتتدء‪ ،‬يستتتتطيع أي شتتتخص لتتتديه الوصتتتول الفيزيتتتائي للوحتتتة المفاتيتتتح ببستتتاطة أن‬

‫يستتتخدم تجميعتتة المفاتيتتح »‪ «Ctrl+Alt+Delete‬لعتتادة إقلع الختتادوم دون الحاجتتة لتستتجيل‬

‫الدخول؛ طب صعا يمسكن لي شخص إزالة كبل السكهرباء من المقبس‪ ،‬لسكن ما يتتزال عليتتك منتتع استتتخدام‬

‫هذه التجميعة على خادوم إظنتاجي؛ وهذا يجبر المهاجم على اتختتاذ إجتتراءا ت عنيفتتة لعتتادة إقلع‬

‫الخادوم‪ ،‬وسوف يمنع إعادة القلع غير المقصودة في ظنفس الوقت‪.‬‬

‫لتعطيتتل إعتتادة إقلع الختتادوم بالضتتغط علتتى تجميتتع الزرار ‪ ،Ctrl+Alt+Delete‬فضتتع رمتتز‬

‫التعليق قبل السطر التي في ملف ‪:/etc/init/control-alt-delete.conf‬‬

‫"‪#exec shutdown -r now "Control-Alt-Delete pressed‬‬

‫▲‬ ‫‪| 275‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ .3‬الجدار الناري‬

‫ا‪ .‬مقدمة‬

‫تتضتتمن ظنتتواة ليننسكتتس النظتتام الفرعتتي ‪ Netfilter‬التتذي نيستتتخندم لتعتتديل أو تحديتتد مصتتير‬

‫البياظنا ت الشبسكية الداخلة أو الخارجة من الخادوم‪ ،‬نتستتتخدم جميتتع الجتتدر الناريتتة فتتي ليننسكتتس هتتذا‬

‫النظام لترشيح الرزم الشبسكية‪.‬‬

‫ظنظام ترشيح الرزم الخاص بالنواة لن يسكون مفي صدا لمدراء الظنظمة دون واجهتتة لدارتتته‪ ،‬وهتتذا‬

‫هو الغرض من ‪ iptables‬؛ فعندما تصل رزمة شبسكية إلى خادومك‪ ،‬فستتتتوجه إلتتى النظتتام الفرعتتي‬

‫‪ Netfilter‬للموافقتتتة أو التعتتتديل أو الرفتتتض بنتتتاصء علتتتى القواعتتتد المتتونفرة لهتتتا متتتن المستتتتخدم عتتتبر‬

‫‪iptables‬؛ ولهذا سيسكون ‪ iptables‬هو كتل متتا تحتتاج لدارة الجتتدار النتاري إن كتتان مألوصفتتا لتديك‪،‬‬

‫لسكن العديد من الواجها ت المتوفرة له سنتبدسط العملية‪.‬‬

‫ب‪ .‬الداة ‪ufw‬‬

‫أداة ضتتتتبط الجتتتتدار النتتتتاري الفتراضتتتتية فتتتتي أوبنتتتتتو هتتتتي ‪Uncomplicated Firewall‬‬

‫أو اختصتتتتاصرا ‪ ،ufw‬التتتتتي نطتتتتدونر ت لتستتتتهيل ضتتتتبط جتتتتدار ‪ iptables‬النتتتتاري‪ ،‬تتتتتوفر ‪ ufw‬واجهتتتتة‬

‫»صديقة« للمستخدم لظنشاء جدار ظناري لعناوين ‪ IPv4‬أو ‪.IPv6‬‬

‫إن ‪ ufw‬مع ط‬
‫طل اافتراضييا‪ .‬من صفحة دليل ‪:man ufw‬‬

‫»لتتم يطتتنور ‪ ufw‬لتتتوفير وظيفتتة جتتدار ظنتتاري كاملتتة عتتبر واجهتتته الستتطرية‪ ،‬لسكنتته يتتوفر طريقتتصة‬

‫سهلصة لضافة أو حتتذف القواعتتد؛ ويستتتخدم حالصيتتا استتتخداصما رئيستتصيا للجتدر الناريتتة المعتمتتدة علتى‬

‫المضيف )‪«.(host-based firewalls‬‬

‫▲‬ ‫‪| 276‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫هذه بعض أمثلة استخدام ‪:ufw‬‬

‫أوصل‪ ،‬يجب أن ظنفدعل ‪ ،ufw‬أد ش‬


‫خل المر التي في الطرفية‪:‬‬

‫‪sudo ufw enable‬‬

‫لفتح منفذ ما )‪ ssh‬في هذا المثال(‪:‬‬

‫‪sudo ufw allow 22‬‬

‫وبشسكتل مشابه‪ ،‬لغلق منفذ مفتوح‪:‬‬

‫‪sudo ufw deny 22‬‬

‫لحذف قاعدة‪ ،‬استخدم السكلمة ‪ delete‬متبوعصة بالقاعدة‪:‬‬

‫‪sudo ufw delete deny 22‬‬

‫من الممسكن أي ص‬
‫ضا الستتماح بالوصتول متن مضتيفين أو شتتبسكا ت محتددة لمنفتتذ متتا؛ يستمح المثتتال‬

‫التي بالوصول لمنفذ ‪ ssh‬من المضيف ‪ 192.168.0.2‬لي عنوان ‪ IP‬في هذا المضيف‪:‬‬

‫‪sudo ufw allow proto tcp from 192.168.0.2 to any port 22‬‬

‫يمسكن استخدام ‪ 192.168.0.0/24‬بدصل من ‪ 192.168.0.2‬للسماح بالوصول عبر ‪ ssh‬لسكامل‬

‫الشبسكة الفرعية‪.‬‬

‫▲‬ ‫‪| 277‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الحماية‬

‫ لسكنتته لتتن يطبقهتتا؛ علتتى‬،‫ سيجعله يخرج القواعد الناتجتتة‬ufw ‫ لمر‬--dry-run ‫إضافة الخيار‬

:HTTP ‫ ما يلي هو ما سيحدث لو فتحنا منفذ‬،‫سبيل المثال‬

sudo ufw --dry-run allow http

*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0


-A ufw-user-input -p tcp --dport 80 -j ACCEPT

### END RULES ###


-A ufw-user-input -j RETURN
-A ufw-user-output -j RETURN
-A ufw-user-forward -j RETURN
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix
"[UFW LIMIT]: "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
COMMIT
Rules updated

:‫ بالمر‬ufw ‫يمسكن تعطيل‬

sudo ufw disable

▲ | 278
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫أدخل المر لمعرفة حالة الجدار الناري‪:‬‬

‫‪sudo ufw status‬‬

‫لمعلوما ت تفصيلية عن حالة الجدار الناري‪ ،‬استخدم‪:‬‬

‫‪sudo ufw status verbose‬‬

‫لعرض أرقام بجوار القواعد )لحذفها مثصل( فاستخدم السكلمة المحجوزة ‪:numbered‬‬

‫‪sudo ufw status numbered‬‬

‫ملحظة‪ :‬إن كان المنفذ التذي تريتد فتحته أو إغلقتته معرصفتتا فتي ‪ ،/etc/services‬فيمسكنتك استتخدام استتم المنفتذ‬
‫بدصل من رقمه؛ حيث استبدل ‪ 22‬بالسكلمة ‪ ssh‬في المثلة السابقة‪.‬‬

‫هتتذه مجتترد مقدمتتة ستتريعة عتتن استتتخدام ‪ ،ufw‬رجتتاصء راجتتع صتتفحة دليتتل ‪ ufw‬لمزيتتد متتن‬

‫المعلوما ت‪.‬‬

‫دمج التطبيقات مع ‪ufw‬‬

‫تستتتطيع التطبيقتتا ت التتتي تفتتتح منافتتذ أن نتضتتدمن ملتتف ‪ ufw‬التتذي يتتبدين أديتتة منافتتذ يحتتتاج‬

‫التطتتبيق لفتحهتتا لسكتتي يعمتتل عمصل تاصمتتا؛ هتتذه الملفتتا ت موجتتودة فتتي ‪/etc/ufw/applications.d‬‬

‫ويمسكن أن نتعندل إذا تغنير ت المنافذ الفتراضية‪.‬‬

‫▲‬ ‫‪| 279‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫استخدم المر التي في الطرفية لعرض التطبيقا ت التي ثبتت أحد تلك الملفا ت‪:‬‬

‫‪sudo ufw app list‬‬

‫وبشتتتسكل شتتتبيه للستتتماح بالتصتتتال ت إلتتتى منفتتتذ معيتتتن‪ ،‬فنيفنعتتتل استتتتخدام ملتتتف ضتتتبط أحتتتد‬

‫التطبيقا ت بالمر‪:‬‬

‫‪sudo ufw allow Samba‬‬

‫يمسكن استخدام التعبير النمونسع كالتي‪:‬‬

‫‪ufw allow from 192.168.0.0/24 to any app Samba‬‬

‫استبدل »‪ «Samba‬و ‪ 192.168.0.0/24‬باسم التطبيق ومجال ‪ IP‬لشبسكتك‪.‬‬

‫ملحظة‪ :‬ل توجد هنالك حاجة لتحديد البروتوكول للبرظنامج التذي ستنتفدعله‪ ،‬لن هتذه المعلومتا ت مف ن‬
‫صتلة بتالملف‬
‫الخاص به‪ ،‬لحظ أن اسم التطبيق يستبدل رقم المنفذ‪.‬‬

‫لعرض معلوما ت حول المنافذ والبروتوكول ت )‪...‬إلخ‪ (.‬النمعنرفة لتطبيتق ما‪ ،‬فأد ش‬
‫خل المر‪:‬‬

‫‪sudo ufw app info Samba‬‬

‫▲‬ ‫‪| 280‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ليس لسكل التطبيقا ت التي تتطلب فتح منفتذ شتتبسكي ملتف ‪ ufw‬ختاص؛ إذا كتبتتت ذاك الملتف‬

‫لتطتتتبيق متتتا‪ ،‬وأرد ت أن نيضتتتنمن هتتتذا الملتتتف متتتع الحزمتتتة‪ ،‬فرجتتتاصء بدلتتتغ عتتتن علتتتة فتتتي تلتتتك الحزمتتتة‬

‫على ‪:Lanuchpad‬‬

‫‪ubuntu-bug nameofpackage‬‬

‫تنكر ‪IP‬‬

‫الغايتتة متتن تنسكتتر ‪ (IP Masquerading) IP‬هتو الستتماح للجهتتزة التتي تملتك ‪ IP‬ختتاص غيتتر‬

‫قابل للتوجيه في شبسكتك بالوصتول إلتتى الظنتتترظنت عتتبر الجهتتاز التذي يقتوم بتالتنسكر؛ يجتب أن نتعانلتتج‬

‫البياظنا ت الشبسكية من شبسكتك الخاصة إلى الظنترظنت لسكي تونجه الردود إلى الجهاز الذي قام بالطلب‪،‬‬

‫ويجب أن نتعددل الن واة قيمتة عنتوان ‪ IP‬المصتدر لسكتل رزمتة شتبسكية لسكتي تصتبح قابلتة للت وجيه إلتى‬

‫الخادوم‪ ،‬بدصل متن عن وان ‪ IP‬الختاص )‪ (private IP‬التذي قتام بتالطلب‪ ،‬التذي يسكتون مستتحيصل عتبر‬

‫الظنتتترظنت؛ يستتخدم ليننسكتتس تعقتب التصتتال ) ‪ (conntrack‬لسكتي يتعقتتب أديتة اتصتال ت تتعلتتق بأديتة‬

‫أجهتتزة وإعتتادة تتتوجيه كتتل رزمتتة نمعتتادة وف صقتتا لتتذلك؛ أي أن البياظنتتا ت الشتتبسكية الخارجتتة متتن شتتبسكتك‬

‫المحليتتة هتتتي »نمتندسكتتترة« لظنهتتتتتا تنشتتتأ متتتن البوابتتتة )خادومتتك(؛ نيشتتتار إلتتى هتتذه العمليتتتة فتتي توثيتتق‬

‫مايسكروسوفت باسم »مشاركة اتصال الظنترظنت« ) ‪.(Internet Connection Sharing‬‬

‫تنكر ‪ufw‬‬

‫يمسكتتن أن يجتترى تنسكتتر ‪ IP‬بقواعتتد ‪ ufw‬مخصصتتة؛ هتتذا ممسكتتن لن الستتند الخلفتتي للداة ‪ufw‬‬

‫هتتو ‪ iptables-restore‬متتع ملفتتا ت القواعتتد المخزظنتتة فتتي ‪/etc/ufw/*.rules‬؛ هتتذه الملفتتا ت هتتي‬

‫مسكتتان ممتتتاز لضتتافة قواعتتد ‪ iptables‬بتتدون ‪ ،ufw‬وللقواعتتد التتتي تتعلتتق تعلصقتتا كتتبيصرا بالبوابتتا ت‬

‫الشبسكية أو الجسور‪.‬‬

‫▲‬ ‫‪| 281‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫نتق نستتم القواعتتد إلتتى ملفيتتن مختلفيتتن‪ ،‬القواعتتد التتتي يجتتب أن نتنننفتتذ قبتتل القواعتتد الستتطرية‬

‫التابعة للداة ‪ ،ufw‬والقواعد التي نتننفذ بعدها‪.‬‬

‫أوصل‪ ،‬يجتتتب أن نيفنعتتتل تمريتتتر التتترزم فتتتي ‪ ،ufw‬يجتتتب أن نيعتتتندل ملفتتتي إعتتتدادا ت؛ غديتتتر قيمتتتة‬

‫‪ DEFAULT_FORWARD_POLICY‬إلى "‪ "ACCEPT‬في ملف ‪:/etc/default/ufw‬‬

‫"‪DEFAULT_FORWARD_POLICY="ACCEPT‬‬

‫ثم عددل الملف ‪ /etc/ufw/sysctl.conf‬وأزل التعليق عن‪:‬‬

‫‪net/ipv4/ip_forward=1‬‬

‫وبشسكل مشابه‪ ،‬لتمرير ‪ IPv6‬أزل التعليق عن‪:‬‬

‫‪net/ipv6/conf/default/forwarding=1‬‬

‫سنضتتتيف الن القواعتتتد إلتتتى ملتتتف ‪/etc/ufw/before.rules‬؛ القواعتتتد الفتراضتتتية تضتتتبط‬

‫جدول ‪ filter‬فقط‪ ،‬ويجب ضتبط جتتدول ‪ nat‬لتفعيتل التنسكتتر؛ أضتتف متتا يلتي إلتتى أعلتى الملتف بعتتد‬

‫تعليقا ت الترويسة مباشرصة‪:‬‬

‫‪# nat Table rules‬‬


‫‪*nat‬‬
‫]‪:POSTROUTING ACCEPT [0:0‬‬

‫‪# Forward traffic from eth1 through eth0.‬‬


‫‪-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE‬‬

‫‪# don't delete the 'COMMIT' line or these nat table rules won't‬‬
‫‪be processed‬‬
‫‪COMMIT‬‬

‫▲‬ ‫‪| 282‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ليست التعليقا ت ضروري صة‪ ،‬لسكنها متتن المستحستن توثيتق ملفتتا ت الضتبط؛ وعنتد تعتتديل أي متتن‬

‫ملفتتا ت »القواعتتد« فتتي ‪ ، /etc/ufw‬فتأكتتد متتن أن هتتذين الستتطرين موجتتودان فتتي ظنهايتتة الملتتف لسكتتل‬

‫جدول عندلته‪:‬‬

‫‪# don't delete the 'COMMIT' line or these nat table rules won't‬‬
‫‪be processed‬‬
‫‪COMMIT‬‬

‫يجب أن تتوفر عبارة ‪ COMMIT‬في ظنهاية كل جدول‪ ،‬وقد ظهر في المثلتتة الستتابقة جتتدوصل‬

‫ي ‪ raw‬و ‪.mangle‬‬ ‫ن‬


‫‪ nat‬و ‪ filter‬فقط‪ ،‬لسكنك تستطيع إضافة القواعد لجدول د‬

‫ملحظة‪ :‬استبدل‪-‬في المثال السابق‪ eth0 -‬و ‪ eth1‬و ‪ 192.168.0.0/24‬بالبطاقا ت ومجال ‪ IP‬الملئمين‪.‬‬

‫في النهاية‪ ،‬عدطل وأعد تفعيل ‪ ufw‬لتطبيق التغيرا ت‪:‬‬

‫‪sudo ufw disable && sudo ufw enable‬‬

‫يجتتب أن نيفنعتتل تنسكتتر ‪ IP‬الن‪ ،‬تستتتطيع إضتتافة أيتتة قواعتتد ‪ FORWARD‬إضتتافية إلتتى ملتتف‬

‫‪/etc/ufw/before.rules‬؛ متتتن المستحستتتن إضتتتافة هتتتذه القواعتتتد فتتتي سلستتتلة ‪ufw-before-‬‬

‫‪.forward‬‬

‫▲‬ ‫‪| 283‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫تنكر ‪iptables‬‬

‫يمسكتتتن أن نيستتتتخندم ‪ iptables‬لتفعيتتتل التنسكتتتر‪ .‬وبشتتتسكل شتتتبيه للداة ‪ ،ufw‬أول خطتتتوة هتتتي‬

‫تفعيل تمرير ‪ IPv4‬بتعديل ملف ‪ /etc/sysctl.conf‬وإزالة التعليق عن السطر التي‪:‬‬

‫‪net.ipv4.ip_forward=1‬‬

‫إذا أرد ت تفعيل تمرير ‪ ،IPv6‬فأزل التعليق عن‪:‬‬

‫‪net.ipv6.conf.default.forwarding=1‬‬

‫تالصيا‪ ،‬ظندفذ المر ‪ sysctl‬لتفعيل العدادا ت الجديدة في ملف الضبط‪:‬‬

‫‪sudo sysctl -p‬‬

‫يمسكن أن نيفنعل تنسكر ‪ IP‬بقاعدة ‪ iptables‬واحدة‪ ،‬التي يمسكن أن تختلف اختلصفا بسيصطا بنتتاصء‬

‫على ضبط شبسكتك‪:‬‬

‫\ ‪sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16‬‬


‫‪-o ppp0 -j MASQUERADE‬‬

‫يفتتترض المتتر الستتابق أن مجتتال شتتبسكتك الخاصتتة هتتو ‪ 192.168.0.0/16‬وأن الجهتتاز التتذي‬

‫يمتلك اتصاصل بالظنترظنت هو ‪ ،ppp0‬ظنستطيع تقسيم المر السابق كما يلي‪:‬‬

‫‪ :-t nat‬القاعدة ستذهب لجدول ‪.nat‬‬ ‫•‬

‫‪ :-A POSTROUTING‬سنتضاف القاعدة )‪ (-A‬إلى سلسلة ‪.POSTROUTING‬‬ ‫•‬

‫▲‬ ‫‪| 284‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ :-s 192.168.0.0/16‬تط نبق القاعدة على البياظنا ت التية من مجال العناوين المحدد‪.‬‬ ‫•‬

‫‪ :-o ppp0‬القاعدة نتط نبق على البياظنا ت المقرر توجيهها عبر الجهاز الشبسكي المحدد‪.‬‬ ‫•‬

‫‪ :-j MASQUERADE‬ستتتتتقفز )‪ (jump‬البياظنتتتتا ت النمطا شبقتتتتة لهتتتتذه القاعتتتتدة إلتتتتى هتتتتدف‬ ‫•‬

‫‪ MASQUERADE‬لسكي نتعانلج كما هو مشروح في العلى‪.‬‬

‫أي ص‬
‫ضا‪ ،‬كل سلسلة في جدول ‪ ) filter‬الجدول الفتراضي‪ ،‬ومسكان حدوث أغلبية ترشيح الرزم‬

‫الشبسكية( تسكون سياستها الفتراضية هي ‪ACCEPT‬؛ لسكن إن كنت نتنششئ جداصرا ظنارصيا بالضتتافة إلتتى‬

‫بوابتتتة‪ ،‬فربمتتتا تحتتتتاج إلتتتى ضتتتبط السياستتتا ت إلتتتى ‪ DROP‬أو ‪REJECT‬؛ وفتتتي هتتتذه الحالتتتة تحتتتتاج‬

‫البياظنا ت المتنسكرة إلى السماح لها في سلسلة ‪ FORWARD‬لسكي تعمل القاعدة السابقة‪:‬‬

‫‪sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT‬‬


‫\ ‪sudo iptables -A FORWARD -d 192.168.0.0/16 -m state‬‬
‫‪--state ESTABLISHED,RELATED -i ppp0 -j ACCEPT‬‬

‫ستستتتمح الوامتتتر الستتتابقة لجميتتتع التصتتتال ت متتتن شتتتبسكتك المحليتتتة إلتتتى الظنتتتترظنت‪ ،‬ولعتتتودة‬

‫البياظنا ت المتعلقة بهذه التصال ت إلى الجهاز الذي طلبها‪.‬‬

‫إذا أرد ت تفعيتتتل التنسكتتتر عنتتتد القلع ‪ -‬التتتذي تريتتتد تفعيلتتته فتتتي غتتتالب الحيتتتان‪ -‬فعتتتددل ملتتتف‬

‫‪ /etc/rc.local‬وأضف الوامر السابقة؛ على سبيل المثال‪ ،‬أضف المر السابق دون ترشيح‪:‬‬

‫\ ‪iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0‬‬


‫‪-j MASQUERADE‬‬

‫▲‬ ‫‪| 285‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ج‪ .‬السجلت‬

‫سجل ت الجدار الناري مهمة جت صدا للتعتترف علتتى الهجمتا ت‪ ،‬واستسكشتتاف أخطتتاء قواعتد الجتتدار‬

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

‫النتتاري لسكتتي تو نلتتد الستتجل ت‪ ،‬ويجتتب أن تتتأتي قواعتتد الستتجل ت قبتتل قواعتتد الظنهتتاء )القواعتتد التتتي‬

‫تحدد مصير الرزمة‪ ،‬مثل ‪ ،ACCEPT‬أو ‪ ،DROP‬أو ‪.(REJECT‬‬

‫إذا كنت تستخدم ‪ ، ufw‬فبإمسكاظنك تفعيل التسجيل بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo ufw logging on‬‬

‫لسكي توقف التسجيل في ‪ ،ufw‬فببساطة بدل ‪ on‬بالسكلمة ‪ off‬في المر السابق‪.‬‬

‫إذا كنت تستخدم ‪ iptables‬بدصل من ‪ ،ufw‬فأدخل المر‪:‬‬

‫\ ‪sudo iptables -A INPUT -m state --state NEW -p tcp‬‬


‫" ‪--dport 80 -j LOG --log-prefix "NEW_HTTP_CONN:‬‬

‫طلبيةة على المنفذ ‪ 80‬من الجهاز المحلي ستولند سجصل في ‪ dmesg‬الذي يبدو كما يلي )ستتطةر‬

‫واحةد فقط نقدسنم إلى عددة أقسام لسكي يتسع في عرض الصفحة(‪:‬‬

‫=‪[4304885.870000] NEW_HTTP_CONN: IN=lo OUT‬‬


‫‪↪ MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00‬‬
‫‪↪ SRC=127.0.0.1 DST=127.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64‬‬
‫‪↪ ID=58288 DF PROTO=TCP SPT=53981 DPT=80 WINDOW=32767 RES=0x00‬‬
‫‪↪ SYN URGP=0‬‬

‫▲‬ ‫‪| 286‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ستتتيظهر الستتتجل الستتتابق فتتتي ملتتتف ‪ ،/var/log/massages‬و ‪ ،/var/log/syslog‬و كتتتذلك‬

‫‪/var/log/kern.log‬؛ يمسكتتتتن تعتتتتديل هتتتتذا الستتتتلوك بتعتتتتديل ‪ /etc/syslog.conf‬تعتتتتديصل ملئصمتتتتا‬

‫أو بتثبيت وضبط ‪ ulogd‬وباستخدام الهدف ‪ ULOG‬بدصل من ‪.LOG‬‬

‫العفريت ‪ ulogd‬هو خادوم في مجال المستتخدم )‪ (userspace server‬التذي يستتمع إلتى‬

‫صا للجدر النارية‪ ،‬ويمسكنك التسجيل إلى أي ملف تريد‪ ،‬وحتى‬


‫تعليما ت التسجيل من النواة وخصو ص‬

‫إلتتتتى قواعتتتتد بياظنتتتتا ت ‪ PostgreSQL‬أو ‪ MySQL‬؛ يمسكتتتتن تستتتتهيل فهتتتتم ستتتتجل ت الجتتتتدار النتتتتاري‬

‫باستخدام أداة تحليل سجل ت مثل ‪ ،logwatch‬أو ‪ ،fwanalog‬أو ‪ ،fwlogwatch‬أو ‪.lire‬‬

‫د‪ .‬أدوات أتخرى‬

‫هنالك أدوا ت عديد متوفرة لتساعدك في بناء جدار ظناري كامتتل دون أن تسكتتون لتديك المعرفتتة‬

‫الجيدة باستخدام ‪iptables‬؛ للميالين للبرامج الرسومية‪:‬‬

‫برظنامتتج ‪ fwbulider1‬هتتو قتتوي جتتصدا وستتيسكون مألو صفتتا للمتتدراء التتذين تعتتاملوا متتع أدوا ت‬ ‫•‬

‫تجارية لدارة الجدر النارية‪ ،‬مثل ‪.Checkpoint FireWall-1‬‬

‫ضل أداصة من سطر الوامر مع ملفا ت ضبط ظنصدية‪:‬‬


‫إذا كنت نتف د‬

‫الداة ‪ Shorewall2‬هي أداة قوية ج صدا لتساعدك في ضبط جدار ظناري متقدم لي شبسكة‪.‬‬ ‫•‬

‫▲‬ ‫‪| 287‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ه‪ .‬مصادر‬

‫صفحة ويسكي أوبنتو »‪ «Ubuntu Firewall‬التي تحتوي على معلوما ت عن تطوير ‪.ufw‬‬ ‫•‬

‫أي ص‬
‫ضا‪ ،‬صفحة دليل ‪ ufw‬تحتوي معلوما ت مفيدة جصدا‪.man ufw :‬‬ ‫•‬

‫راجع الصفحة » ‪ «packet filtering HOWTO‬للمزيد حول استخدام ‪.iptables‬‬ ‫•‬

‫صفحة »‪ «nat-HOWTO‬تحتوي تفاصيل إضافية عن التنسكر‪.‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪ «IPTables HowTo‬هي مصدر رائع للمعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 288‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ .4‬برمجية ‪AppArmor‬‬
‫إن ‪ AppArmor‬هتتو وحتتدة حمايتتة فتتي ليننسكتتس تقديتتد وصتتول البرامتتج المختلفتتة إلتتى قائمتتة‬

‫بالملفا ت التابعة لها والمسكاظنيا ت المذكورة في مسودة ‪.posix 1003.le‬‬

‫إن ‪ AppArmor‬مثنبتتتتتتت ومفنعتتتتتتل افتراضتتتتتتصيا‪ ،‬ويستتتتتتتخدم »ملفتتتتتتا ت ضتتتتتتبط« )‪(profiles‬‬

‫للتطبيقتتتا ت لتحديتتتد أ ديتتتة ملفتتتا ت وأذوظنتتتا ت يتطلبهتتتا التطتتتبيق‪ ،‬بعتتتض الحتتتزم نتثدبتتتت ملفتتتا ت الضتتتبط‬

‫الخاصة بها‪ ،‬ويمسكن العثور على ملفا ت ضبط إضافية في حزمة ‪.apparmor-profiles‬‬

‫أدخل المر التي في الطرفية لتثبيت حزمة ‪apparmor-profiles‬‬

‫‪sudo apt-get install apparmor-profiles‬‬

‫لملفا ت ضبط ‪ AppArmor‬ظنمطين من التنفيذ‪:‬‬

‫البنتتتتاء أو التعلتتتتم ) ‪ :(Complaining/Learning‬متتتتن المستتتتموح تجتتتتاوز ملتتتتف الضتتتتبط‬ ‫•‬

‫وسنتس نجل تلك التجاوزا ت؛ يفيد هذا النمط في اختبار وتطوير ملفا ت ضبط جديدة‪.‬‬

‫الجبتتتتتار أو التقييتتتتد ) ‪ :(Enforced/Confined‬إجبتتتتار السياستتتتة فتتتتتي ملفتتتتتا ت الضتتتتبط‪،‬‬ ‫•‬

‫وتسجيل التجاوزا ت أي ص‬
‫ضا‪.‬‬

‫▲‬ ‫‪| 289‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ا‪ .‬استخدام ‪AppArmor‬‬

‫تنويه‪ :‬هذا القسم معلول بعدلة‪ ،‬فللسف لن تعمل الوامر التي فيه كما يجب‪.‬‬

‫تحتتتوي حزمتتة ‪ apparmor-utils‬علتتى أدوا ت ستتطر أوامتتر تمدسكنتتك متتن تغييتتر ظنمتتط تنفيتتذ‬

‫‪ ،AppArmor‬أو معرفة حالة ملف ضبط‪ ،‬أو إظنشاء ملفا ت جديدة ‪...‬إلخ‪.‬‬

‫نيستخندم المر ‪ apparmor_status‬لعرض حالة ملفا ت ضبط ‪.AppArmor‬‬

‫‪sudo apparmor_status‬‬

‫يضع المر ‪ aa-complain‬ملنف ضب ت‬


‫ط قيند البناء‪:‬‬

‫‪sudo aa-complain /path/to/bin‬‬

‫المر ‪ aa-enforce‬يضنع ملنف ضب ت‬


‫ط قيند التنفيذ‪:‬‬

‫‪sudo aa-enforce /path/to/bin‬‬

‫المجلتتتتتد ‪ /etc/apparmor.d‬هتتتتتو مسكتتتتتان تواجتتتتتد ملفتتتتتا ت ضتتتتتبط ‪AppArmor‬؛ يمسكتتتتتن أن‬

‫نيستخندم لتعديل »ظنمط« جميع ملفا ت الضبط‪.‬‬

‫أد ش‬
‫خل ما يلي لوضع كل الملفا ت في ظنمط البناء‪:‬‬

‫*‪sudo aa-complain /etc/apparmor.d/‬‬

‫▲‬ ‫‪| 290‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الحماية‬

:‫لوضع جميع الملفا ت قيد التنفيذ‬

sudo aa-enforce /etc/apparmor.d/*

‫ ويمسكتن أن نيستتخندم‬،‫ لتحميتل ملتف ض بط إلتى النتواة‬apparmor_parser ‫نيستتخندم المتر‬

:‫؛ لتحميل ملف ضبط‬-r ‫لعادة تحميل ملف ضبط نمحنمل مسبصقا باستخدام الخيار‬

cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a

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

cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r

:‫ لعادة تحميل كل ملفا ت الضبط‬service apparmor ‫يمسكن استخدام‬

sudo service apparmor reload

- apparmor_parser ‫ متع الخيتار‬/etc/apparmor.d/disable ‫يمسكن استخدام المجلتد‬

:‫ لتعطيل ملف ضبط‬R

sudo ln -s /etc/apparmor.d/profile.name \
/etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/profile.name

▲ | 291
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫لعادة تفعيل ملف ضبط معنطل‪ ،‬احذف الوصلة الرمزية إلى الملف فتتي ‪/etc/apparmor.d‬‬

‫‪ /disable‬ثم أعد تحميل ملف الضبط باستخدام الخيار ‪:-a‬‬

‫‪sudo rm /etc/apparmor.d/disable/profile.name‬‬
‫‪cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a‬‬

‫يمسكن تعطيل ‪ ،AppArmor‬وسيزال تحميل وحدة النواة بإدخال ما يلي‪:‬‬

‫‪sudo service apparmor stop‬‬


‫‪sudo update-rc.d -f apparmor remove‬‬

‫لعادة تفعيل ‪ ،AppArmor‬أد ش‬


‫خل‪:‬‬

‫‪sudo service apparmor start‬‬


‫‪sudo update-rc.d apparmor defaults‬‬

‫ملحظة‪ :‬اس تبدل ‪ profile.name‬باستم ملتف الض بط التذي تريتد تعتديله‪ ،‬أي ص‬
‫ضتا اس تبدل ‪ /path/to/bin‬بمستار‬
‫الملف التنفيذي الحقيقي؛ على سبيل المثال‪ ،‬للمر ‪ ping‬استخدم ‪./bin/ping‬‬

‫ب‪ .‬ملفات الضبط‬

‫ملفتتا ت الضتتبط )‪ (profiles‬هتتي ملفتتا ت ظنصتتية بستتيطة موجتتودة فتتي ‪/etc/apparmor.d/‬؛ هتتذه‬

‫الملفتتتا ت مستتتماةة وف صقتتتا للمستتتار السكامتتتل للملتتتف التنفيتتتذي التتتذي تضتتتبطه لسكتتتن متتتع إبتتتدال » ‪ «/‬بنقطتتتة »‪«.‬؛‬

‫على سبيل المثال‪ /etc/apparmor.d/bin.ping ،‬هو ملف ضبط ‪ AppArmor‬للمر ‪./bin/ping‬‬

‫▲‬ ‫‪| 292‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫هنالك ظنوعان رئيسيان من القواعد المستخدمة في ملفا ت الضبط‪:‬‬

‫قيتتود المستتار )‪ :(Path entries‬التتتي تحتتدد الملفتتا ت التتتي يمسكتتن للتطتتبيق الوصتتول إليهتتا‬ ‫•‬

‫في ظنظام الملفا ت‪.‬‬

‫قيود المسكاظنيا ت )‪ :(Capability entries‬تحدد المتيازا ت المسموحة لعملية مقيدة‪.‬‬ ‫•‬

‫ق ظنظرصة على ‪ /etc/apparmor.d/bin.ping‬كمثال‪:‬‬


‫أل ش‬

‫>‪#include <tunables/global‬‬
‫{ )‪/bin/ping flags=(complain‬‬
‫>‪#include <abstractions/base‬‬
‫>‪#include <abstractions/consoles‬‬
‫>‪#include <abstractions/nameservice‬‬

‫‪capability net_raw,‬‬
‫‪capability setuid,‬‬
‫‪network inet raw,‬‬

‫‪/bin/ping mixr,‬‬
‫‪/etc/modules.conf r,‬‬
‫}‬

‫‪ :#include <tunables/global>‎‬تضتتمين تعتتبيرا ت متتن ملفتتا ت أختترى‪ ،‬وهتتذا يستتمح‬ ‫•‬

‫للعبارا ت المشتركة بين عددة تطبيقا ت بالتواجد في ملف مشترك‪.‬‬

‫)‪ :/bin/ping flags=(complain‬المستتار إلتتى التطتتبيق صتتاحب ملتتف الضتتبط‪ ،‬وضتتبط‬ ‫•‬

‫النمط إلى ‪.complain‬‬

‫‪ :capability net_raw,‬السماح بالوصول إلى امتياز ‪.CAP_NET_RAW Posix.le‬‬ ‫•‬

‫‪ :/bin/ping mixr,‬السماح للتطبيق بوصول القراءة والتنفيذ إلى الملف‪.‬‬ ‫•‬

‫ملحظة‪ :‬يجب إعادة تحميل ملف الضبط بعد تعديله‪ ،‬راجع القسم »استخدام ‪ «AppArmor‬للتفاصيل‪.‬‬

‫▲‬ ‫‪| 293‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫إنشاء ملف ضبط‬

‫صتتمم خطتتة اختبتتار‪ :‬فسكتتر كيتتف يمسكتتن »تمريتتن« التطتتبيق؛ يجتتب أن نتقنستتم خطتتة الختبتتار إلتتى‬

‫حال ت اختبار صغيرة‪ ،‬وكل حالة اختبار لها شرح صغير وقائمة بالخطوا ت التي يجب اتباعها‪.‬‬

‫بعض حال ت الختبار القياسية هي‪:‬‬

‫بدء تشغيل البرظنامج‪.‬‬ ‫•‬

‫إيقاف البرظنامج‪.‬‬ ‫•‬

‫إعادة تحميل البرظنامج‪.‬‬ ‫•‬

‫اختبار جميع الوامر المدعومة من سسكربت ‪.init‬‬ ‫•‬

‫توليد ملف الضبط الجديد‪ :‬استخدم ‪ aa-genprof‬لتوليد ملف ضبط جديد؛ من الطرفية‪:‬‬

‫‪sudo aa-genprof exectable‬‬

‫على سبيل المثال‪:‬‬

‫‪sudo aa-genprof slapd‬‬

‫لسكتتي نيضتتنمن ملتتف الضتتبط الجديتتد الختتاص بتتك فتتي حزمتتة ‪ ،apparmor-profiles‬فبدلتتغ عتتن‬

‫علة في ‪ Lanuchpad‬عن حزمة ‪:AppArmor‬‬

‫ضدمن خطة الختبار وحال ت الختبار‪.‬‬ ‫•‬

‫أضف ملف الضبط الجديد إلى العلة‪.‬‬ ‫•‬

‫▲‬ ‫‪| 294‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫تحديث ملفات الضبط‬

‫عندما ل يعمل برظنامج ما كما يجب؛ فافحص الرستائل التتي نترنستل إلتى ملفتا ت الس جل؛ يمسكتن‬

‫أن نيستتتتخندم البرظنامتتتج ‪ aa-logprof‬لفحتتتص ملفتتتا ت الستتتجل لرستتتائل التتتتدقيق الخاصتتتة ببرظنامتتتج‬

‫‪AppArmor‬؛ راجعها وحددث ملفا ت الضبط‪.‬‬

‫‪sudo aa-logprof‬‬

‫ج‪ .‬مصادر‬

‫راجع »‪ «AppArmor Administraion Guide‬لعدادا ت الضبط المتقدمة‪.‬‬ ‫•‬

‫للتفاصيل حول استتخدام ‪ AppArmor‬متع إصتتدارا ت أختترى متتن أوبنتتتو‪ ،‬فراجتتع صتفحة‬ ‫•‬

‫ويسكي المجتمع حول ‪.AppArmor‬‬

‫صفحة »‪ «OpenSUSE AppArmor‬هي تقديم آخر إلى ‪.AppArmor‬‬ ‫•‬

‫مسكتتان رائتتع للستتؤال حتتول المستتاعدة فتتي ‪ ،AppArmor‬والظنتتدماج متتع مجتمتتع ختتواديم‬ ‫•‬

‫أوبنتو هو قناة ‪ #ubuntu-server‬على خادوم ‪) Freenode‬شبسكة ‪.(IRC‬‬

‫▲‬ ‫‪| 295‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ .5‬الشهادات‬
‫واحدة من أكثر الشسكال الشائعة للتشفير في وقتنا الراهن هي التشفير وفق المفتتتاح العمتتومي‬

‫) ‪(public-key cryptography‬؛ يستتتتتتخدم التشتتتتتفير وفتتتتتق المفتتتتتتاح العمتتتتتتومي مفتاصحتتتتتا عاصمتتتتتا‬

‫صتتتا )‪(private key‬؛ يعمتتتل النظتتتام بتشتتتفير ) ‪ (encrypt‬المعلومتتتا ت‬


‫)‪ (public key‬ومفتاصحتتتا خا ص‬

‫باستخدام مفتاح عمومي‪ ،‬ول يمسكن أن نينف د‬


‫ك تشفيرها ) ‪ (decrypted‬إل باستخدام المفتاح الخاص‪.‬‬

‫استخدام شائع للتشفير وفق المفتاح العمومي هو تشفير البياظنا ت المنقولة باستخدام اتصال‬

‫‪ (Secure Socket Layer ) SSL‬أو ‪(Transport Layer Security ) TLS‬؛ على سبيل المثال‪،‬‬

‫إن ضتتتبط أباتشتتتي لتتتتوفير ‪- HTTPS‬بروتوكتتتول ‪ HTTP‬عتتتبر ‪ -SSL‬يستتتمح بتشتتتفير البياظنتتتا ت فتتتي‬

‫بروتوكول ل يوفر بحد ذاته آليصة للتشفير‪.‬‬

‫الشهادة )‪ (Certificate‬هي طريقة تستخدم لتوزيع المفتاح العمومي وغيره متتن المعلومتتا ت‬

‫عن الخادوم والمنظمة المسؤولة عنه؛ نتونقع الشهادا ت إلسكتروظنصيا بواسطة »سلطة الشتتهادا ت« )‪،(CA‬‬

‫إن سلطة الشهادا ت هي طرةف ثال ة‬


‫ث موثوق تأكد من دقة المعلوما ت الموجودة في الشهادة‪.‬‬

‫ا‪ .‬أنواع الشهادات‬

‫لضتتتبط ختتتادوم آمتتتن باستتتتخدام تشتتتفير وفتتتق المفتتتتاح العمتتتومي‪ ،‬عليتتتك إرستتتال ‪-‬فتتتي أغلتتتب‬

‫الحال ت‪ -‬طلب الشهادة )متضمصنا المفتاح العمتتومي الختتاص بتتك( ودليصل علتتى هويتتة شتتركتك ودفعتتصة‬

‫ماليتت صة إلتتى ستتلطة شتتهادا ت؛ ثتتم ستتتتحقق ستتلطة الشتتهادا ت متتن طلتتب الشتتهادة ومتتن هويتتتك‪ ،‬ثتتم‬

‫سنتر شسل الشهادة إلى خادومك المن‪ .‬بشسكتل بديل‪ ،‬تستطيع إظنشاء شهادتك الموقعة ذاتصيا‪.‬‬

‫ملحظة‪ :‬لحظ أظنه ل يجدر بك استخدام الشهادا ت الموقعة ذاتصيا في أغلبية بيئا ت العمل الظنتاجية‪.‬‬

‫▲‬ ‫‪| 296‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫بإكمتتتال مثتتتال ‪ ،HTTPS‬ستتتتوفر شتتتهادة موقعتتتة متتتن ستتتلطة الشتتتهادا ت إمسكتتتاظنينتين مهمتتتتين‬

‫ل تملسكهما الشهادا ت الموقعة ذاتصيا‪:‬‬

‫المتصفحا ت تتعرف )عتتادصة( تلقائ صيتتا علتتى الشتتهادة وتستتمح بإظنشتتاء اتصتتال آمتتن دون طلتتب‬ ‫•‬

‫موافقة المستخدم‪.‬‬

‫عنتتدما تعطتتي ستتلطة الشتتهادا ت شتتهاد صة موقعتتة‪ ،‬فإظنهتتا تضتتمن هويتتة المنظمتتة التتتي تتتوفر‬ ‫•‬

‫صفحا ت الويب إلى المتصفح‪.‬‬

‫أغلبية متصفحا ت الويب والحواسيب التي تدعم ‪ SSL‬لديها قائمتتة بستتلطا ت الشتتهادا ت التتتي‬

‫نتقنبتتل شتتهاداتها تلقائصيتتا؛ إذا واجتته المتصتتفح شتتهاد صة لتتم تسكتتن ستتلطة الشتتهادا ت التتتي أصتتدرتها فتتي‬

‫قتتائمته‪ ،‬فتتإظنه ) أي المتصتتفح( ستتيطلب متتن المستتتخدم قبتتول أو رفتتض التصتتال؛ وقتتد نتودلتتد بعتتض‬

‫التطبيقا ت الخرى رسالة خطأ عند استخدام شهادة موقعة ذاتصيا‪.‬‬

‫عملية الحصول على شهادة من سلطة الشهادا ت هي عملية سهلة جصدا‪ ،‬لمحة سريعة كالتالي‪:‬‬

‫أظنششئ زوج مفاتيح خاص وعام‪.‬‬ ‫‪.1‬‬

‫‪ .2‬أظن ششئ طلب شهادة بناصء على المفتاح العمومي‪ ،‬يحتوي طلب الشتتهادة علتتى معلومتتا ت عتتن‬

‫خادومك والشركة التي تستضيفه‪.‬‬

‫‪ .3‬أرستتل طلتتب الشتتهادة متتع الوثتتائق التتتي تثبتتت هويتتتك إلتتى ستتلطة الشتتهادا ت؛ ل ظنستتتطيع‬

‫إخبارك أدية سلطة شهادا ت عليك أن تختارها؛ ربما يسكون قرارك مبنصيا على تجارب ستابقة‪،‬‬

‫أو على تجارب أحد أصدقائك أو زملئك‪ ،‬أو على عوامل اقتصادية‪.‬‬

‫▲‬ ‫‪| 297‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫بعتتتد أن تختتتتار ستتتلطة الشتتتهادا ت‪ ،‬فعليتتتك اتبتتتاع تعليمتتتاتهم التتتتي يوفروظنهتتتا عتتتن كيفيتتتة‬ ‫‪.4‬‬

‫الحصول على شهادة منهم‪.‬‬

‫ي أظنك هو؛ فسيرسلون لك شهادصة رقميصة‪.‬‬


‫بعد أن تتأكد سلطة الشهادا ت أظنك من تدع د‬ ‫‪.5‬‬

‫‪ .6‬ث دبت هذه الشهادة على خادومك المن‪ ،‬واضبط البرامج الملئمة لستخدام هذه الشهادة‪.‬‬

‫ب‪ .‬توليد طلب توقيع الشهادة )‪(CSR‬‬

‫إذا كنت ستحصتل علتتى شتتهادة متن ستلطة شتهادا ت أو كنتتت ستنتودقع شتتهادتك ذاتصيتا‪ ،‬فتتإن أول‬

‫خطوة هي توليد مفتاح‪.‬‬

‫إذا كتتتتتتاظنت الشتتتتتتهادة سنتستتتتتتتخ ندم متتتتتتن عفتتتتتتاريت الختتتتتتدما ت‪ ،‬مثتتتتتتل أباتشتتتتتتي‪ ،‬أو ‪،Postfix‬‬

‫ف عتتادصة؛ عتتدم وجتود عبتتارة‬


‫أو ‪... Dovecot‬إلخ‪ .‬فإن مفتاصحا بدون عبارة مرور )‪ (passphrase‬كا ت‬

‫مرور تسمح للخدما ت أن تبدأ دون تدخل يدوي‪ ،‬وهذه هي الطريقة المفضلة لبدء تشغيل عفريت‪.‬‬

‫سيغطي هذا القسم طريقة توليد مفتاح متع عبتارة متترور‪ ،‬وواحتتد آختر بتتدون عبتتارة مترور؛ ثتتم‬

‫سنستخدم المفتاح بدون عبارة مرور لتوليد شهادة سنتستخندم في مختلف عفاريت الخدما ت‪.‬‬

‫تحذير‪ :‬تشغيل خدمة آمنة بدون عبارة مرور هو أمر ملئم لظنك لن تحتاج إلى إدخال عبارة المرور كل مرة تبتتدأ‬
‫فيها خدمتك المنة‪ ،‬لسكن هذا غير آمن وأي كشف عن المفتاح سيؤدي إلى جعل الخادوم عرضصة للهجما ت‪.‬‬

‫▲‬ ‫‪| 298‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫لتوليد »مفاتيح« لطلب توقيع الشهادة‪ ،‬عليك تنفيذ المر التي من شمنحث الطرفية‪:‬‬

‫‪openssl genrsa -des3 -out server.key 2048‬‬


‫‪Generating RSA private key, 2048 bit long modulus‬‬
‫‪..........................++++++‬‬
‫‪.......++++++‬‬
‫)‪e is 65537 (0x10001‬‬
‫‪Enter pass phrase for server.key:‬‬

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

‫علتتتى ثماظنيتتتة محتتتارف؛ الطتتتول الدظنتتتى عنتتتد تحديتتتد الخيتتتار ‪ -des3‬هتتو أربعتتتة محتتتارف؛ ويجتتتب أن‬

‫تحتتتوي علتتى أرقتتام أو علتتى علمتتا ت ترقيتتم ول تحتتتوي علتتى كلمتتة متتن القتتاموس؛ تتتذكر أن عبتتارة‬

‫المرور حساسة لحالة الحرف‪.‬‬

‫أعد كتابة عبارة المرور للتحقق؛ وبعد إعادة كتابتهتا بشتسكل صتحيح‪ ،‬فستنيونلد مفتتتاح الختادوم‬

‫وسنيخنزن في ملف ‪.server.key‬‬

‫أظنششئ الن مفتاصحا غير آمن )‪ insecure‬أي بدون عبارة مرور( ثم بددل بين أسماء المفاتيح‪:‬‬

‫‪openssl rsa -in server.key -out server.key.insecure‬‬


‫‪mv server.key server.key.secure‬‬
‫‪mv server.key.insecure server.key‬‬

‫أصبح الن استتم ملتتف المفتتتاح غيتتر المتتن هتو ‪ ،server.key‬وسنستتتخدم هتتذا الملتتف لتوليتتد‬

‫‪ CSR‬بدون عبارة مرور‪.‬‬

‫▲‬ ‫‪| 299‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ظندفذ المر التي في شمنحث الطرفية لظنشاء ‪:CSR‬‬

‫‪openssl req -new -key server.key -out server.csr‬‬

‫س نتستتأل عتتن إدختتال عبتتارة المتترور‪ ،‬إذا أدخلتتت عبتتارصة صتتحيحصة‪ ،‬فسنتستتأل عتتن إدختتال استتم‬

‫الشركة‪ ،‬واسم الموقع‪ ،‬ومعرف البريد اللسكتروظني ‪...‬إلخ‪ .‬بعد أن نتد ش‬


‫خل كل هتذه التفاصتتيل‪ ،‬فسنيننشتتأ‬

‫طلب توقيع الشهادة )‪ (CSR‬وسنيخنزن في ملف ‪.server.csr‬‬

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

‫سلطة الشهادا ت ملف طلب توقيع الشتتهادة لصتتدار الشتتهادة؛ وعلتتى السكفتتة الختترى‪ ،‬تستتتطيع توليتتد‬

‫شهادتك الموقعة ذاتصيا باستخدام طلب توقيع الشهادة السابق‪.‬‬

‫ج‪ .‬إنشاء شهادة موقعة ذاتييا‬

‫ظندفذ المر التي في الطرفية لظنشاء شهادة موقعة ذاتصيا‪:‬‬

‫\ ‪openssl x509 -req -days 365 -in server.csr -signkey server.key‬‬


‫‪-out server.crt‬‬

‫سيستتألك المتتر الستتابق عتتن عبتتارة المتترور‪ ،‬بعتتد أن تتتدخل عبتتارة المتترور الصتتحيحة‪ ،‬فسنتننشتتأ‬

‫الشهادة ونتخنزن في ملف ‪.server.crt‬‬

‫تحذير‪ :‬إذا اسنتخ شدم خادومك المن في بيئة إظنتاجية‪ ،‬فربما تحتاج إلى شهادة موقع من سلطة الشتتهادا ت ) ‪،(CA‬‬
‫ليس من المستحسن استخدام شهادة موقعة ذاتصيا‪.‬‬

‫▲‬ ‫‪| 300‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫د‪ .‬تثبيت الشهادة‬

‫تستتتطيع تثتتبيت ملتتف المفتتتاح ‪ server.key‬وملتتف الشتتهادة ‪ server.crt‬أو ملتتف الشتتهادة‬

‫النمصندر من سلطة الشهادا ت‪ ،‬بتنفيذ المرين التيين في الطرفية‪:‬‬

‫‪sudo cp server.crt /etc/ssl/certs‬‬


‫‪sudo cp server.key /etc/ssl/private‬‬

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

‫تستتتتتخدم ملفتتتتا ت الشتتتتهادة والمفتتتتتاح؛ علتتتتى ستتتتبيل المثتتتتال‪ ،‬يمسكتتتتن أن يتتتتزود أباتشتتتتي ‪،HTTPS‬‬

‫و ‪ Dovecot‬يستطيع أن يزود ‪ IMAPS‬و ‪... POP3S‬إلخ‪.‬‬

‫ه‪ .‬سلطة الشهادات‬

‫إذا كتتاظنت تتطلتتب الختتدما ت علتتى شتتبسكتك أكتتثر متتن مجتترد بضتتع شتتهادا ت موقعتتة ذاتصيتتا‪ ،‬فربمتتا‬

‫يسكون من المفيد بذل جهد إضافي وإعداد سلطة شهادا ت داخلية؛ ستسمح الشتتهادا ت الموقعتتة متن‬

‫سلطة الشهادا ت الخاصة بك لمختلف الخدما ت باستخدام الشتتهادا ت لسكتتي تثتتق بستتهولة بالختتدما ت‬

‫الخرى التي تملك شهادا ت نمصندرة من ظنفس سلطة الشهادا ت‪.‬‬

‫أظنششئ أو صل المجلدا ت التي سنضع فيها شهادة سلطة الشهادا ت والملفا ت المتعلقة بذلك‪:‬‬

‫‪sudo mkdir /etc/ssl/CA‬‬


‫‪sudo mkdir /etc/ssl/newcerts‬‬

‫▲‬ ‫‪| 301‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫تحتاج ستلطة الشتهادا ت إلتتى بضتتعة ملفتتا ت إضتافية لسكتي تعمتتل‪ ،‬واحتةد لسكتتي يتعقتب آختر رقتم‬

‫تسلسلي ناستخ شدم من سلطة الشتتهادا ت‪ ،‬إذ يجتتب أن تملتك كتتل شتتهادة رقصمتتا تسلستتلصيا فريتتصدا؛ وملتتةف‬

‫ن‬
‫آخر لتسجيل الشهادا ت التي أصشدنر ت‪:‬‬

‫"‪sudo sh -c "echo '01' > /etc/ssl/CA/serial‬‬


‫‪sudo touch /etc/ssl/CA/index.txt‬‬

‫الملتتف الثتتالث هتتو ملتتف ضتتبط ستتلطة الشتتهادا ت‪ ،‬علتتى الرغتتم متتن أظنتته ليتتس مطلوصبتتا‪ ،‬لسكتتن متتن‬

‫المنطقتتتي وجتتتوده عنتتتتد إظنشتتتاء عتتتددة شتتتتهادا ت؛ عتتتتددل ملتتتف ‪ /etc/ssl/openssl.cnf‬وفتتتي قستتتتم‬

‫] ‪ ،[ CA_default‬غدير ما يلي‪:‬‬

‫‪dir‬‬ ‫=‬ ‫‪/etc/ssl/‬‬ ‫‪# Where everything is kept‬‬


‫‪database‬‬ ‫=‬ ‫‪$dir/CA/index.txt‬‬ ‫‪# database index file.‬‬
‫‪certificate‬‬ ‫=‬ ‫‪$dir/certs/cacert.pem # The CA certificate‬‬
‫‪serial‬‬ ‫=‬ ‫‪$dir/CA/serial‬‬ ‫‪# The current serial number‬‬
‫‪private_key‬‬ ‫=‬ ‫‪$dir/private/cakey.pem # The private key‬‬

‫ثم أظنششئ الشهادة الجذر الموقعة ذاتصيا‪:‬‬

‫\ ‪openssl req -new -x509 -extensions v3_ca -keyout cakey.pem‬‬


‫‪-out cacert.pem -days 3650‬‬

‫سنتسأل عن إدخال التفاصيل حول الشهادة‪.‬‬

‫الن ثبت الشهادة الجذر والمفتاح‪:‬‬

‫‪sudo mv cakey.pem /etc/ssl/private/‬‬

‫▲‬ ‫‪| 302‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪sudo mv cacert.pem /etc/ssl/certs/‬‬

‫أظنت الن جاه ةز لبدء توقيع الشهادا ت‪ ،‬أول شتتيء مطلتوب هتو » طلتب توقيتع الشتتهادة« )راجتع‬

‫القستتم الستتابق لمزيتتد متتن المعلومتتا ت(‪ ،‬بعتتد أن تحصتتل علتتى طلتتب توقيتتع الشتتهادة‪ ،‬فأد ش‬
‫ختتل متتا يلتتي‬

‫لتوليد شهادة موقعة من سلطة الشهادا ت‪:‬‬

‫‪sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf‬‬

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

‫لصدار الشهادة‪ ،‬يجب أن ترى كميصة كبيرصة من المخرجا ت المتعلقة بإظنشاء الشهادة‪.‬‬

‫يجتتب أن يسكتتون هنالتتك ملتتف جديتتد هتتو ‪ /etc/ssl/netcerts/01.pem‬يحتتتوي علتتى ظنفتتس‬

‫المخرجتتا ت‪ ،‬اظنستتخ والصتتق كتتل شتتيء متتن بدايتتة الستتطر ‪ -----BEGIN CERTIFICATE -----‬إلتتى‬

‫الستتطر ‪ -----END CERTIFICATE----‬إلتتى ملتتف مستتمى بنفتتس استتم المضتتيف لخادومتتك مسكتتان‬

‫تثبيت الشهادة؛ فمثصل السم ‪ mail.example.com.crt‬هو اسم وصفي جيد‪.‬‬

‫الشهادا ت المتتالية سنتسمى ‪ ،02.pem‬و ‪... 03.pem‬إلخ‪.‬‬

‫ملحظة‪ :‬استبدل ‪ mail.example.com.crt‬بالسم الوصفي الخاص بك‪.‬‬

‫في النهاية‪ ،‬اظنسخ الشهادة الجديدة إلى المضيف الذي يحتاج لهتتا واضتتبط الختتدما ت الملئمتتة‬

‫لسكي تستخدمها‪ ،‬المسكان الفتراضتتي لتثتتبيت الشتتهادا ت هتتو ‪ ،/etc/ssl/certs‬وهتتذا متتا ستنيمدسكن عتتددة‬

‫خدما ت من استخدام ظنفس الشهادة دون تعقيد أذوظنا ت الملف‪.‬‬

‫للتطبيقتتا ت التتتي يمسكتتن ضتتبطها لستتتخدام شتتهادة ‪ ،CA‬يجتتب أن نتنستتخ أي ص‬


‫ضتتا الملتتف التتتالي‬

‫▲‬ ‫‪| 303‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ /etc/ssl/certs/cacert.pem‬إلى مجلد ‪ /etc/ssl/certs/‬على كل خادوم‪.‬‬

‫و‪ .‬مصادر‬

‫لتعليما ت تفصيلية عن استخدام التشفير‪ ،‬راجع صفحة »‪.«SSL Certificates HOWTO‬‬ ‫•‬

‫صفحة ويسكيبيديا ‪ HTTPS‬لديها المزيد من المعلوما ت حول ‪.HTTPS‬‬ ‫•‬

‫للمزيد من المعلوما ت حول ‪ ،OpenSSL‬راجع الصفحة الرئيسية لموقع ‪.OpenSSL‬‬ ‫•‬

‫كتاب » ‪ «Network Security with OpenSSL‬من ‪ O'Reilly‬هو مرجع معدمق‪.‬‬ ‫•‬

‫▲‬ ‫‪| 304‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫‪ .6‬نظام ملفات ‪eCryptfs‬‬


‫إن ‪ eCryptfs‬هو ظنظام ملفا ت للتشفير متوافق مع معايير ‪ POSIX‬ومن فئة الشركا ت لنظتتام‬

‫ليننسكس؛ وبتشسكيل طبقة فوق طبقة ظنظام الملفا ت‪ ،‬فإن ‪ eCryptfs‬يحمي الملفا ت بغتتض النظتتر عتتن‬

‫ظنظام الملفا ت النمستخندم أو ظنوع القسم ‪...‬إلخ‪.‬‬

‫هنالك خيار أثناء التثتتبيت لتشتتفير قستتم ‪ ،/home‬هتتذا سيضتتبط تلقائصيتتا كتتل شتيء يحتتتاج لتته‬

‫النظام لتشفير ووصل ذاك القسم‪ .‬سنشرح هنا طريقة الضبط لتشفير ‪ /srv‬باستخدام ‪.eCryptfs‬‬

‫ا‪ .‬استخدام ‪eCryptfs‬‬

‫أوصل‪ ،‬ثدبت الحزم اللزمة‪ ،‬بإدخال المر التي من الطرفية‪:‬‬

‫‪sudo apt-get install ecryptfs-utils‬‬

‫الن ش‬
‫صل القسم الذي تريد تشفيره‪:‬‬

‫‪sudo mount -t ecryptfs /srv /srv‬‬

‫سنتسأل الن عن بعض التفاصيل حول كيفية تشفير البياظنا ت‪.‬‬

‫لختبار أن الملفا ت الموجودة في ‪ /srv‬هي مشفرة‪ ،‬فاظنسخ المجلد ‪ /etc/default‬إلى ‪:/srv‬‬

‫‪sudo cp -r /etc/default /srv‬‬

‫▲‬ ‫‪| 305‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫ثم افصل القسم ‪ ،/srv‬وحاول عرض الملف‪:‬‬

‫‪sudo umount /srv‬‬


‫‪cat /srv/default/cron‬‬

‫إعادة وصل ‪ /srv‬باستخدام ‪ ecryptfs‬ستجعل البياظنا ت قابلصة للعرض مرصة أخرى‪.‬‬

‫ب‪ .‬وصل القسام المشفرة تلقائييا‬

‫هنالتتك طريقتتتان لوصتتل ظنظتتام ملفتتا ت نمشتتنفر باستتتخدام ‪ ecryptfs‬أثنتتاء القلع؛ سيستتتخدم‬

‫هتتذا المثتتال الملتتف ‪ /root/.ecryptfsrc‬التتذي يحتتتوي علتتى خيتتارا ت الوصتتل‪ ،‬بالضتتافة إلتتى ملتتف‬

‫مرور موجود على قرص ‪.USB‬‬

‫أظنششئ أوصل الملف ‪ /root/.ecryptfsrc‬الذي يحتوي على‪:‬‬

‫‪key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt‬‬
‫‪ecryptfs_sig=5826dd62cf81c615‬‬
‫‪ecryptfs_cipher=aes‬‬
‫‪ecryptfs_key_bytes=16‬‬
‫‪ecryptfs_passthrough=n‬‬
‫‪ecryptfs_enable_filename_crypto=n‬‬

‫ملحظة‪ :‬عددل ‪ ecryptfs_sig‬إلى التوقيع في ‪./root/.ecryptfs/sig-cache.txt‬‬

‫ثم أظنششئ ملف المرور ‪:/mnt/usb/passwd_file.txt‬‬

‫]‪passphrase_passwd=[secrets‬‬

‫▲‬ ‫‪| 306‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫أضف الن السطر الضرورية إلى ملف ‪:/etc/fstab‬‬

‫‪/dev/sdb1 /mnt/usb‬‬ ‫‪ext3‬‬ ‫‪ro‬‬ ‫‪0 0‬‬


‫‪/srv‬‬ ‫‪/srv‬‬ ‫‪ecryptfs‬‬ ‫‪defaults‬‬ ‫‪0 0‬‬

‫تأكد أن قرص ‪ USB‬سيوصل قبل القسم المشفر‪.‬‬

‫في النهاية‪ ،‬أعد القلع ويجب أن يوصل ‪ /srv‬باستخدام ‪.eCryptfs‬‬

‫ج‪ .‬أدوا ت‬
‫ت أتخرى‬

‫ ت أخرى مفيدة‪:‬‬
‫الحزمة ‪ ecryptfs-utils‬تحتوي على أدوا ت‬

‫الداة ‪ ecryptfs-setup-private‬نتنششتتتتتتتئ مجلتتتتتتتد ‪ ~/Private‬التتتتتتتذي يحتتتتتتتتوي علتتتتتتتى‬ ‫•‬

‫المعلومتتا ت المشتتفرة؛ يمسكتتن تنفيتتذ هتتذه الداة متتن المستتتخدمين العتتاديين للحفتتاظ علتتى‬

‫بياظناتهم من المستخدمين الخرين على النظام‪.‬‬

‫الداة ‪ ecryptfs-mount-private‬و ‪ ecryptfs-umount-private‬ستصتتتتل أو تفصتتتتل‬ ‫•‬

‫مجلد ‪ ~/Private‬على التوالي وبالترتيب‪.‬‬

‫‪ :ecryptfs-add-passphrase‬إضافة عبارة مرور لما يسمى »‪.«kernel keyring‬‬ ‫•‬

‫‪ :ecryptfs-manager‬إدارة كائنا ت ‪ eCryptfs‬مثل المفاتيح‪.‬‬ ‫•‬

‫‪ :ecryptfs-stat‬السماح لك بعرض معلوما ت ‪ eCryptfs‬الوصفية لملتف ما‪.‬‬ ‫•‬

‫▲‬ ‫‪| 307‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الحماية‬

‫د‪ .‬مصادر‬

‫للمزيد من المعلوما ت حول ‪ ،eCryptfs‬راجع صفحة المشروع على ‪.Lanuchpad‬‬ ‫•‬

‫هنالك مقالة في ‪ Linux Journal‬تشرح ‪.eCryptfs‬‬ ‫•‬

‫للمزيد من خيارا ت ‪ ،eCryptfs‬راجع صفحة الدليل ‪.man ecryptfs‬‬ ‫•‬

‫لدى صفحة ويسكي أوبنتو »‪ «eCryptfs‬المزيد من التفاصيل‪.‬‬ ‫•‬

‫▲‬ ‫‪| 308‬‬


‫المراقبة‬
‫‪10‬‬

‫▲‬ ‫‪| 309‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫المراقبتتة هتتي جتتزء مهتتم متتن إدارة الختتواديم والختتدما ت الساستتية؛ نترانقتتب معظتتم الختتدما ت‬

‫الشتتتتبسكية للداء )‪ (performance‬أو التتتتتوفر )‪ (availability‬أو كليهمتتتتا؛ سنيشتتتترح هتتتتذا الفصتتتتل‬

‫طريقة تثبيت وضبط ‪ Nagios‬لمراقبة التوفر‪ ،‬و ‪ Munin‬لمراقبة الداء‪.‬‬

‫سنستتتتخدم فتتتي أمثلتتتة هتتتذا الفصتتتل ختتتادومين بأستتتماء ‪ server01‬و ‪server02‬؛ سنيضتتتنبط‬

‫‪ server01‬متتتع ‪ Nagios‬لمراقبتتتة الختتتدما ت التتتتي عليتتته وعلتتتى الختتتادوم ‪server02‬؛ وسنيضتتتنبط‬

‫‪ server01‬متتتتتع ‪ Munin‬لجمتتتتتع المعلومتتتتتا ت متتتتتن الشتتتتتبسكة‪ ،‬باستتتتتتخدام حزمتتتتتة ‪،munin-node‬‬

‫وسنيضنبط ‪ server02‬لسكي نيرشسل المعلوما ت إلى ‪.server01‬‬

‫ظنأمل أن تساعدك هذه المثلة البسيطة في مراقبة الخواديم والخدما ت الضافية في شبسكتك‪.‬‬

‫▲‬ ‫‪| 310‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫‪ .1‬ناجيوس ‪Nagios‬‬

‫ا‪ .‬التثبيت‬

‫أوصل‪ ،‬ثبت الحزمة ‪ nagios‬على خادوم ‪ ،server01‬وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install nagios3 nagios-nrpe-plugin‬‬

‫سنيطنلب منك إدخال كلمة مرور لمستخدم ‪ ،nagiosadmin‬تصاريح المستخدم مخزظنة فتتي‬

‫‪ ./etc/nagios3/htpasswd.users‬ولتعتتتتتتتتتتديل كلمتتتتتتتتتتة متتتتتتتتتترور ‪ nagiosadmin‬أو إضتتتتتتتتتتافة‬

‫مستخدمين آخرين إلى سسكربتا ت ‪ ،Nagios CGI‬فاستخدم ‪ htpasswd‬الذي هو جزء من حزمة‬

‫‪.apache2-utils‬‬

‫على سبيل المثال‪ ،‬لتغيير كلمة المرور لمستخدم ‪:nagiosadmin‬‬

‫‪sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin‬‬

‫لضافة مستخدم جديد‪:‬‬

‫‪sudo htpasswd /etc/nagios3/htpasswd.users steve‬‬

‫▲‬ ‫‪| 311‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫الن على خادوم ‪ ،server02‬ثدبت الحزمة ‪nagios-nrpe-server‬؛ بتنفيذ المر التي على‬

‫‪:server02‬‬

‫‪sudo apt-get install nagios-nrpe-server‬‬

‫ملحظة‪ :‬سيستمح ‪ NRPE‬ل ك بتنفيتذ فحوصتا ت محليتة علتى الجهتزة البعيتدة‪ ،‬هنالتك طترق أخترى للقيتام بتذلك‬
‫عبر إضافا ت ‪ Nagios‬أخرى‪.‬‬

‫ب‪ .‬لمحة عن الضبط‬

‫هنالك عدة مجلدا ت تحتوي على ضبط ‪ Nagios‬وملفا ت التحقق )‪.(check files‬‬

‫‪ :/etc/nagios3‬يحتتتتتوي علتتتتى ملفتتتتا ت الضتتتتبط لعمتتتتل عفريتتتتت ‪ ،nagios‬وملفتتتتا ت ‪،CGI‬‬ ‫•‬

‫والمضيفين ‪...‬إلخ‪.‬‬

‫‪ :/etc/nagios-plugins‬يحتوي ملفا ت الضبط للتحقق من الخدما ت‪.‬‬ ‫•‬

‫‪ :/etc/nagios‬فتتي المضتتيفين البعيتتدين‪ ،‬ويحتتتوي علتتى ملفتتا ت ضتتبط ‪nagios-nrpe-‬‬ ‫•‬

‫‪.server‬‬

‫‪ :/usr/lib/nagios/plugins/‬المسكان الذي تخنزن فيه ملفتتا ت التحق ق الثنائيتة‪ ،‬اس تخدم‬ ‫•‬

‫الخيار ‪ -h‬لمشاهدة المساعدة لتحقتق ما‪.‬‬

‫▲‬ ‫‪| 312‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫مثال‪:‬‬

‫‪/usr/lib/nagios/plugins/check_dhcp -h‬‬

‫هنالتتك وفتترة فتتي التحققتتا ت التتتي يمسكتتن ضتتبط ‪ Nagios‬ليجريهتتا علتتى أي مضتتيف؛ سنيضتتنبط‬

‫‪ Nagios‬فتتتي هتتتذا المثتتتال للتحقتتتق متتتن مستتتاحة القتتترص الصتتتلب المتتتتوفرة و ‪ DNS‬و ‪MySQL‬؛‬

‫سنيجرى تحقق ‪ DNS‬على ‪ server02‬وتحقق ‪ MySQL‬على ‪ server01‬و ‪.server02‬‬

‫ملحظة‪ :‬راجع »الفصل الحادي عشر‪ :‬خواديم الويب« لمزيتد من المعلوما ت حول ضتتبط ختتادوم أباتشتتي‪ ،‬وراجتتع‬
‫»الفصل الثامن« لمعلوما ت حول ‪ ،DNS‬والفصل الثاظني عشر لمعلوما ت حول ‪.MySQL‬‬

‫هنالك بعض المصطلحا ت التي عندما نتشنرح سنتسدهل فهم ضبط ‪:Nagios‬‬

‫المضيف )‪ :(host‬خادوم أو محطة عمل )‪ ،(workstation‬أو جهاز شبسكي ‪...‬إلخ‪ .‬الذي نيرانقب‪.‬‬ ‫•‬

‫مجموعتتة مضتتيفين ) ‪ :(host group‬مجموعتتة متتن المضتتيفين المتشتتابهين؛ علتتى ستتبيل‬ ‫•‬

‫المثال‪ ،‬تستطيع أن نتجدمع كل خواديم الويب أو خواديم الملفا ت ‪...‬إلخ‪.‬‬

‫الخدمة )‪ :(service‬الخدمة التي نترانقب في المضيف‪ ،‬مثل ‪ HTTP‬أو ‪ DNS‬أو ‪... NFS‬إلخ‪.‬‬ ‫•‬

‫مجموعتتتة الختتدما ت )‪ :(service group‬تستتمح لتتك بجمتتتع عتتتددة ختتدما ت متشتتتابهة متتع‬ ‫•‬

‫بعضها بع ص‬
‫ضا‪ ،‬هذا مفيد لتجميع عددة خدما ت ‪ HTTP‬على سبيل المثال‪.‬‬

‫جهتتة التصتتال )‪ :(contact‬الشتتخص التتذي ستتنيننبه عنتتدما يحتتدث حتتد ة‬


‫ث متتا؛ يمسكتتن ضتتبط‬ ‫•‬

‫‪ Nagios‬ليرسل بريصدا إلسكتروظنصيا أو رسائل ‪... SMS‬إلخ‪.‬‬

‫▲‬ ‫‪| 313‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫افتراضتتصيا‪ ،‬يسكتتون ضتتبط ‪ Nagios‬ليتحقتتق متتن ‪ ،HTTP‬والمستتاحة التخزينيتتة المتتتوفرة فتتي‬

‫القتتتترص‪ ،‬و ‪ ،SSH‬والمستتتتتخدمين الحتتتتاليين‪ ،‬والعمليتتتتا ت‪ ،‬وال ش‬


‫حمتتتتل علتتتتى ‪localhost‬؛ ستتتتيتحقق‬

‫‪ Nagios‬أي ص‬
‫ضا من البوابة بعمل ‪ ping‬لها‪.‬‬

‫تثبيتتتا ت ‪ Nagios‬الضتتخمة قتتد يصتتبح ضتتبطها معقتتصدا جتتصدا‪ ،‬لتتذلك متتن الفضتتل عتتادصة البتتدء‬

‫بمضيف واحد أو اثنين ثم التوسع بعد ضبطهما جيصدا‪.‬‬

‫ج‪ .‬الضبط‬

‫‪ .1‬أوصل‪ ،‬أظنشئ ملف ضبط للمضيف للخادوم ‪server02‬؛ ما لم نيذكر عسكس ذلك‪ ،‬فعليتتك تنفيتتذ‬

‫هذه الوامر على ‪server01‬؛ أد ش‬


‫خل ما يلي في الطرفية‪:‬‬

‫\ ‪sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg‬‬
‫‪/etc/nagios3/conf.d/server02.cfg‬‬

‫ملحظتتتتتتتتة‪ :‬فتتتتتتتي الوامتتتتتتتر الستتتتتتتتابقة أو التاليتتتتتتتتة استتتتتتتتتبدل » ‪ «server01‬و » ‪ «server02‬و ‪172.18.100.100‬‬


‫و ‪ 172.18.100.101‬بأسماء المضيفين وعناوين ‪ IP‬لخادونميك‪.‬‬

‫▲‬ ‫‪| 314‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫المراقبة‬

:/etc/nagios3/conf.d/server02.cfg ‫ثم عددل الملف‬

define host {
use generic-host ; Name of host template to
use
host_name server02
alias Server 02
address 172.18.100.101
}
# check DNS service.
define service {
use generic-service
host_name server02
service_description DNS
check_command check_dns!172.18.100.101
}

:‫ لتفعيل الضبط الجديد‬nagios ‫أعد تشغيل عفريت‬

sudo service nagios3 restart

/etc/nagios3/conf.d/ ‫ بإضافة ما يلي إلى‬MySQL ‫أضف الن تعريصفا للتحقق من‬

:services_nagios.cfg

# check MySQL servers.


define service {
hostgroup_name mysql-servers
service_description MySQL
check_command check_mysql_cmdlinecred!nagios!
secret!$HOSTADDRESS
use generic-service
notification_interval 0 ; set > 0 if you want to be
renotified
}

▲ | 315
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫المراقبة‬

/etc/nagios3/conf.d/ ‫؛ عددل الملف‬mysql-servers ‫يجب الن تعريف مجموعة المضيفين‬

:‫ مضيصفا‬hostgroups_nagios2.cfg

# MySQL hostgroup.
define hostgroup {
hostgroup_name mysql-servers
alias MySQL servers
members localhost, server02
}

MySQL ‫ إلتتتى‬nagios ‫ فأضتتتف مستتتتخدم‬،MySQL ‫ لن يستتتتوثق إلتتتى‬Nagios ‫ يحتتتتاج‬.3

:‫بإدخال المر‬

mysql -u root -p \
-e "create user nagios identified by 'secret';"

.mysql-servers ‫ في كل المضيفين في مجموعة‬nagios ‫ يجب أن يتواجد المستخدم‬:‫ملحظة‬

:MySQL ‫ ليبدأ التحقق من خواديم‬nagios ‫أعد تشغيل‬

sudo service nagios3 restart

▲ | 316
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫المراقبة‬

.server02 ‫ للتحقق من المساحة الفارغة في القرص على الخادوم‬NRPE ‫ اضبط‬،‫أخيصرا‬

:/etc/nagios3/conf.d/server02.cfg ‫ في ملف‬server01 ‫أضف التحقق من الخدمة في‬

# NRPE disk check.


define service {
use generic-service
host_name server02
service_description nrpe-disk
check_command check_nrpe_1arg!check_all_disks!
172.18.100.101
}

:‫ مغديصرا‬/etc/nagios/nrpe.cfg ‫ عددل الملف‬،server02 ‫الن على الخادوم‬

allowed_hosts=172.18.100.100

:‫ثم في منطقة تعريف المر أضف ما يلي‬

command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w
20% -c 10% -e

:nagios-nrpe-server ‫ أعد تشغيل‬،‫في النهاية‬

sudo service nagios-nrpe-server restart

‫وأي ص‬
:nagios ‫ أعد تشغيل‬server01 ‫ضا على الخادوم‬

sudo service nagios3 restart

▲ | 317
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫يجب أن تسكون قادصرا على رؤية المضتتيف والتحقتق متتن الختدما ت فتتي ملفتتا ت ‪Nagios CGI‬؛‬

‫للوصول إليهم‪ ،‬ودجه متصفحك إلى ‪http://server01/nagios3‬؛ ثم سنتسأل عن استتم مستتتخدم‬

‫‪ nagiosadmin‬وكلمة مروره‪.‬‬

‫د‪ .‬مصادر‬

‫لتتتتم يشتتتترح هتتتتذا القستتتتم إل القليتتتتل متتتتن ميتتتتزا ت ‪Nagios‬؛ تحتتتتتوي الحزمتتتتتين ‪nagios-‬‬ ‫•‬

‫‪ plugins-extra‬و ‪ nagios-snmp-plugins‬على المزيد من تحققا ت الخدما ت‪.‬‬

‫للمزيد من المعلوما ت‪ ،‬راجع موقع ‪ ،Nagios‬تحديصدا موقع »التوثيق«‪.‬‬ ‫•‬

‫هنالك قائمة بالسكتب المتعلقة بمراقبة الشبسكة و ‪.Nagios‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪ «Nagios‬فيها بعض التفاصيل الضافية‪.‬‬ ‫•‬

‫▲‬ ‫‪| 318‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫‪ .2‬مونين ‪Munin‬‬

‫ا‪ .‬التثبيت‬

‫قبل تثبيت ‪ Munin‬على ‪ ،server01‬فيجب أن نيثنبت قبلته ‪apache2‬؛ الضتبط الفتراضتي‬

‫ف لتشغيل خادوم ‪.munin‬‬


‫كا ت‬

‫أوصل‪ ،‬ثبت ‪ munin‬على الخادوم ‪ server01‬بإدخال المر‪:‬‬

‫‪sudo apt-get install munin‬‬

‫الن ثدبت الحزمة ‪ munin-node‬على الخادوم ‪:server02‬‬

‫‪sudo apt-get install munin-node‬‬

‫ب‪ .‬الضبط‬

‫عتتتتددل الملتتتتف ‪ /etc/munin/munin.conf‬علتتتتى الختتتتادوم ‪ server01‬نمضتتتتيصفا عنتتتتوان ‪IP‬‬

‫للخادوم ‪:server02‬‬

‫‪## First our "normal" host.‬‬


‫]‪[server02‬‬
‫‪address 172.18.100.101‬‬

‫ملحظة‪ :‬استبدل ‪ server02‬و ‪ 172.18.100.101‬باسم المضيف وعنوان ‪ IP‬الحقيقي لخادومك‪.‬‬

‫▲‬ ‫‪| 319‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫الن اضتتتتبط ‪ munin-node‬علتتتتى الختتتتادوم ‪ ،server02‬بتعتتتتديل ‪/etc/munin/munin-‬‬

‫‪ node.conf‬للسماح بالوصول إلى الخادوم ‪:server01‬‬

‫‪allow ^172\.18\.100\.100$‬‬

‫ملحظة‪ :‬استبدل ‪ ^172\.18\.100\.100$‬بعنوان ‪ IP‬لخادوم ‪ Munin‬الخاص بك‪.‬‬

‫أعد تشغيل ‪ munin-node‬على ‪ server02‬لسكي تأخذ التعديل ت مجراها‪:‬‬

‫‪sudo service munin-node restart‬‬

‫فتتي النهايتتة‪ ،‬ودجتته متصتتفحك إلتتى ‪ ،http://server01/munin‬يجتتب أن تتترى روابتتط إلتتى‬

‫مخططتتتا ت بياظنيتتتة جميلتتتة تعتتترض معلومتتتا ت متتتن الحزمتتتة القياستتتية ‪ munin-plugins‬للقتتترص‬

‫والشبسكة والعمليا ت والنظام‪.‬‬

‫ملحظة‪ :‬لما كان هذا التثبيت حدي صثا‪ ،‬فربما ستحتاج لبعض الوقت لعرض معلوما ت مفيدة‪.‬‬

‫ج‪ .‬إضاافات أتخرى‬

‫ ت إضتتتافية مثتتتل‬
‫تحتتتتوي حزمتتتة ‪ munin-plugins-extra‬علتتتى تحققتتتا ت متتتن أداء ختتتدما ت‬

‫‪ ،DNS‬و ‪ ،DHCP‬وسامبا ‪...‬إلخ‪ .‬أدخل المر التي لتثبيت هذه الحزمة‪:‬‬

‫‪sudo apt-get install munin-plugins-extra‬‬

‫تأكد من تثبيت هذه الحزمة على جهانز د‬


‫ي الخادوم والعقدة‪.‬‬

‫▲‬ ‫‪| 320‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫المراقبة‬

‫د‪ .‬مصادر‬

‫راجع موقع ‪ Munin‬لمزيتد من التفاصيل‪.‬‬ ‫•‬

‫تحديتتصدا صتتفحة »توثيتتق ‪ «Munin‬التتتي تحتتتوي علتتى معلومتتا ت عتتن الضتتافا ت الختترى‪،‬‬ ‫•‬

‫وكيفية كتابة إضافا ت … إلخ‪.‬‬

‫مصدر آخر هو صفحة ويسكي أوبنتو »‪.«Munin‬‬ ‫•‬

‫▲‬ ‫‪| 321‬‬


‫خواديم الويب‬
‫‪11‬‬

‫▲‬ ‫‪| 322‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫ختتتتادوم التتتتويب هتتتتو برمجيتتتتة مستتتتؤولة عتتتتن قبتتتتول طلبتتتتا ت ‪ HTTP‬متتتتن العملء المعروفيتتتتن‬

‫بمتصفحا ت الويب‪ ،‬وتخديمهم بردود ‪ HTTP‬مع محتويا ت البياظنا ت الختياريتتة؛ التتتي تسكتتون عتتادصة‬

‫صفحا ت ويب كمستندا ت ‪ HTML‬والسكائنا ت الخرى مثل الصور والفيديو ‪...‬إلخ‪.‬‬

‫‪ .1‬خادوم أباتشي ‪HTTPD‬‬


‫أباتشتتي )‪ (Apache‬هتتو أشتتهر ختتادوم ويتتب مستتتخدم فتتي أظنظمتتة ليننسكتتس؛ نتستتتعنمل ختتواديم‬

‫ ت التتويب عتتادصة‬
‫التتويب لتختتديم الصتتفحا ت المطلوبتتة متتن العملء؛ نيطلتتب ونيعتترض العملنء صتتفحا ن‬

‫باستخدام متصفح ويب مثل فايرفسكس أو كروميوم أو أوبرا أو موزيل‪.‬‬

‫نيتتد ش‬
‫خل المستتتخدم ‪) URL‬اختصتتار للعبتتارة ‪ (Uniform Resource Locator‬للشتتارة إلتتى‬

‫ختتادوم ويتتب باستتم النطتتاق السكامتتل )‪ (FQDN‬والمستتار إلتتى الهتتدف المطلتتوب؛ علتتى ستتبيل المثتتال‪،‬‬

‫لعرض الصفحة الرئيسية لموقع أوبنتو‪ ،‬فسيدخل المستخدم اسم النطاق السكامل فقط‪:‬‬

‫‪www.ubuntu.com‬‬

‫لعرض الصفحة الفرعية للمجتمع‪ ،‬فإن المستخدم سنيد ش‬


‫خل اسم النطاق السكامل متبوصعا بمسار‪:‬‬

‫‪www.ubuntu.com/community‬‬

‫أشتتهر بروتوكتول نمستتتخ ندم لنقتتل صتفحا ت التويب هتو بروتوكتتول ظنقتتل النتتص الفتتائق ) ‪Hyper‬‬

‫‪ ،Text Transfer Protocol‬اختصاصرا ‪ ،(HTTP‬بروتوكول ت أخرى مدعومة مثل بروتوكول ظنقل‬

‫النتتص الفتتائق فتتوق طبقتتة مقتتابس آمنتتة ) ‪Hyper Text Transfer Protocol over Secure‬‬

‫‪ ،Sockets Layer‬اختصتتاصرا ‪ ،(HTTPS‬وبروتوكتتول ظنقتتل الملفتتا ت ) ‪،File Transfer Protocol‬‬

‫اختصاصرا ‪ (FTP‬الذي هو بروتوكول لرفع )‪ (upload‬أو تنزيل )‪ (download‬الملفا ت‪.‬‬

‫▲‬ ‫‪| 323‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫نيستتتتخندم ختتتادوم ويتتتب أباتشتتتي عتتتادصة متتتع محتتترك قواعتتتد بياظنتتتا ت ‪ ،MySQL‬ولغتتتة معالجتتتة‬

‫النصوص الفائقة )‪ ،(PHP‬وغيرها من »لغا ت السسكربتا ت« )‪ (scripting languages‬مثتتل بتتايثون‬

‫و بيتتتتتترل؛ نيستتتتتتنمى هتتتتتتذا الضتتتتتتبط بالمصتتتتتتطلح ‪Linux, Apache, MySQL and ) LAMP‬‬

‫‪ (Perl/Python/PHP‬ونيشدسكل منصصة قوية ومرظنصة لتطوير وظنشر تطبيقا ت الويب‪.‬‬

‫التثبيت‬

‫خادوم أباتشي متوفر في أوبنتو؛ أدخل المر التي لتثبيته‪:‬‬

‫‪sudo apt-get install apache2‬‬

‫الضبط‬

‫نيضتتتتنبط أباتشتتتتي بوضتتتتع تعليمتتتتا ت )‪ (directives‬فتتتتي ملفتتتتا ت ضتتتتبط ظنصتتتتية بستتتتيطة؛ هتتتتذه‬

‫التعليما ت موزعة بين الملفا ت والمجلدا ت التية‪:‬‬

‫ملتتف ‪ :apache2.conf‬ملتتف ضتتبط أباتشتتي الرئيستتي؛ يحتتتوي علتتى العتتدادا ت العامتتة‬ ‫•‬

‫لباتشي‪.‬‬

‫الملف ‪ :httpd.conf‬تاريخصيا كان ملف ضبط أباتشتي الرئيستتي؛ ونستدمي هتتذا الملتتف باستتم‬ ‫•‬

‫عفريتتتت ‪httpd‬؛ الن الملتتتنف فتتتار ة‬


‫غ افتراضتتتصيا‪ ،‬حيتتتث نظنشقنلتتتت معظتتتم خيتتتارا ت الضتتتبط إلتتتى‬

‫المجلتتدا ت تاليتتتة التتذكر؛ يمسكتتن أن نيستتتخ ندم هتتذا الملتتف لعتتدادا ت الضتتبط التتتي يجريهتتا‬

‫المستخدم وتؤثر على ضبط أباتشي العام‪.‬‬

‫▲‬ ‫‪| 324‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫المجلد ‪ :conf-available‬يحتوي على ملفا ت الضبط المتوفرة لباتشتي؛ جميتع الملفتا ت‬ ‫•‬

‫التتتتي كتتتاظنت فتتتي مجلتتتد ‪ /etc/apache2/conf.d‬اظنتقلتتتت إلتتتى ‪/etc/apache2/conf-‬‬

‫‪.available‬‬

‫المجلد ‪ :conf-enabled‬يحتوي على الوصل ت الرمزية للملفا ت في مجلتتد ‪/etc/apache2‬‬ ‫•‬

‫‪/conf-available‬؛ فعنتتتدما نتضتتتاف وصتتتلة رمزيتتتة لملتتتف ضتتتبط‪ ،‬فتتتإظنه ستتتنيفنعل عنتتتدما نيعتتتاد‬

‫تشغيل خدمة أباتشي‪.‬‬

‫الملتتتتتتف ‪ :envvars‬الملتتتتتتف حيتتتتتتث نتضتتتتتتنبط قيتتتتتتم متغيتتتتتترا ت البيئتتتتتتة )‪environment‬‬ ‫•‬

‫‪ (variables‬لباتشي‪.‬‬

‫مجلتتد ‪ :mods-available‬يحتتتوي هتتذا المجلتتد علتتى ملفتتا ت خاصتتة لتحميتتل الوحتتدا ت‬ ‫•‬

‫)‪ (modules‬وضبطها‪ ،‬ل تملك جميع الوحدا ت ملفا ت ضبط خاصة بها‪.‬‬

‫مجلد ‪ :mods-enabled‬يحتوي على الوصل ت الرمزية إلى الملفا ت فتتي ‪/etc/apache2‬‬ ‫•‬

‫‪/mods-available‬؛ فعنتتدما نتضتتاف وصتتلة رمزيتتة لملتتف ضتتبط ختتاص بوحتتدة‪ ،‬فتتإن هتتذه‬

‫الوحدة سنتفنعل في المرة القادمة التي سنيعاد تشغيل أباتشي فيها‪.‬‬

‫ملتتف ‪ :ports.conf‬يحتتتوي علتتى التعليمتتا ت التتتي نتحتتددد منافتتذ ‪ TCP‬التتتي يستتتمع إليهتتا‬ ‫•‬

‫أباتشي‪.‬‬

‫▲‬ ‫‪| 325‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫مجلد ‪ :sites-available‬يحتوي هذا المجلد على ملفا ت الضبط »للمضتتيفين التتوهميين«‬ ‫•‬

‫)‪ (Virtual Hosts‬في أباتشي؛ يسمح المضيفون الوهميون بضبط أباتشي لتشغيل عدة‬

‫مواقع تملك ضبصطا منفصصل‪.‬‬

‫مجلتتد ‪ :sites-enabled‬مثتتل ‪ ،mods-enabled‬يحتتتوي مجلتتد ‪ sites-enabled‬علتتى‬ ‫•‬

‫ ت رمزيتتة لمحتويتتا ت مجلتتد ‪/etc/apache2/sites-available‬؛ وبشتتسكل مشتتابه‪،‬‬


‫وصتتل ت‬

‫صتل وصتصل رمزصيتتا لهتذا المجلتد س نتفنعل فتي المترة القادمتة التتي‬
‫فإن ملفا ت الضبط التي نتو ن‬

‫سنيعاد تشغيل خادوم أباتشي فيها‪.‬‬

‫الملف ‪ :magic‬نيستخندم لتحديد ظنوع ‪ MIME‬بناصء على أول عددة بايتا ت من الملف‪.‬‬ ‫•‬

‫بالضافة لتذلك‪ ،‬يمسكتن أن نتضتاف ملفتا ت ضتبط أخترى باستتخدام التعليمتة ‪Include‬؛ ويمسكتتن‬

‫أن نتستخدم المحارف الخاصة )‪ (wildcards‬لتضمين العديد من ملفا ت الضبط؛ أي تعليمتتة يمسكتتن‬

‫ي متتن ملفتتا ت الضتتبط تلتتك‪ .‬ل تؤختذ التعتديل ت علتى ملفتتا ت الضتتبط الرئيستتية بعيتتن‬
‫أن توضع فتي أ د‬

‫العتبار من أباتشي إل إذا بدء أو أعيد تشغيله‪.‬‬

‫ضتتا ملصفتتا يحتتتوي علتتى أظنتتواع المستتتندا ت ) ‪(mime types‬؛ نيحتتندد استتم الملتتف‬
‫يقتترأ الختتادوم أي ص‬

‫بالتعليمتتتتتتتتتتتتتتتتتة ‪ TypesConfig‬ويسكتتتتتتتتتتتتتتتتتون عموصمتتتتتتتتتتتتتتتتتا هتتتتتتتتتتتتتتتتتو الملتتتتتتتتتتتتتتتتتف ‪/etc/apache2/mods-‬‬

‫‪available/mime.conf‬؛ الذي ربما يحتوي على إضافا ت أو تعديل ت على ‪./etc/mime.types‬‬

‫▲‬ ‫‪| 326‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫العدادات الساسية‬

‫يشرح هذا القسم معامل ت ضبط خادوم أباتشي الساسية؛ ارجتتع إلتى توثيتتق أباتشتتي للمزيتتد‬

‫من التفاصيل‪.‬‬

‫يأتي أباتشي مع ضبط افتراضتتي » صتتديق« للمضتيفين التوهميين؛ هتذا يعنتي أظنته مضتبوط متع‬

‫مضتتتتيف وهمتتتتي وحيتتتتد افتراضتتتتصيا )باستتتتتخدام التعليمتتتتة ‪ (VirtualHost‬التتتتذي يمسكتتتتن أن يعتتتتندل‬

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

‫للمضيفين الوهميين الضافيين إذا كنت تريد الحصول على عددة مواقع؛ إذا نتشر ن‬
‫ك كما هو‪ ،‬فسنيخددم‬

‫المضيف الوهمي الفتراضتي موقعتتك الفتراضتتي؛ أو الموقتع التتذي ستيراه مستتتخدمو الموقتع لتو أن‬

‫عنوان ‪ URL‬الذي أدخلوه ل نيطاشبق التعليمة ‪ ServerName‬ل ي‬


‫ي من مواقعك المخصصة؛ لتعتتديل‬

‫المضيف الوهمي الفتراضي فيجب تعديل الملف ‪./etc/apache2/sites-available/default‬‬

‫ضتشبنطت تعليمتة لعمتوم الختادوم ولتم‬


‫ملحظة‪ :‬التعليمتا ت المضتبوطة لمضتيتف وهمتي ل تطنبتتق إل عليته فقتط؛ إذا ن‬

‫يعتتاد تعريفهتتا فتي ضتبط المضتيف التوهمي‪ ،‬فسنيستتتخ ندم الضتبط الفتراضتي؛ علتتى ستبيل المثتال‪ ،‬تستتطيع ضتبط‬
‫عنوان بريد ‪ webmaster‬ول نتعيد تعريفه لسكل مضيف وهمي‪.‬‬

‫إذا أرد ت ضبط مضيتف وهم ي جديد أو موقع؛ فاظنسخ هذا الملف إلتتى ظنفتتس المجلتتد باستتتم متتن‬
‫ت‬

‫اختيارك؛ على سبيل المثال‪:‬‬

‫\ ‪sudo cp /etc/apache2/sites-available/000-default.conf‬‬
‫‪/etc/apache2/sites-available/mynewsite.conf‬‬

‫ع ددل ملف ضبط الموقع الجديد باستخدام بعض التعليما ت المشروحة في السفل‪.‬‬

‫▲‬ ‫‪| 327‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫التعليمتتة ‪ ServerAdmin‬تحتدد البريتد اللسكتتتروظني لمتدير الختادوم؛ القيمتتة الفتراضتتية هتتي‬

‫‪webmaster@localhost‬؛ يجب أن نتعت ندل القيمتة إلتى البريتد اللسكتتروظني الختاص بتك )إذا كنتت‬

‫مديصرا للنظام(؛ إذا حدثت مشسكلة مع موقع الويب‪ ،‬فستتنيظشهر أباتشتي رستتالة خطتتأ تحتتوي علتى هتتذا‬

‫البريد اللسكتروظني للتبليغ عن المشسكلة؛ اعثر على هذه التعليمة فتتي ملتتف ضتتبط الموقتتع الختتاص بتتك‬

‫في ‪./etc/apache2/sites-available‬‬

‫التعليمتتة ‪ listen‬تحتتدد المنفتتذ وبشتتسكل اختيتتاري عنتتوان ‪ IP‬التتذي يجتتب علتتى أباتشتتي الستتتماع‬

‫إليه؛ إذا لم نيحندد عنوان ‪ ،IP‬فسيستتتمع أباتشتتي علتتى جميتتع عنتتاوين ‪ IP‬النمستتنندة للختتادوم التتذي يعمتتل‬

‫عليه أباتشي؛ القيمة الفتراضية للتعليمة ‪ listen‬هي ‪80‬؛ عددل هذه القيمة إلى ‪ 127.0.0.1:80‬لجعتتل‬

‫أباتشي يستمع فقط إلى بطاقة ‪ loopback‬لذلك لن يسكون متوفصرا إلتى الظنتترظنت‪ ،‬عتددل القيمتة إلتى ‪81‬‬

‫) علتتى ستتبيل المثتتال( لتغييتتر المنفتتذ التتذي يستتتمع إليتته أباتشتتي؛ أو اتركتته كمتتا هتتو للعمتتل العتتادي؛ هتتذه‬

‫التعليمة توجد ونتعندل في ملفها الخاص ‪./etc/apache2/ports.conf‬‬

‫التعليمة ‪ ServerName‬هي اختيارية وتحدد ما هو اسم النطاق السكامل )‪ (FQDN‬لموقعتتك‬

‫التتتذي سيستتتتجيب أباتشتتتي لتتته؛ المضتتتيف التتتوهمي الفتراضتتتي ل يملتتتك خاصتتتية ‪ServerName‬‬

‫نمحتتت نددة‪ ،‬لتتتذلك سيستتتتجيب لجميتتتع الطلبتتتا ت التتتتي ل تطابقهتتتا التعليمتتتة ‪ ServerName‬فتتتي أي‬

‫مضتتتتيف وهمتتتتي آختتتتر؛ إذا حصتتتتل وامتلسكتتتت ن‬


‫ت النطتتتتاق ذو الستتتتم ‪ ubunturocks.com‬وأرد ت أن‬

‫تستضتتيف الموقتتع علتتى خادومتتك‪ ،‬فتتإن قيمتتة ‪ ServerName‬فتتي ملتتف ضتتبط المضتتيف التتوهمي‬

‫الخاص بك ستسكون ‪ ، ubunturocks.com‬أضف هذه التعليمة إلى ملتف ضتبط المضتيف ال وهمي‬

‫الجديد الذي أظننشأظناه سابصقا )‪.(/etc/apache2/sites-available/mynewsite.conf‬‬

‫▲‬ ‫‪| 328‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫ربمتتتا تريتتد متتتن موقعتتتك أن يستتتتجيب إلتتتى ‪ ،www.ubunturocks.com‬ولمتتتا كتتان العديتتتد متتن‬

‫المستخدمين يعتبرون أدن السابقة ‪ www‬هتي ستابقة ملئمتة لمواقتع التويب؛ فعليتك استتخدام التعليم ة‬

‫‪ ServerAlias‬لهذا الغرض؛ ربما تستخدم المحارف الخاصة )‪ (wildcards‬للتعليمة ‪.ServerAlias‬‬

‫فمث صل‪ ،‬سيستتتتتبب الضتتتتتبط التتتتتتي استتتتتتجابة موقعتتتتتك لي طلتتتتتب ظنطتتتتتاق ينتهتتتتتي بالعبتتتتتارة »‬

‫‪:«.ubunturocks.com‬‬

‫‪ServerAlias *.ubunturocks.com‬‬

‫نتحددد التعليمة ‪ DocumentRoot‬أين يجب أن يبحث أباتشتتي عتتن الملفتتا ت لظنشتتاء الموقتتع؛‬

‫القيمة الفتراضية هي ‪ /var/www‬كما هو محدد في ‪/etc/apache2/sites-available/000-‬‬

‫‪ default.conf‬؛ يمسكنك تستطيع تعتديل هتذه القيمتة فتي ملتف ضتبط مضتيفك التوهمي؛ لسكتن تتذكر‬

‫أن نتنششئ المجلد إذا كان ذلك ضرورصيا‪.‬‬

‫فدعل المضيف الوهمي الجديد باستخدام الداة ‪ a2ensite‬وأعد تشغيل أباتشي‪:‬‬

‫‪sudo a2ensite mynewsite‬‬


‫‪sudo service apache2 restart‬‬

‫ملحظظة‪ :‬تأكتد أظنتك ستس تبدل ‪ mynewsite‬باستم أك ثر وصتصفا للمض يف التوهمي؛ إحتدى الطترق لتستمية الملتف‬
‫هي استخدام قيمة ‪ ServerName‬للمضيف الوهمي‪.‬‬

‫▲‬ ‫‪| 329‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫وبشسكتل مشابه‪ ،‬استخدم الداة ‪ a2dissite‬لتعطيتل المواقتع؛ يمسكتن أن يسكتون هتذا مفيتصدا عنتد‬

‫استسكشاف أخطاء الضبط عند وجود أكثر من مضيف وهمي‪:‬‬

‫‪sudo a2dissite mynewsite‬‬


‫‪sudo service apache2 restart‬‬

‫العدادات الافتراضية‬

‫سيشتترح هتتذا القستتم إعتتدادا ت الضتتبط الفتراضتتية لختتادوم أباتشتتي؛ مثصل‪ ،‬إذا أضتتفت مضتتيصفا‬

‫وهم صيا فالعدادا ت التتي ستضتبطها للمضتتيف التوهمي ستتسكون لهتتا الولويتة لتتذاك المضتتيف التوهمي؛‬

‫وسنتستخندم القيمة الفتراضية للتعليما ت غير النمعنرفة ضمن إعدادا ت المضيف الوهمي‪.‬‬

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

‫المستخدم فهرس الدليل بإدخال شرطة أمامية )‪ (/‬في ظنهاية اسم الدليل‪.‬‬

‫على ستبيل المثتال‪ ،‬عنتدما يطلتب المستتخدم الصتفحة ‪http://www.example.com/directory/‬‬

‫فأظنه إما سيحصل على صفحة ‪ DirectoryIndex‬إن وجد ت‪ ،‬أو علتتى قائمتتة بمحتويتتا ت المجلتتد مولتتندصة متتن‬

‫الخادوم إذا لم تسكن موجودصة وكان قد نحتتددد الخيتتار ‪ ،Indexes‬أو صتتفحة »‪ «Permission Denied‬إن لتتم‬

‫يتحقق أيي منهما‪ .‬سيحاول الخادوم إيجاد أحد الملفا ت المذكورة في التعليمة ‪ DirectoryIndex‬وستتنتعيد‬

‫أول ملف ستجده؛ إذا لم تجد أي ملف من تلك الملفتتا ت وكتتان الخيتتار » ‪ «Options Indexes‬مضتتبوصطا لهتتذا‬

‫المجلتتتد‪ ،‬فستتتيودلد الختتتادوم قائمتتتصة بصتتتيغة ‪ HTML‬للمجلتتتدا ت الفرعيتتتة والملفتتتا ت فتتتي هتتتذا التتتدليل؛ القيمتتتة‬

‫الفتراضتتتتتية الموجتتتتتودة فتتتتتي ملتتتتتف ‪ /etc/apache2/mods-available/dir.conf‬هتتتتتي "‪index.html‬‬

‫‪ "index.cgi index.pl index.php index.xhtml index.htm‬وبالتالي إذا نعنثر أباتشتتي علتتى ملتتف‬

‫في المجلد المطلوب يطابق أحد تلك السماء‪ ،‬فسنيظشهر أول مطابقة‪.‬‬

‫▲‬ ‫‪| 330‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫التعليمتتة ‪ ErrorDocument‬تستتمح لتتك بتحديتتد ملتتف لسكتتي يستتتعمله أباتشتتي عنتتد حتتدوث خطتتأ‬

‫معين؛ على سبيل المثال‪ ،‬إذا طلب المستخدم ملصفا غير موجوتد‪ ،‬فسيحدث خطأ ‪404‬؛ وافتراضصيا‪ ،‬سنيعيد‬

‫أباتشتتتتي الرمتتتتز ‪HTTP 404‬؛ راجتتتتع ‪ /etc/apache2/conf.d/localized-error-pages‬لمعلومتتتتا ت‬

‫تفصيلدية عن استخدام ‪ ErrorDocument‬بما فيها أماكن ملفا ت المثلة‪.‬‬

‫يسكتتتتتب الختتتتادوم ستتتتجل النقتتتتل افتراضتتتتصيا إلتتتتى الملتتتتف ‪،/var/log/apache2/access.log‬‬

‫تستتتتطيع تغييتتتر هتتتذا لسكتتتل موقتتتع بنتتتاصء علتتتى ملفتتتا ت ضتتتبط مضتتتيفك التتتوهمي باستتتتخدام التعليمتتتة‬

‫‪CustomLog‬؛ أو أن تقبل باستخدام القيمة الفتراضتتية المحتتددة فتتي ‪/etc/apache2/conf.d/‬‬

‫‪ .other-vhosts-access-log‬ربما تحدد أي ص‬
‫ضا الملف الذي تريد تسجيل الخطاء إليه باستتتخدام‬

‫التعليمة ‪ ،ErrorLog‬التي تسكون قيمتهتتا الفتراضتتية هتتي ‪/var/log/apache2/error.log‬؛ لسكتتن‬

‫اترك هذا السجل منفص صل عن سجل النقتتل للمستاعدة فتي استسكشتتاف الخطتاء الحاصتلة متع ختتادوم‬

‫أباتشي؛ ربما تحدد أي ص‬


‫ضا التعليمة ‪) LogLevel‬القيمة الفتراضية هي "‪ ("warn‬و ‪LogFormat‬‬

‫)راجع ‪ /etc/apache2/apache2.conf‬للقيمة الفتراضية(‪.‬‬

‫نتحندد بعض الخيارا ت على أساس المجلد بدصل من الخادوم؛ التعليمتتة ‪ Options‬هتتي إحتتداها‪،‬‬

‫يسكون قسم ‪ Directory‬محاصطا بوسوم شبيهة بلغة ‪ ،XML‬كما يلي‪:‬‬

‫>‪<Directory /var/www/mynewsite‬‬
‫‪...‬‬
‫>‪</Directory‬‬

‫▲‬ ‫‪| 331‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫التعليمتتتة ‪ Options‬ضتتمن قستتم ‪ Directory‬تقبتتل قيمتتة واحتتدة أو أكتتثر متتتن القيتتتم التيتتة‬

‫مفصولصة بفراغا ت‪:‬‬

‫‪ ExecCGI‬الستتتماح بتنفيتتتذ ستتتسكربتا ت ‪ ،CGI‬لتتتن نتننفتتتذ ستتتسكربتا ت ‪ CGI‬متتتا لتتتم نيحتتتندد هتتتذا‬ ‫•‬

‫الخيار‪.‬‬

‫تنويه‪ :‬ل يجب أن نتننفذ أغلبيتة الملفتا ت كستسكربتا ت ‪ ،CGI‬لن ذلتك س يسكون خطتصرا جتصدا! ستسكربتا ت ‪ CGI‬يجتب أن‬
‫نتبقى في مجلد منفصل وخارج المجلد الجذر لموقعك‪ ،‬ويجب أن يسكون الخيار ‪ ExecCGI‬مضتتبوصطا لهتتذا المجلتتد‬
‫فقط؛ هذا هو الضبط الفتراضي‪ ،‬والمسكان الفتراضي لسسكربتا ت ‪ CGI‬هو ‪./usr/lib/cgi-bin‬‬

‫‪ :Includes‬السماح بتضمينا ت من جهة الخادوم؛ حيث تستتمح تضتتمينا ت الختتادوم لملتتف‬ ‫•‬

‫‪ HTML‬بتضمين الملفا ت الخرى‪ ،‬راجع »‪ «Apache SSI Documentation‬لمزيتد من‬

‫المعلوما ت‪.‬‬

‫‪ :IncludesNOEXEC‬السماح بتضمينا ت من جهة الخادوم‪ ،‬لسكن تعطيتتل المنريتتن ‪#exe‬‬ ‫•‬

‫‪ c‬و ‪ #Include‬في سسكربتا ت ‪.CGI‬‬

‫‪ :Indexes‬عتتتتتترض قائمتتتتتتة نمن نستتتتتتقة بمحتويتتتتتتا ت المجلتتتتتتد‪ ،‬إذا لتتتتتتم نيعتتتتتتثر علتتتتتتى ملتتتتتتف‬ ‫•‬

‫‪) DirectoryIndex‬مثل ‪ (index.html‬في المجلد المطلوب‪.‬‬

‫تحذير‪ :‬لغراض تتعلق بالحمايتتة‪ ،‬ل يجتب أن نيضتتنبط هتتذا الخيتار عتادصة؛ وخصو ص‬
‫صتا فتي مجلتد جتذر الموقتع! فدعتتل‬
‫هتتذا الخيتتار بحتتذر لسكتتل مجلتتد علتتى حتتدة إن كنتتت متأكتت صدا أظنتتك تريتتد أن يتمسكتتن المستتتخدمون متتن رؤيتتة كامتتل‬
‫محتويا ت المجلد‪.‬‬

‫▲‬ ‫‪| 332‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫‪ Multiview‬دعتتتتتتم » ‪«content-negotiated multiviews‬؛ هتتتتتتذا الخيتتتتتتار نمعنطتتتتتتل‬ ‫•‬

‫افتراضصيا لسباب أمنية‪ ،‬راجع توثيق أباتشي حول هذا الخيار‪.‬‬

‫‪ SysLinksIfOwnerMatch‬اتبتتاع الوصتتل ت الرمزيتتة فقتتط إذا كتتان الملتتف أو المجلتتد‬ ‫•‬

‫الهدف له ظنفس مالك الوصلة‪.‬‬

‫إعدادات ‪httpd‬‬

‫يشرح هذا القسم بعض إعدادا ت ضبط عفريت ‪ httpd‬الساسية‪.‬‬

‫التعليمة ‪ :LockFile‬تضبط التعليمة ‪ LockFile‬المسار إلى ملف القفل التذي سيستتخدم‬ ‫•‬

‫عنتتدما نيبنتتى الختتادوم متتع أحتتد الخيتتارين ‪ USE_FCNTL_SERIALIZED_ACCEPT‬أو‬

‫ص‬‫‪USE_FLOCK_SERIALAIZED_ACCEPT‬؛ يجب أن يسكون الملف مخزصظنتتا علتتى قتتر ت‬

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

‫مشاركة ‪ ،NFS‬إذا كتاظنت هتذه هتي الحالتتة‪ ،‬فيجتتب أن تبتتندل القيمتة إلتتى مستتار فتي القتترص‬

‫المحلي‪ ،‬وإلى مجلد قابل للقراءة من المستخدم الجذر )‪ (root‬فقط‪.‬‬

‫التعليمتتتة ‪ :PidFile‬التعليمتتتة ‪ PidFile‬تضتتتبط الملتتتف التتتذي نيستتتدجل فيتتته الختتتادوم رقتتتم‬ ‫•‬

‫عمليته ) ‪ process ID‬أو ‪ pid‬اختصتتاصرا(؛ يجتتب أن يسكتتون هتتذا الملتتف قتتابصل للقتتراءة فقتتط‬

‫من الجذر‪ ،‬وفي أغلب الحال ت‪ ،‬يجب أن تترك هذه التعليمة بقيمتها الفتراضية‪.‬‬

‫▲‬ ‫‪| 333‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫التعليمتتة ‪ :User‬نتضتتنبط التعليمتتة ‪ User‬معتتدرف ‪ userid‬المستتتعمل متتن الختتادوم للجابتتة‬ ‫•‬

‫عتتن الطلبيتتا ت؛ هتتذا الخيتتار نيعتت درف حتتدود وصتتول الختتادوم‪ ،‬لتتن يتمسكتتن زوار الموقتتع متتن‬

‫الوصتتول إلتتى أي ملتتف ل يمسكتتن لهتتذا المستتتخدم الوصتتول إليتته‪ ،‬القيمتتة الفتراضتتية لهتتذه‬

‫التعليمة هي "‪."www-data‬‬

‫تحظظذير‪ :‬متتا لتتم تسكتتن متأكتتصدا تماصمتتا ممتتا تفعتتل‪ ،‬فل تضتتبط التعليمتتة ‪ User‬إلتتى ‪ ،root‬سيستتبب استتتخدام الجتتذر‬
‫كمستخدم هنا في إظنشاء ثغرا ت كبيرة في خادوم الويب‪.‬‬

‫التعليمتتتة ‪ :Group‬التعليمتتتة ‪ Group‬شتتتبيهة بالتعليمتتتة ‪ ،User‬التعليمتتتة ‪ Group‬تحتتتدد‬ ‫•‬

‫المجموعتتتة التتتتي ستتتيجيب عبرهتتتا الختتتادوم عتتتن الطلبيتتتا ت؛ المجموعتتتة الفتراضتتتية هتتتي‬

‫"‪ "www-data‬أي ص‬
‫ضا‪.‬‬

‫وحدات أباتشي‬

‫أباتشي هو خادوم يعتمد على الوحدا ت‪ ،‬هذا يعنتتي أن الوظيفتتة الساستتية فقتتط هتتي مضتتنمنة‬

‫فتتي أستتاس الختتادوم؛ الميتتزا ت الضتتافية متتتوفرة عتتبر وحتتدا ت يمسكتتن تحميلهتتا إلتتى أباتشتتي؛ نتضتتنمن‬

‫افتراضتت ييا مجموعتتة أساستتية متتن الوحتتدا ت فتتي الختتادوم أثنتتاء البنتتاء‪ ،‬إذا نبشنتتي الختتادوم ليستتتخدم‬

‫الوحتتدا ت النمحنملتتة ديناميسك صيتتا‪ ،‬فيمسكتتن بنتتاء تلتتك الوحتتدا ت بنتتاصء منفصتتصل ويمسكتتن أن تضتتاف فتتي أي‬

‫وقتتت باستتتخدام التعليمتتة ‪ LoadModule‬؛ عتتدا ذلتتك‪ ،‬فيجتتب إعتتادة بنتتاء أباتشتتي فتتي كتتل متترة‬

‫نتضاف أو نتحذف فيها الوحدا ت‪.‬‬

‫▲‬ ‫‪| 334‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫يبنتتتي أوبنتتتتو أباتشتتتي ليستتتمح بالتحميتتتل التتتديناميسكي للوحتتتدا ت؛ يمسكتتتن أن نتضتتتاف تعليمتتتا ت‬

‫الضبط شرطييا في حال تطلب وجود وحدة معينة بوضعها في قسم >‪.<IfModule‬‬

‫تستطيع تثبيت وحدا ت أباتشي إضافية واستخدامها في خادوم التويب؛ علتى س بيل المثتال‪،‬‬

‫ظن دفذ المر التي من الطرفية لتثبيت وحدة الستيثاق الخاصة بقواعد بياظنا ت ‪:MySQL‬‬

‫‪sudo apt-get install libapache2-mod-auth-mysql‬‬

‫اظنظر إلى مجلد ‪ /etc/apache2/mods-available‬للمزيد من الوحدا ت‪.‬‬

‫استخدم الداة ‪ a2enmod‬لتفعيل وحدة‪:‬‬

‫‪sudo a2enmod auth_mysql‬‬


‫‪sudo service apache2 restart‬‬

‫وبشسكتل مشابه‪ ،‬الداة ‪ a2dismod‬ستعطل وحدة‪:‬‬

‫‪sudo a2dismod auth_mysql‬‬


‫‪sudo service apache2 restart‬‬

‫ضبط ‪HTTPS‬‬

‫نتضتتتتيف الوحتتتتدة ‪ mod_ssl‬ميتتتتزصة مهمتتتت صة لختتتتادوم أباتشتتتتي‪ ،‬أل وهتتتتي القتتتتدرة علتتتتى تشتتتتفير‬

‫التصال ت؛ وهذا يعنتي أظنته عنتدما يتواص ل متصتفح ال ويب باستتخدام ‪ ،SSL‬فسنتستتخندم الستابقة‬

‫‪ https://‬في بداية ‪ URL‬في شريط العنوان في المتصفح‪.‬‬

‫▲‬ ‫‪| 335‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫تتوفر الوحدة ‪ mod_ssl‬فتي الحزمتتة ‪apache2-common‬؛ ظندفتذ المتتر التتي متتن الطرفيتتة‬

‫لتفعيل وحدة ‪:mod_ssl‬‬

‫‪sudo a2enmod ssl‬‬

‫هنالتتتتتتك ملتتتتتتف ضتتتتتتبط ‪ HTTPS‬افتراضتتتتتتي فتتتتتتي ‪/etc/apache2/sites-available/default-‬‬

‫‪ssl.conf‬؛ ولسكي يستطيع أباتشي توفير ‪ ،HTTPS‬فيجب توفير شتتهادة ومفتتتاح أي ص‬


‫ضتتا؛ ضتتبط ‪HTTPS‬‬

‫الفتراضي سيستخدم شهادة ومفتاح مولد من الحزمة ‪ssl-cert‬؛ هذه الشهادا ت مناسبة للختبار‪ ،‬لسكتتن‬

‫يجتتتب استتتتبدال الشتتتهادة والمفتتتتاح المولتتتد تلقائ صيتتتا بشتتتهادة خاصتتتة بتتتالموقع أو الختتتادوم‪ ،‬للمزيتتتد متتتن‬

‫المعلوما ت حول توليد مفتاح والحصول على شهادة‪ ،‬راجع »الفصل التاسع‪ :‬الحماية«‪.‬‬

‫أد ش‬
‫خل المر التي لضبط أباتشي ليتعامل مع ‪:HTTPS‬‬

‫‪sudo a2ensite default-ssl‬‬

‫ملحظظظظة‪ :‬المجلتتتدان ‪ /etc/ssl/certs‬و ‪ /etc/ssl/private‬همتتتا المستتتاران الفتراضتتتيان للشتتتهادة والمفتتتتاح؛ إذا‬


‫ثبتتتتتتتتتتتت الشتتتتتتتتتتهادة والمفتتتتتتتتتتتاح فتتتتتتتتتتي مجلتتتتتتتتتتد آختتتتتتتتتتر‪ ،‬فتأكتتتتتتتتتتد متتتتتتتتتتن تغييتتتتتتتتتتر قيمتتتتتتتتتتة ‪SSLCertificateFile‬‬
‫و ‪ SSLCertificateKeyFile‬بما يلئمك‪.‬‬

‫▲‬ ‫‪| 336‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫بعد أن ضبطنا أباتشي ليستخدم ‪ ،HTTPS‬فعلينا إعادة تشغيل الخدمة لتفعيل العدادا ت الجديدة‪:‬‬

‫‪sudo service apache2 restart‬‬

‫ملحظة‪ :‬اعتما صدا على من أين حصلت على الشهادة‪ ،‬ربما تحتاج إلى إدخال عبارة مرور عند تشغيل أباتشي‪.‬‬

‫تستتتتطيع الوصتتتول إلتتتى صتتتفحا ت الختتتادوم المنتتتة بسكتابتتتة ‪ https://hostname/url/‬فتتتي‬

‫شريط العنوان في المتصفح‪.‬‬

‫مشاركة إذن الكتابة‬

‫لسكتتي يتمسكتتن أكتتثر متتن مستتتخدم متتن السكتابتتة إلتتى ظنفتتس المجلتتد‪ ،‬فمتتن الضتتروري أن ظنعطتتي إذن‬

‫السكتابتتتة للمجموعتتتة التتتتي يشتتتتركون بهتتتا؛ المثتتتال التتتتي نيشتتتاشرك إذن السكتابتتتة للمجلتتتد ‪/var/www‬‬

‫للمجموعة »‪:«webmasters‬‬

‫‪sudo chgrp -R webmasters /var/www‬‬


‫;\ "}{" ‪sudo find /var/www -type d -exec chmod g=rwxs‬‬
‫;\ "}{" ‪sudo find /var/www -type f -exec chmod g=rws‬‬

‫ملحظة‪ :‬لو أرد ت أن نيمننح الوصول لكثر من مجموعة واحدة للمجلد‪ ،‬ففدعل قوائم التحسكم بالوصول )‪.(ACLs‬‬

‫▲‬ ‫‪| 337‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫ا‪ .‬مصادر‬

‫توثيتق أباتشتي ‪ ،‬التذي يشترح بعمتق معلومتا ت ح ول تعليمتا ت ض بط أباتشتي‪ ،‬وأي ص‬


‫ضتا راجتع‬ ‫•‬

‫الحزمة ‪ apache2-doc‬لتوثيق أباتشي الرسمي‪.‬‬

‫راجع توثيق ‪ Mod SSL‬للمزيد من المعلوما ت المتعلقة بالوحدة ‪.SSL‬‬ ‫•‬

‫كتتتتتاب ‪ O'Reilly‬المستتتتمى »‪ «Apache Cookbook‬هتتتتو مصتتتتدر رائتتتتع للقيتتتتام بضتتتتبط‬ ‫•‬

‫خاص لباتشي‪.‬‬

‫لستتئلة حتتول أباتشتتي علتتى أوبنتتتو‪ ،‬فاستتأل فتتي قنتتاة ‪ IRC‬المستتماة ‪#ubuntu-server‬‬ ‫•‬

‫على خادوم ‪.freenode.net‬‬

‫لمتتا كتتان أباتشتتي نيدنمتتج عتتادصة متتع ‪ PHP‬و ‪ ،MySQL‬فصتتفحة ويسكتتي أوبنتتتو »‪Apache‬‬ ‫•‬

‫‪ «MySQL PHP‬هي مصدر جيد للمعلوما ت‪.‬‬

‫▲‬ ‫‪| 338‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫‪ .2‬لغة ‪PHP5‬‬
‫إن ‪ PHP‬هي لغة برمجة عامة ملئمتة لتطتوير التتويب؛ يمسكتتن تضتمين ستسكربت ‪ PHP‬فتي ‪HTML‬؛‬

‫وهذا القسم سيشرح كيفية تثبيت وضبط ‪ PHP5‬على خادوم أوبنتو مع أباتشي و ‪.MySQL‬‬

‫يفترض هذا القسم أظنتك ثبتتت وضتبطت ختادوم التويب أباتشتي وقواعتد بياظنتا ت ‪MySQL‬؛ تستتطيع‬

‫الرجوع إلى القسام التي تشرح ضبط أباتشي و ‪ MySQL‬في هذا السكتاب لمزيتد من المعلوما ت‪.‬‬

‫ا‪ .‬التثبيت‬

‫لغة ‪ PHP5‬متوفرة في أوبنتو‪ ،‬وعلتى عسكتس بتايثون وبيترل المثبتتتتين فتي النظتام افتراضتييا‪،‬‬

‫يجب تثبيت ‪ PHP‬يدوييا‪.‬‬

‫أد ش‬
‫خل المر التي في الطرفية لتثبيت ‪:PHP5‬‬

‫‪sudo apt-get install php5 libapache2-mod-php5‬‬

‫تستطيع تشغيل سسكربتا ت ‪ PHP5‬من س طر الوامتر؛ يجتب عليتك تثتبيت الحزمتة ‪php5-cli‬‬

‫لتنفيذ سسكربتا ت ‪ PHP5‬من سطر الوامر؛ وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install php5-cli‬‬

‫▲‬ ‫‪| 339‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫تستتتطيع أي ص‬
‫ضتا تشتغيل ستتسكربتا ت ‪ PHP5‬دون تثتتبيت وحتتدة ‪ PHP5‬التابعتتة لباتشتتي؛ للقيتتام‬

‫بذلك‪ ،‬عليك تثبيت الحزمة ‪php5-cgi‬؛ وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install php5-cgi‬‬

‫لستخدام ‪ MySQL‬مع ‪ ،PHP5‬فعليك تثبيت الحزمة ‪ ،php5-mysql‬وبذلك بتنفيذ المر التي‪:‬‬

‫‪sudo apt-get install php5-mysql‬‬

‫وبشسكل مشابه‪ ،‬لستخدام ‪ PostgreSQL‬مع ‪ ،PHP5‬فعليك تثبيت الحزمة ‪:php5-pgsql‬‬

‫‪sudo apt-get install php5-pgsql‬‬

‫ب‪ .‬الضبط‬

‫بعتتتد أن نتثدبتتتت ‪ ،PHP5‬تستتتتطيع تشتتتغيل ستتتسكربتا ت ‪ PHP5‬متتتن متصتتتفح التتويب‪ ،‬وإذا ثبتتتتت‬

‫الحزمة ‪ php5-cli‬فتستطيع تشغيل سسكربتا ت ‪ php5‬من سطر الوامر‪.‬‬

‫خادوم أباتشتتي مضتبوةط افتراضتتصيا لتشتغيل ستتسكربتا ت ‪PHP5‬؛ بسكلمتتا ت أخترى‪ ،‬وحتدة ‪PHP5‬‬

‫مفنعلتتة افتراضتت صيا فتتي ختتادوم أباتشتتي بعتتد تثتتبيت الوحتتدة مباشتترصة؛ رجتتاصء تأكتتد إذا كتتاظنت الملفتتا ت‬

‫‪ /etc/apache2/mods/enabled/php5.conf‬و ‪/etc/apache2/modsenabled/php5.l‬‬

‫‪ oad‬موجودصة‪ ،‬إن لم تسكن موجودصة‪ ،‬فتستطيع تفعيل الوحدة باستخدام المر ‪.a2enmod‬‬

‫▲‬ ‫‪| 340‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫بعتتد أن تثبتتت الحزمتتة المتعلقتتة بلغتتة ‪ PHP5‬ونتف دعتتل وحتتدة أباتشتتي‪ ،‬فعليتتك أن تعيتتد تشتتغيل‬

‫خادوم أباتشي لتستطيع تنفيذ سسكربتا ت ‪PHP5‬؛ وذلك بالمر التي‪:‬‬

‫‪sudo service apache2 restart‬‬

‫ج‪ .‬التختبار‬

‫للتأكد من التثبيت الصحيح للغة ‪PHP‬؛ فندفذ سسكربت ‪ phpinfo‬التي‪:‬‬

‫‪<?php‬‬
‫;)(‪phpinfo‬‬
‫>?‬

‫عليتتتتتك حفتتتتتظ محتويتتتتتا ت الملتتتتتف الستتتتتابق باستتتتتم ‪ phpinfo.php‬ووضتتتتتعه تحتتتتتت مجلتتتتتد‬

‫‪ DocumentRoot‬فتتتتتتتتتتي ختتتتتتتتتتادوم ويتتتتتتتتتتب أباتشتتتتتتتتتتي؛ وعنتتتتتتتتتتدما تتتتتتتتتتتوجه متصتتتتتتتتتتفحك ظنحتتتتتتتتتتو‬

‫‪ http://hostname/phpinfo.php‬فسوف يعرض لك إعدادا ت ضبط ‪ PHP5‬المختلفة‪.‬‬

‫د‪ .‬مصادر‬

‫لتفاصيل أكثر‪ ،‬راجع توثيق موقع ‪.php.net‬‬ ‫•‬

‫هنالتتتتك مجموعتتتتة كتتتتبيرة متتتتن السكتتتتتب عتتتتن ‪ ،PHP‬كتابتتتتان جيتتتتدان متتتتن ‪ O'Reilly‬همتتتتا‬ ‫•‬

‫»‪ ،«Learning PHP‬و »‪.«PHP CookBook‬‬

‫▲‬ ‫‪| 341‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫‪ .3‬خادوم ‪ Squid‬الوتسيط‬
‫إن ‪ Squid‬هتتتو ختتتادوم تخزيتتتن وستتتيط للتتتويب ) ‪ (web proxy cache server‬التتتذي يتتتوفر‬

‫ختتتتدما ت الوستتتتاطة والتخزيتتتتن لتتتتبروتوكول ظنقتتتتل النتتتتص الفتتتتائق )‪ ،(HTTP‬وبروتوكتتتتول ظنقتتتتل الملفتتتتا ت‬

‫)‪ ،(FTP‬وغيرهمتتتا متتتن بروتوكتتتول ت الشتتتبسكة الشتتتهيرة؛ يمسكتتتن أن يتتتدعم ‪ Squid‬التخزيتتتن والوستتتاطة‬

‫لطلبتتتا ت طبقتتتة المقتتتابس المنتتتة )‪ (SSL‬وتخزيتتتن طلبيتتتا ت ‪DNS‬؛ ويتتتدعم ‪ Squid‬أي ص‬


‫ضتتتا بروتوكتتتول ت‬

‫تخزيتتن مخبتتأ مختلفتتة‪ ،‬مثتتل بروتوكتتول تخزيتتن الظنتتترظنت ) ‪ Internet Cache Protocol‬اختصتتاصرا‬

‫‪ ،(ICP‬وبروتوكتتول تخزيتتن النتتص الفتتائق ) ‪ Hyper Text Caching Protocol‬اختصتتاصرا ‪،(HTCP‬‬

‫وبروتوكتتول تخزيتتن مصتتفوفة التتتوجيه ) ‪ Cache Array Routing Protocol‬اختصتتاصرا ‪،(CARP‬‬

‫وبروتوكول تنسيق تخزين الويب )‪ Web Cache Coordination Protocol‬اختصاصرا ‪.(WCCP‬‬

‫ ت كثيرصة للوستاطة أو التخزيتن المتؤقت‪،‬‬


‫إن الخادوم الوسيط ‪ Squid‬هو حل ممتاز لحتياجا ت‬

‫والتوستتع متتن مسكتتتب فرعتتي إلتتى شتتبسكة الشتتركة السكتتبيرة وذلتتك بتتتوفير آليتتا ت مراقبتتة وتحسكتتم فتتي‬

‫الوصتتتول للمعتتتامل ت المهمتتتة باستتتتخدام بروتوكتتتول إدارة الشتتتبسكة المبستتتط ) ‪Simple Network‬‬

‫‪ Management Protocol‬اختصاصرا ‪.(SNMP‬‬

‫عند اختيار حاسوب ليعمل كخادوم ‪ ، Squid‬فتأكد أظن ه مضتبوط م ع كميتتة كتبيرة متن التذاكرة‬

‫الفيزيائية‪ ،‬حيث يستخدم ‪ Squid‬التخزين في الذاكرة لزيادة الداء‪.‬‬

‫▲‬ ‫‪| 342‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫ا‪ .‬التثبيت‬

‫أد ش‬
‫خل المر التي في الطرفية لتثبيت خادوم ‪:Squid‬‬

‫‪sudo apt-get install squid3‬‬

‫ب‪ .‬الضبط‬

‫نيضنبط ‪ Squid‬بتعديل التعليما ت الموجتتودة ضتتمن ملتتف الضتتبط ‪/etc/squid3/squid.conf‬؛‬

‫المثلة التية تعترض بعتتض التعليمتا ت التتي يمسكتن تعتديلها لتغييتر ستلوك ختادوم ‪Squid‬؛ للمزيتد متن‬

‫التفاصيل المعنمقة حول ‪ ،Squid‬فاظنظر إلى قسم المصادر‪.‬‬

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

‫اظنستتتخ الملتتتف ‪ /etc/squid/squid.conf‬واحمتتت شه متتتن السكتابتتتة بإدختتتال الوامتتتر التيتتتة فتتتي‬

‫الطرفية‪:‬‬

‫‪sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original‬‬


‫‪sudo chmod a-w /etc/squid3/squid.conf.original‬‬

‫لضتتتبط ختتتادوم ‪ Squid‬لسكتتتي يستتتتمع إلتتتى منفتتتذ ‪ TCP‬ذو الرقتتتم ‪ 8888‬بتتتدصل متتتن منفتتتذ ‪TCP‬‬

‫الفتراضي ‪ ،3128‬فعددل التعليمة ‪ http_port‬كما يلي‪:‬‬

‫‪http_port 8888‬‬

‫▲‬ ‫‪| 343‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫عددل التعليمة ‪ visible_hostname‬لسكي تعطي خادوم ‪ Squid‬اسم مضيف خاص بته؛ هتتذا‬

‫ضشبنط في هذا المثال إلى ‪:weezie‬‬


‫السم ل يفترض أن يسكون ظنفس اسم المضيف للحاسوب؛ ن‬

‫‪visible_hostname weezie‬‬

‫باستتتخدام التحسكتتم فتتي الوصتتول الختتاص بختتادوم ‪ ،Squid‬ربمتتا تضتتبط استتتخدام ختتدما ت‬

‫الظنتتترظنت التتتي يسكتتون فيهتتا ‪ Squid‬وستيصطا لتتتتوفر للمستتتخدمين التتذي يملسكتتون عنتتاوين ‪ IP‬معدينتتة؛‬

‫ففي هذا المثال‪ ،‬سنسمح بالوصول لمستخدمي الشبسكة الفرعية ‪ 192.168.42.0/24‬فقط‪:‬‬

‫أضف ما يلي إلى ظنهاية قسم ‪ ACL‬من ملف ضبط ‪:/etc/squid3/squid.conf‬‬

‫‪acl fortytwo_network src 192.168.42.0/24‬‬

‫ثم أضف ما يلي إلى بداية قسم ‪ http_access‬في ملف ‪:/etc/squid3/squid.conf‬‬

‫‪http_access allow fortytwo_network‬‬

‫باستتتخدام ميتتزا ت التحسكتتم بالوصتتول الممتتتازة التتتي يوفرهتتا ‪Squid‬؛ فربمتتا تضتتبط استتتخدام‬

‫ختتدما ت الظنتتترظنت التتتي يسكتتون فيهتتا ‪ Squid‬وستتي صطا كتتي تتتتوفر فقتتط أثنتتاء ستتاعا ت العمتتل العاديتتة؛‬

‫على سبيل المثتال‪ ،‬س نحاكي وص ول المتوظفين خلل ستاعا ت العمتل متن ‪ 9:00AM‬إلتى ‪5:00PM‬‬

‫ومن الثنين إلى الجمعة‪ ،‬الذين يستخدمون الشبسكة الفرعية ‪:10.1.42.0/42‬‬

‫▲‬ ‫‪| 344‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫أضف ما يلي إلى ظنهاية قسم ‪ ACL‬في ملف ‪:/etc/squid3/squid.conf‬‬

‫‪acl biz_network src 10.1.42.0/24‬‬


‫‪acl biz_hours time M T W T F 9:00-17:00‬‬

‫ثم أضف ما يلي إلى أعلى قسم ‪ http_access‬في ملف ‪:/etc/squid3/squid.conf‬‬

‫‪http_access allow biz_network biz_hours‬‬

‫ملحظة‪ :‬بعد عمل تغيرا ت إلى ملف الضبط ‪ ،/etc/squid3/squid.conf‬فاحفظ الملف ثتم أع د تشتغيل ختادوم‬
‫‪ Squid‬لسكي تأخذ التغيرا ت مجراها بإدخال المر التي في الطرفية‪:‬‬
‫‪sudo service squid3 restart‬‬

‫ج‪ .‬مصادر‬

‫موقع ‪.Squid‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪.«Squid‬‬ ‫•‬

‫▲‬ ‫‪| 345‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫‪ .4‬إطار عمل ‪Ruby on Rails‬‬


‫إن ‪ Ruby on Rails‬هتتو إطتتار عمتتل مفتتتوح المصتتدر للتتويب لتطتتوير تطبيقتتا ت ويتتب يعتمتتد‬

‫على قواعد البياظنا ت؛ حيث نيف د‬


‫ضل هذا الطار المبدأ » ‪.«convention over configuration‬‬

‫ا‪ .‬التثبيت‬

‫قبل تثبيت ‪ ،Ruby on Rails‬يجب أن يسكون لديك خادومي أباتشي و ‪MySQL‬؛ رجاصء نعد‬

‫للقسام التي تشرح تثبيتهما للمزيد من المعلوما ت‪.‬‬

‫بعد أن نتثنبت حزم أباتشي و ‪MySQL‬؛ فيجب أن تسكون جاهصزا لتثتتبيت حزمتتة ‪Ruby on Rails‬؛‬

‫وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install rails‬‬

‫ب‪ .‬الضبط‬

‫عتتتتتتتددل ملتتتتتتتف الضتتتتتتتبط ‪ /etc/apache2/sites-available/000-default.conf‬لعتتتتتتتداد‬

‫النطاقا ت‪.‬‬

‫أول شيء يجب تغييره هو التعليمة ‪:DocumentRoot‬‬

‫‪DocumentRoot /path/to/rails/application/public‬‬

‫▲‬ ‫‪| 346‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خواديم الويب‬

:<Directory "/path/to/rails/application/public">‎ ‫ثم عددل التعليمة‬

<Directory "/path/to/rails/application/public">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all
AddHandler cgi-script .cgi
</Directory>

:‫ وذلك بإدخال المر التي في الطرفية‬،‫ لباتشي‬mod_rewrite ‫يجب أن نتفدعل الوحدة‬

sudo a2enmod rewrite

/path/to/rails/application/public ‫ يجتتتتتتتتتتتب أن نتعتتتتتتتتتتتددل ملسكيتتتتتتتتتتتة‬،‫فتتتتتتتتتتتي النهايتتتتتتتتتتتة‬

:‫ للمستخدم الذي نيشدغل عملية أباتشي‬/path/to/rails/application/tmp ‫و‬

sudo chown -R www-data:www-data \


/path/to/rails/application/public
sudo chown -R www-data:www-data /path/to/rails/application/tmp

.Ruby on Rails ‫هذا كل ما في المر! يجب أن يسكون خادومك جاهصزا الن لتخديم تطبيقا ت‬

‫ مصادر‬.‫ج‬

.‫ لمزيتد من المعلوما ت‬Ruby on Rails ‫راجع موقع‬ •

.‫ هو مصدر رائع قد تستفيد منه‬Agile Development with Rails •

.«Ruby on Rails» ‫صفحة ويسكي أوبنتو‬ •

▲ | 347
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫‪ .5‬خادوم أباتشي ‪Tomcat‬‬


‫إن أباتشتتي تومسكتتا ت )‪ (Apache Tomcat‬هتتو »حاويتتة ويتتب« )‪ (web container‬يستتمح‬

‫لك بتخديم ‪ Java Servlets‬و ‪.(Java Server Pages) JSP‬‬

‫في أوبنتو دعةم لصدانر د‬


‫ي تومسكا ت ‪ 6‬و ‪ ،7‬حيث تومسكا ت ‪ 6‬هتتي النستتخة القديمتتة؛ وتومسكتتا ت ‪7‬‬

‫هي النسخة الحالية التي تضاف إليها الميزا ت الجديدة‪ .‬نيعنتنبر أن كل الصتتدارين مستتتقر‪ ،‬لسكتتن هتتذا‬

‫السكتاب سيركز على تومسكا ت ‪ ، 7‬لسكن أغلبية تفاصيل الضبط المشروحة هنا صالحة لسكل النسختين‪.‬‬

‫نتتتتدعم حتتتزم تومسكتتتا ت فتتتي أوبنتتتتو طريقتتتتين مختلفتتتتين لتشتتتغيل تومسكتتتا ت؛ يمسكنتتتك تثتتتبيته‬

‫بالطريقة السكلسيسكية لعموم النظام‪ ،‬مما يجعل تومسكا ت يبدأ في وقت القلع وسيعمل كمستتتخدم‬

‫‪) tomcat7‬أو ‪ (tomcat6‬بتتتدون امتيتتتازا ت؛ لسكنتتتك تستتتتطيع إظنشتتتاء ظنستتتخ خاصتتتة منتتته وتشتتتغيلها‬

‫صتا‬
‫بامتيازا ت المستتخدم‪ ،‬التذي يمسكنتك بتدؤه أو إيقتافه بنفستك؛ الطريقتتة الثاظنيتتة هتي مفيتدة خصو ص‬

‫في الخادوم التطويري حيتث يحتتاج عت ددة مستتخدمين إلتى اختبتار البرمجيتا ت فتي ظنستخ تومسكتا ت‬

‫الخاصة بهم‪.‬‬

‫ا‪ .‬التثبيت لعموم النظام‬

‫عليك إدخال المر التي في الطرفية لتثبيت خادوم تومسكا ت‪:‬‬

‫‪sudo apt-get install tomcat7‬‬

‫المتتر الستتابق ستتنيث دبت ختتادوم تومسكتتا ت متتع تطتتبيق التتويب الفتراضتتي ‪ROOT‬؛ التتذي نيظشهتتر‬

‫صفحصة بسيطصة تحتوي على "‪."It works‬‬

‫▲‬ ‫‪| 348‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫ب‪ .‬الضبط‬

‫ملفا ت ضبط تومسكا ت موجودة في ‪ ،/etc/tomcat7‬بعض تعديل ت الضبط الشائعة سنتشتنرح‬

‫هنا فقط؛ رجاصء راجع توثيق ‪ Tomcat 7.0‬للمزيد‪.‬‬

‫تغيير المناافذ الافتراضية‬

‫يعمل تومسكا ت ‪ 7.0‬افتراضصيا بواصل ‪ (HTTP connector) HTTP‬على المنفذ ‪ 8080‬وواصل‬

‫‪ AJP‬على المنفذ ‪ 8009‬؛ ربما تريد تغيير هذين المنفذين الفتراضيين لتفادي التضاربا ت مع خواديم‬

‫أخرى على النظام‪ ،‬يمسكن فعل ذلك بتعديل السطر التية في ‪:/etc/tomcat7/server.xml‬‬

‫"‪<Connector port="8080" protocol="HTTP/1.1‬‬


‫"‪connectionTimeout="20000‬‬
‫>‪redirectPort="8443" /‬‬
‫‪...‬‬
‫"‪<Connector port="8009" protocol="AJP/1.3‬‬
‫>‪redirectPort="8443" /‬‬

‫تبديل ‪ JVM‬اليمستخلدمة‬

‫يعمتتل تومسكتتا ت افتراضتتصيا عمصل ممتتتاصزا متتع ‪ ،OpenJDK‬ثتتم ستتنيجدرب ‪ JVM‬الخاصتتة بشتتركة‬

‫ص‬
‫‪Sun‬؛ ثتتتم ستتتيجرب ‪ JVMs‬الختتترى؛ إذا كتتتان لتتتديك عتتتددة ‪ JVMs‬مثبتتتتة‪ ،‬فيمسكنتتتك ضتتتبط أ ي‬
‫ي منهتتتا‬

‫سيستخدم عبر ‪ JAVA_HOME‬في ‪:/etc/default/tomcat7‬‬

‫‪JAVA_HOME=/usr/lib/jvm/java-6-sun‬‬

‫▲‬ ‫‪| 349‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫تعريف المستخدمين وأدوارهم‬

‫يمسكتتن أن نتعتتنرف أستتماء المستتتخدمين وكلمتتا ت مرورهتتم وأدوارهتتم )المجموعتتا ت( فتتي حاويتتة‬

‫‪Servlet‬؛ يتم ذلك في ملف ‪:/etc/tomcat7/tomcat-users.xml‬‬

‫>‪<role rolename="admin"/‬‬
‫>‪<user username="tomcat" password="s3cret" roles="admin"/‬‬

‫ج‪ .‬استخدام تطبيقات الويب القياسية التابعة لتومكات‬

‫يأتي تومسكا ت مع تطبيقا ت ويب يمسكن تثبيتها لغراض التوثيق أو الدارة أو لغراض تجريبية‪.‬‬

‫توثيق تومكات‬

‫تحتوي الحزمتة ‪ tomcat7-docs‬علتتى توثيتق تومسكتا ت محزيمتا كتطتتبيق ويتتب تستتطيع التدخول‬

‫إليه افتراضصيا عبر ‪ ،http://server:8080/docs‬وتستطيع تثبيت تلك الحزمة بالمر التي‪:‬‬

‫‪sudo apt-get install tomcat7-docs‬‬

‫تطبيقات الويب لدارة تومكات‬

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


‫تحتوي الحزمة ‪ tomcat7-admin‬على تطبيق د‬

‫تومسكا ت عبر واجهة ويب‪ ،‬يمسكنك تثبيتهما عبر إدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install tomcat7-admin‬‬

‫▲‬ ‫‪| 350‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫أولهمتتتتتا هتتتتتو تطتتتتتبيق التتتتتويب » ‪«manager‬؛ التتتتتذي يمسكتتتتتن الوصتتتتتول إليتتتتته افتراضتتتتتصيا عتتتتتبر‬

‫‪http://server:8080/manager/html‬؛ ونيستتتتتخ ندم للحصتتتتول علتتتتى حالتتتتة الختتتتادوم وإعتتتتادة‬

‫تشغيل تطبيقا ت الويب‪.‬‬

‫ي افتراضصيا‪ :‬عليك أن نتعدرف مستخدصما بتتدور »‪«manager-gui‬‬


‫ملحظة‪ :‬الوصول إلى تطبيق ‪ manager‬محم ة‬
‫في ‪ /etc/tomcat7/tomcat-users.xml‬قبل الوصول إليه‪.‬‬

‫التطتتتتتتبيق الختتتتتتر هتتتتتتو »‪ «host-manager‬التتتتتتذي يمسكتتتتتتن الوصتتتتتتول إليتتتتتته افتراضتتتتتتييا عتتتتتتبر‬

‫‪ ،http://server:8080/host-manager/html‬ويمسكتتن أن نيستتتخندم لظنشتتاء مضتتيفين وهمييتتن‬

‫ديناميسكييا‪.‬‬

‫ضتتا‪ :‬عليتتك أن نتعتتدرف مستتتخدصما بتتدور »‬


‫ملحظظظة‪ :‬الوصتتول إلتتى تطتتبيق ‪ host-manager‬محمتتي افتراضتتصيا أي ص‬
‫ة‬
‫‪ «admin-gui‬في ‪ /etc/tomcat7/tomcat-users.xml‬قبل الوصول إليه‪.‬‬

‫لسباب تتعلق بالحماية‪ ،‬ل يمسكن للمستخدم ‪ tomcat7‬أن يسكتب إلتتى مجلتتد ‪/etc/tomcat7‬‬

‫افتراضتت صيا؛ بعتتض الميتتزا ت فتتي تطبيقتتا ت التتويب هتتذه )ظنشتتر التطبيقتتا ت‪ ،‬أو إظنشتتاء مضتتيف وهمتتي(‬

‫تحتتتاج إلتتى إذن السكتابتتة إلتتى ذاك المجلتتد؛ إذا أرد ت استتتخدام هتتذه الميتتزا ت‪ ،‬فعليتتك تنفيتتذ الوامتتر‬

‫التية لعطاء المستخدمين في مجموعة ‪ tomcat7‬المتيازا ت اللزمة‪:‬‬

‫‪sudo chgrp -R tomcat7 /etc/tomcat7‬‬


‫‪sudo chmod -R g+w /etc/tomcat7‬‬

‫▲‬ ‫‪| 351‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫تطبيقات ويب تومكات للتجربة‬

‫ي ويتتب نيستتتخدمان لختبتتار أو شتترح ميتتزا ت‬ ‫ن‬


‫تحتتتوي حزمتتة ‪ tomcat7-example‬علتتى تطتتبيق د‬

‫‪ Servlets‬و ‪JSP‬؛ تستطيع الوصول إليهمتا افتراضتتصيا عتتبر ‪http://server:8080/examples‬؛ يمسكنتتك‬

‫تثبيتهما بالمر‪:‬‬

‫‪sudo apt-get install tomcat7-examples‬‬

‫د‪ .‬استخدام نسخ تخاصة‬

‫نيستخدم تومسكا ت اس تخداصما واست صعا فتي التطتوير وحتال ت الختبتار حيتث ل يسكتون استتخدام‬

‫ظنستتخة واحتتدة لعمتتوم النظتتام كاف صيتتا لعتتدة مستتتخدمين علتتى ظنظتتام واحتتد؛ تتتأتي حتتزم تومسكتتا ت فتتي‬

‫أوبنتو مع الدوا ت اللزمة لظنشاء ظنسخ موجهة للمستخدمين‪ ،‬مما يسمح لسكل مستخدم في النظام‬

‫بتشتتتغيل ) دون امتيتتتازا ت الجتتتذر( ظنستتتخة خاصتتتة منفصتتتلة بينمتتتا متتتا تتتتزال تستتتتخدم تلتتتك النستتتخة‬

‫المسكتبا ت المثبتة على النظام‪.‬‬

‫ملحظة‪ :‬من الممسكن تشغيل ظنسخة لعموم النظتام‪ ،‬وظنستخ خاصتة علتتى التتوازي )أي مصعتا(؛ شتريطة أدل يستتخدموا‬
‫ظنفس منافذ ‪.TCP‬‬

‫تثبيت دعم النسخ الخاصة‬

‫يمسكنك تثبيت كل ما يلزم لدعم النسخ الخاصة بتنفيذ المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install tomcat7-user‬‬

‫▲‬ ‫‪| 352‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫إنشاء نسخة تخاصة‬

‫يمسكنك إظنشاء مجلد لنسخة خاصة بإدخال المر التي في الطرفية‪:‬‬

‫‪tomcat7-instance-create my-instance‬‬

‫سنينششتئ المتتر الستابق مجلتتد ‪ my-instance‬جديتد متع كتتل المجلتتدا ت الفرعيتة والستسكربتا ت‬

‫اللزمة؛ يمسكنك على سبيل المثال تثبيت المسكتبا ت الشائعة في المجلد الفرعي ‪ lib/‬ووضتتع تطتتبيق‬

‫الويب في مجلد ‪webapps/‬؛ ل توجد أدية تطبيقا ت ويب افتراضصيا‪.‬‬

‫ضبط نسختك الخاصة‬

‫ستجد ملفا ت ضبط تومسكا ت التقليدية في النسخة الخاصة في المجلد الفرعي ‪conf/‬؛ يجب‬

‫عليك‪ ،‬على ستبيل المثتتال‪ ،‬تعتتديل ملتتف ‪ conf/server.xml‬لتغييتر المنفتتذ الفتراضتتي النمستتخندم‬

‫من ظنسخة تومسكا ت الخاصة لتفادي التضارب مع النسخ الخرى التي قد تسكون تعمل على النظام‪.‬‬

‫بدء أو إيقاف النسخة الخاصة‬

‫يمسكنك بدء ظنسختك الخاصة بإدختتال المتر التتتي فتي الطرفيتة )بفترض أن ظنستختك موجتودةة‬

‫في مجلد ‪:(my-instance‬‬

‫‪my-instance/bin/startup.sh‬‬

‫ملحظظظظظظظظظظظظة‪ :‬عليتتتتتتتتتتتك التحقتتتتتتتتتتتق متتتتتتتتتتتن المجلتتتتتتتتتتتد الفرعتتتتتتتتتتتي ‪ /logs‬لي خطتتتتتتتتتتتأ؛ إذا حصتتتتتتتتتتتلت علتتتتتتتتتتتى خطتتتتتتتتتتتأ‬
‫‪ java.net.BindException: Address already in use<null>‎:8080‬فاعلم أن المنفذ نمستخندم متن قبتل‬
‫وعليك تغييره‪.‬‬

‫▲‬ ‫‪| 353‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الويب‬

‫يمسكنك إيقاف ظنسختك الخاصة بتنفيذ المر التي في سطر الوامر‪:‬‬

‫‪my-instance/bin/shutdown.sh‬‬

‫ه‪ .‬مصادر‬

‫راجع موقع ‪ Apache Tomcat‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫كتاب » ‪ «Tomcat: The Definitive Guide‬مصدر جيد لبناء تطبيقا ت الويب مع تومسكا ت‪.‬‬ ‫•‬

‫راجع قائمة »‪ «Tomcat Books‬لمزيتد من السكتب‪.‬‬ ‫•‬

‫▲‬ ‫‪| 354‬‬


‫قواعد البيانات‬
‫‪12‬‬

‫▲‬ ‫‪| 355‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫ي قواعد بياظنا ت شهينرين هما‪:‬‬


‫توفر أوبنتو خادونم د‬

‫قواعد بياظنا ت ‪.MySQL‬‬ ‫•‬

‫قواعد بياظنا ت ‪.PostgreSQL‬‬ ‫•‬

‫حيث تتتوفران فتي المستتودع الرئيستي )‪(main‬؛ ويشترح هتذا الفصتل كيفيتة تثتبيت وض بط‬

‫ي الذكر‪.‬‬ ‫ن‬
‫خادونمي قواعد البياظنا ت آظنف د‬

‫‪ .1‬خادوم ‪MySQL‬‬
‫إن ‪ MySQL‬هو خادوم قواعد بياظنا ت سريع ومتعدد الخيوط )‪ (multi-threaded‬ومتعتدد‬

‫حمصل ثقيصل‪ ،‬ويمسكتتن‬


‫المستتتخدمين ومتترن جتتصدا؛ نمطتت نور للظنظمتتة الظنتاجيتتة المحوريتتة والتتتي تتحمتتل ش‬

‫أي ص‬
‫ضا تضمينه في البرمجيا ت سريعة النشر )‪.(mass-deployed‬‬

‫ا‪ .‬التثبيت‬

‫ظنفدذ المر التي في الطرفية لتثبيت ‪:MySQL‬‬

‫‪sudo apt-get install mysql-server‬‬

‫سنيطلب منك إدخال كلمة مرور للمستخدم الجذر لخادوم ‪ MySQL‬أثناء التثبيت‪.‬‬

‫بعد أن ينتهي التثبيت‪ ،‬فيجتب أن يبتدأ ختادوم ‪ MySQL‬تلقائصيتا؛ تستتطيع تنفيتذ المتر التتي‬

‫في الطرفية للتحقق إذا كان خادوم ‪ MySQL‬يعمل أم ل‪:‬‬

‫‪sudo netstat -tap | grep mysql‬‬

‫▲‬ ‫‪| 356‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫يجب أن تشاهد شيصئا شبيصها بما يلي بعد تنفيذ المر السابق‪:‬‬

‫‪tcp‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪localhost:mysql‬‬ ‫*‪*:‬‬ ‫‪LISTEN‬‬ ‫‪2556/mysqld‬‬

‫إذا لم يسكن يعمل الخادوم‪ ،‬فتستطيع تشغيله بالمر‪:‬‬

‫‪sudo service mysql restart‬‬

‫ب‪ .‬الضبط‬

‫تستتتتتطيع تعتتتتديل الملتتتتف ‪ /etc/mysql/my.cnf‬لضتتتتبط العتتتتدادا ت الساستتتتية‪ ،‬مثتتتتل ملتتتتف‬

‫السجل‪ ،‬ورقم المنفذ … إلتتخ‪ .‬فمثصل لضتتبط ‪ MySQL‬ليستتتمع إلتتى التصتتال ت متتن مضتتيفي الشتتبسكة‪،‬‬

‫عليك تعديل قيمة التعليمة ‪ bind-address‬إلى عنوان ‪ IP‬للخادوم‪:‬‬

‫‪bind-address‬‬ ‫=‬ ‫‪192.168.0.5‬‬

‫ملحظة‪ :‬عددل ‪ 192.168.0.5‬إلى العنوان الملئم‪.‬‬

‫بعتتتد إجتتتراء التعتتتديل ت علتتتى ملتتتف ‪/etc/mysql/my.cnf‬؛ فيجتتتب إعتتتادة تشتتتغيل عفريتتتت‬

‫‪:MySQL‬‬

‫‪sudo service mysql restart‬‬

‫▲‬ ‫‪| 357‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫أدختتتل المتتتر التتتتي فتتتي الطرفيتتتة إذا رغبتتتت بتغييتتتر كلمتتتة متتترور المستتتتخدم الجتتتذر ) ‪(root‬‬

‫في ‪:MySQL‬‬

‫‪sudo dpkg-reconfigure mysql-server-5.5‬‬

‫سنيونقف عمل عفريت ‪ ،MySQL‬وسنتسأل عن كلمة المرور الجديدة‪.‬‬

‫ج‪ .‬محركات قاعدة البيانات‬

‫على الرغتتم متن أن الضتتبط الفتراضتتي لختادوم ‪ MySQL‬المتوفر متتن حتزم أوبنتتو يعمتتل عمصل‬

‫صحي صحا دون مشاكل‪ ،‬لسكن هنالك بعض المور التي عليك أخذها بعين العتبار قبل الكمال‪.‬‬

‫صدمنمت قواعد بياظنا ت ‪ MySQL‬للستماح بتخزيتن البياظنتا ت بطترتق مختلفتة؛ نيشتتار لهتذه الطترق‬
‫ن‬

‫إما بمحركا ت قواعد البياظنا ت أو محركا ت التخزين ) ‪(Storage engine‬؛ هنالك محركان رئيسيان‬

‫ستتتتسكون مهتصمتتتا بهمتتتا‪ InnoDB :‬و ‪ MyISAM‬؛ ل تتغيتتتر طريقتتتة التعامتتتل متتتع محركتتتا ت التخزيتتتن‬

‫المختلفتتة بالنستتبة للمستتتخدم النهتتائي؛ حيتتث تتعامتتل ‪ MySQL‬متتع المتتور بطريقتتة مختلفتتة وراء‬

‫الستار‪ ،‬أي أظنه بغض النظر عن محرك التخزين الذي تستخدمه‪ ،‬فإظنك ستتعامل متتع قواعتتد البياظنتتا ت‬

‫بنفس الطريقة تماصما‪.‬‬

‫لسكتل محترك إيجابيتتاته وستلبياته؛ وبينمتا متن الممسكتن دمتج عتددة محركتتا ت قواعتد بياظنتتا ت علتى‬

‫مستتتوى الجتتدول‪ ،‬لسكتتن ذلتتك خطيتتةر‪ ،‬فربمتتا يقلتتل ذلتتك متتن الفعاليتتة والداء لظنتتك نتقدستتم المتتوارد بيتتن‬

‫محركين بدصل من تخصيصها لمحرك واحد فقط‪.‬‬

‫▲‬ ‫‪| 358‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫المحتتتترك ‪ MyISAM‬هتتتتو القتتتتدم بيتتتتن المحركيتتتتن المتتتتذكورين؛ يمسكتتتتن أن يسكتتتتون أستتتترع متتتتن‬

‫‪ InnoDB‬في حال ت مع دينة ويفضل العمال التتتي تتطلتتب القتتراءة فقتتط؛ تتمحتتور بعتتض تطبيقتتا ت‬

‫التويب حتول ‪) MyISAM‬علتتى الرغتتم أظنهتتا لتن نتبنطتئ إذا استتتخدمت ‪(InnoDB‬؛ يتدعم ‪MyISAM‬‬

‫ ت كتتبيرتة متتن النتتص؛‬ ‫أي ص‬


‫ضا ظنوع البياظنا ت ‪FULLTEXT‬؛ الذي يسمح بالبحث بسرعة كتتبيرة فتتي كميتتا ت‬

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

‫تستطيع تحديث الجدول في لحظة زمنية معيدنة؛ قد يسكون هذا إعاقتتصة لتوستتع تطتتبيق يعتمتتد علتتى‬

‫هتتتذا الجتتتدول؛ ول يحتتتتوي ‪ MyISAM‬علتتتى ميتتتزة »‪ ،«journaling‬وهتتتذا يعنتتتي أظنتتته متتتن الصتتتعب‬

‫استرجاع البياظنتتا ت بعتد حتتدوث اظنهيتتار؛ المقتال التتتي يتوفر بعتض النقتاط لعتبارهتتا حتول استتخدام‬

‫‪ MyISAM‬في قاعدة بياظنا ت إظنتاجية‪.‬‬

‫المحتترك ‪ InnoDB‬هتتو محتترك قواعتتد بياظنتتا ت أكتتثر حداثتتصة‪ ،‬نصتتدمم ليسكتتون متوافصقتتا متتع ‪ACID‬‬

‫الذي يضمن إجراء العمليا ت على قواعد البياظنا ت بطريقة عملية؛ قفل السكتابة يحتتدث علتتى مستتتوى‬

‫السجل )‪ (row‬ضمن الجدول؛ هذا يعني أظنه من الممسكن إجراء عتددة تحتديثا ت لس جل ت جتدوتل متا‬

‫في ظنفس الوقت؛ التخزين الموقت للبياظنتتا ت يحتدث فتي التذاكرة ضتمن محترك قواعتد البياظنتا ت‪ ،‬ممتا‬

‫يسمح بالتخزين على أساس السجل وليس على أستتاس كتلتتة الملتتف ) ‪(file block‬؛ ولسكتتي يتوافتتق‬

‫مع ‪ ،ACID‬فإن كل العمليا ت تحدث بطريقة »‪ «journaled‬مستقلصة عن الجداول الرئيستتية؛ وهتتذا‬

‫يؤدي إلى استرجاع البياظنا ت استرجاصعا عملصيا‪.‬‬

‫إن ‪ InnoDB‬هو المحرك الفتراضتتي فتتي ‪ MySQL 5.5‬ومتتن المستحستتن بشتتدة استتتخدامه‬

‫بدصل من ‪ MyISAM‬ما لم تسكن تريد استخدام مزايا خاصة بذاك المحرك‪.‬‬

‫▲‬ ‫‪| 359‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫د‪ .‬الضبط المتقدم‬

‫إنشاء ملف ضبط ‪my.cnf‬‬

‫هنالك عدد من المعامل ت التي يمسكن تعديلها فتتي ملتتف ضتبط ‪ MySQL‬ممتتا يستتمح لتتك بتحستتين‬

‫أداء الختتادوم متتع متترور التتوقت؛ ربمتتا تجتتد الداة »‪ «Percona's my.cnf generating tool‬مفيتتدصة‬

‫للعداد البتدائي؛ ستولد هذه الداة ملف ‪ my.cnf‬ليسكون أكثر ملئمصة لمسكاظنيا ت ومتطلبا ت خادومك‪.‬‬

‫ل تستبدل ملف ‪ my.cnf‬المولد من ‪ Percona‬إذا وضعت بياظنتتا ت فتتي قاعتتدة بياظنتتا ت‪ ،‬بعتتض‬

‫التغييرا ت في الملف لن تسبب مشاكل لظنها نتع ددل طريقة تخزين البياظنا ت على القرص الصلب ولتتن‬

‫تتمسكن من تشغيل ‪MySQL‬؛ إذا أرد ت استخدامه وكاظنت لديك بياظنا ت موجتتودة مستتبصقا‪ ،‬فعليتتك أن‬

‫تجري ‪ mysqldump‬ثم تعيد التحميل‪:‬‬

‫\ ‪mysqldump --all-databases --all-routines -u root‬‬


‫‪-p > ~/fulldump.sql‬‬

‫سنتسأل عتن كلمتة مترور المستتخدم الجتذر لقواعتد ‪ MySQL‬قب ل إظنشتاء ظنس خة متن البياظنتتا ت؛‬

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

‫هذه الخطوة؛ ربما تأخذ عملية النسخ بعض الوقت بناصء على مقتدار البياظنتتا ت الموج ودة ف ي قاعتدة‬

‫البياظنا ت لديك؛ لن ترى شيصئا على الشاشة أثناء تنفيذ المر السابق‪.‬‬

‫أغلق خادوم ‪ MySQL‬بعد إكمال عملية التفريغ )‪:(dump‬‬

‫‪sudo service mysql stop‬‬

‫▲‬ ‫‪| 360‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫خذ الن ظنسخصة احتياطيصة من ‪ my.cnf‬واستبدله بالملف الجديد‪:‬‬

‫‪sudo cp /etc/my.cnf /etc/my.cnf.backup‬‬


‫‪sudo cp /path/to/new/my.cnf /etc/my.cnf‬‬

‫الن احذف وأعد تهيئة مجال قواعد البياظنا ت وتأكد أن الملسكيتتة صتحيحة قبتتل إعتادة تشتتغيل‬

‫‪:MySQL‬‬

‫‪sudo‬‬ ‫*‪rm -rf /var/lib/mysql/‬‬


‫‪sudo‬‬ ‫‪mysql_install_db‬‬
‫‪sudo‬‬ ‫‪chown -R mysql: /var/lib/mysql‬‬
‫‪sudo‬‬ ‫‪service start mysql‬‬

‫كتتل متتا تبقتتى الن هتتو إعتتادة استتتيراد بياظناتتتك؛ وللحصتتول علتتى فسكتترة عتتن متتدى إتمتتام عمليتتة‬

‫الستيراد‪ ،‬فربما تجد الداة ‪ (Pipe Viewer) pv‬مفيدصة؛ المر التي يظهر كيفية تثبيت واستخدام‬

‫‪ pv‬لهذه الحالة‪ ،‬ربما ل تريد أن تستخدمها وكل متتا عليتتك فعلته هتو استتبدال ‪ pv‬بتتالمر ‪cat‬؛ تجاهتل‬

‫أية أوقا ت متوقعة للظنتهاء )‪ (ETA‬مولدة من ‪pv‬؛ لظنها مبنية على الوقت المستتتغرق لسكتتي نيعانلتتج كتتل‬

‫سجل من الملف‪ ،‬لسكن سرعة إدراج البياظنا ت قد تختلف اختلصفا كبيصرا من سجل إلى سجل‪:‬‬

‫‪sudo apt-get install pv‬‬


‫‪pv ~/fulldump.sql | mysql‬‬

‫ملحظظظة‪ :‬هتتذا ليتتس ضتترورصيا لسكتتل تعتتديل ت ‪ my.cnf‬؛ أغلبيتتة المتغيتترا ت التتتي قتتد ترغتتب فتتي تعتتديلها لتحستتين‬
‫الداء يمسكن أن نتغ نير حتى وإن كان يعمل الخادوم؛ تأكد متن الحصتتول علتى ظنستخة احتياطيتتة متن ملفتا ت الضتتبط‬
‫والبياظنا ت قبل إجراء التعديل ت‪.‬‬

‫▲‬ ‫‪| 361‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫الداة ‪MySQL Tuner‬‬

‫الداة »‪ «MySQL Tuner‬هتتتي أداة مفيتتتدة تستتتتطيع التصتتتال إلتتتى خدمتتتة ‪ MySQL‬التتتتي‬

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

‫أطتتول‪ ،‬كلمتتا كتتاظنت »النصتتيحة« التتتي ستتيوفرها ‪ mysqltuner‬أفضتتل؛ ختتذ بعيتتن العتبتتار الظنتظتتار‬

‫لمتتدة ‪ 24‬ستتاعة فتتي بيئتتة إظنتاجيتتة قبتتل تشتتغيل هتتذه الداة؛ تستتتطيع تثتتبيت ‪ mysqltuner‬متتن‬

‫مستودعا ت أوبنتو‪:‬‬

‫‪sudo apt-get install mysqltuner‬‬

‫ثم تشغيلها بعد تثبيتها بالمر‪:‬‬

‫‪mysqltuner‬‬

‫ ت عتن ختتادوم قاعتدة البياظنتتا ت‪ ،‬ويتوفر‬


‫واظنتظر التقريتتر النهتتائي‪ ،‬ستيوفر القستتم العلتوي معلومتتا ت‬

‫ ت لسكتتي تعتتدلها فتتي ملتتف ‪my.cnf‬؛ يمسكتتن تعتتديل أغلبيتتة القتراحتتا ت علتتى‬
‫القستتم الستتفلي اقتراحتتا ت‬

‫الختتتادوم مباشتتتر صة دون إعتتتادة تشتتتغيله‪ ،‬اظنظتتتر إلتتتى توثيتتتق ‪ MySQL‬الرستتتمي للمتغيتتترا ت المناستتتبة‬

‫لتعديلها في البيئا ت الظنتاجية‪ .‬ما يلي هو جزء من تقرير من قاعدة بياظنتتا ت إظنتاجيتتة التتذي نيظشهتتر أن‬

‫هنالك بعض الفائدة من زيادة مقدار ذاكرة تخزين الطلبية‪:‬‬

‫‪-------- Recommendations ------------------------------‬‬


‫‪General recommendations:‬‬
‫‪Run OPTIMIZE TABLE to defragment tables for better‬‬
‫‪performance‬‬
‫‪Increase table_cache gradually to avoid file descriptor‬‬
‫‪limits‬‬

‫▲‬ ‫‪| 362‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫‪Variables to adjust:‬‬
‫)‪key_buffer_size (> 1.4G‬‬
‫)‪query_cache_size (> 32M‬‬
‫)‪table_cache (> 64‬‬
‫)‪innodb_buffer_pool_size (>= 22G‬‬

‫تعليتتق أخيتتر عتتن ضتتبط قواعتتد البياظنتتا ت‪ :‬بينمتتا ظنستتتطيع أن ظنقتتول أن بعتتض العتتدادا ت هتتي‬

‫الفضتتتل‪ ،‬لسكتتتن قتتتد يختلتتتف الداء متتتن تطتتتبيق لختتتر؛ علتتتى ستتتبيل المثتتتال‪ ،‬متتتا يعمتتتل عمصل ممتتتتاصزا‬

‫لتتتتتوردبريس )‪ (Wordpress‬قتتتتتد ل يسكتتتتتون الفضتتتتتل لتتتتتدروبال )‪ (Drupal‬أو جتتتتتومل )‪(Joomla‬‬

‫أو التطبيقتتا ت التجاريتتة؛ الداء متعلتت ةق بتتأظنواع الطلبيتتا ت واستتتخدام الفهتتارس‪ ،‬وإذا متتا كتتان تصتتميم‬

‫قاعدة البياظنا ت جي صدا‪ ،‬وهسكذا‪ ...‬ربما من الجيد إظنفاق بعض الوقت فتتي البحتتث عتتن إعتتدادا ت ملئمتتة‬

‫لقواعد البياظنا ت بناصء على التطبيقا ت التتتي تستتخدمها؛ لسكتتن بعتتد أن تتجتتاوز التعتتديل ت حتصدا معديصنتتا‪،‬‬

‫فإن أديتتة تغييتترا ت تجريهتتا ل تتستبب إل بتحستين بستتيط جتتصدا فتتي أداء التطتتبيق‪ ،‬ومتن الفضتل لتك‬

‫تحستتتين التطتتتبيق ظنفستتته‪ ،‬أو التفسكيتتتر فتتتي توستتتيع ختتتادوم ‪ MySQL‬إمتتتا باستتتتخدام عتتتتاد أفضتتتل‬

‫أو بإضافة خواديم تابعة )‪.(Slaves‬‬

‫ه‪ .‬مصادر‬

‫راجع الموقع الرئيسي لقواعد ‪ MySQL‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫التوثيق السكامل متوفر بصيغ ‪ online‬و ‪ offline‬من »‪.«MySQL Developers portal‬‬ ‫•‬

‫لمعلوما ت عامة حول ‪ ،SQL‬اظنظر إلى كتاب »‪.«Using SQL Special Edition‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪ «Apache MySQL PHP‬فيها بعض المعلوما ت المفيدة‪.‬‬ ‫•‬

‫▲‬ ‫‪| 363‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫‪ .2‬خادوم ‪PostgreSQL‬‬
‫‪ PostgreSQL‬هي قاعدة بياظنا ت علئقية تعتمد على السكائنتتا ت وتملتتك ميتتزا ت أظنظمتتة قواعتتد‬

‫البياظنا ت التجارية التقليدية مع تحسينا ت موجودة في الجيل الجديد من أظنظمة ‪.DBMS‬‬

‫ا‪ .‬التثبيت‬

‫أدخل المر التي في الطرفية لتثبيت ‪:PostgreSQL‬‬

‫‪sudo apt-get install postgresql‬‬

‫بعد اظنتهاء التثبيت‪ ،‬عليك ضبط خادوم ‪ PostgreSQL‬بناصء على متطلباتتتك‪ ،‬علتتى الرغتتم متتن‬

‫أن الضبط الفتراضي قابل للستخدام‪.‬‬

‫ب‪ .‬الضبط‬

‫التصتتتال عتتتبر ‪ TCP/IP‬معنطتتتل افتراضتتتصيا؛ تتتتدعم ‪ PostgreSQL‬عتتتددة طتتترق للستتتتيثاق متتتن‬

‫العميل؛ طريقة الستيثاق ‪ IDENT‬نتستعنمل للمستخدمين المحليين ولمستتتخدم ‪ postgres‬متتا لتتم‬

‫نيضتتتنبط غيتتتر ذلتتتك؛ رجتتتاصء راجتتتع » ‪ «PostgreSQL Administrator's Guide‬إذا أرد ت ضتتتبط‬

‫بدائل مثل ‪.Kerberos‬‬

‫سنفترض في ما يلي أظنك سنتفدعل اتصال ت ‪ TCP/IP‬وتستخدم طريقة ‪ MD5‬للستتتيثاق متتن‬

‫العميل؛ نتختنزن ملفتا ت ضتبط ‪ PostgreSQL‬فتي المجلتد ‪/etc/postgresql/<version>‎/main‬؛‬

‫على سبيل المثال‪ ،‬إذا ثبتتت ختتادوم ‪ ،PostgreSQL 9.1‬فتإن ملفتا ت الضتبط ستنتخنزن فتي المجلتد‬

‫‪./etc/postgresql/9.1/main‬‬

‫▲‬ ‫‪| 364‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫تنويه‪ :‬لضبط الستيثاق بطريقة ‪ ،ident‬فأضف مدخل ت إلتتى ‪/etc/postgresql/9.1/main/pg_ident.conf‬؛‬


‫هنالك تعليقا ت تفصيلية في الملف لتساعدك‪.‬‬

‫لتفعيل اتصال ت ‪ ،TCP/IP‬عليك تعتتديل الملتف ‪/etc/postgresql/9.1/main/postgresq‬‬

‫‪ l.conf‬ومن ثم تحديد السطر '‪ #listen_addresses = 'localhost‬ثم تغييره إلى‪:‬‬

‫'*' = ‪listen_addresses‬‬

‫ملحظة‪ :‬للسماح باتصال ت ‪ IPv4‬و ‪ ،IPv6‬استبدل "‪ "localhost‬بالرمز "‪."::‬‬

‫ربما تريد تعديل بقية المعامل ت‪ ،‬إذا كنت تعرف ماذا تفعل للتفاصيل‪ ،‬ارجع إلى ملف الضتتبط‬

‫أو إلى توثيق ‪.PostgreSQL‬‬

‫الن وبعد أن استطعنا التصال بختادوم ‪ PostgreSQL‬فتإن الخط وة التيتة هتي ضتبط كلمتة‬

‫مرور للمستخدم ‪postgres‬؛ ظنفذ المر التي في الطرفيتة للتصتال بقاعتدة بياظنتا ت ‪PostgreSQL‬‬

‫الفتراضية‪:‬‬

‫‪sudo -u postgres psql template1‬‬

‫يتصتتتتل المتتتتر الستتتتابق بقاعتتتتدة بياظنتتتتا ت ‪ PostgreSQL‬المستتتتماة ‪ template1‬كالمستتتتتخدم‬

‫‪postgres‬؛ بعد أن تتصل إلى خادوم ‪ PostgreSQL‬وتحصل على شمنحث لدخال تعليما ت ‪.SQL‬‬

‫▲‬ ‫‪| 365‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫يمسكنك إدخال أمر ‪ SQL‬التي في شمنحث ‪ psql‬لضبط كلمة المرور للمستخدم ‪:postgres‬‬

‫;'‪ALTER USER postgres with encrypted password 'your_password‬‬

‫بعتتتتتد ضتتتتتبط كلمتتتتتة المتتتتترور‪ ،‬عتتتتتددل الملتتتتتف ‪/etc/postgresql/9.1/main/pg_hba.conf‬‬

‫لستخدام استيثاق ‪ MD5‬مع المستخدم ‪:postgres‬‬

‫‪local‬‬ ‫‪all‬‬ ‫‪postgres‬‬ ‫‪md5‬‬

‫فتتتي النهايتتتة‪ ،‬يجتتتب أن نتعيتتتد تشتتتغيل خدمتتتة ‪ PostgreSQL‬لتهيئتتتة الضتتتبط الجديتتتد‪ ،‬وذلتتتك‬

‫بإدخال المر التي من الطرفية‪:‬‬

‫‪sudo service postgresql restart‬‬

‫تحظظذير‪ :‬الضتتبط الستتابق ليتتس كتتامصل بتتأي شتتسكل متتن الشتتسكال‪ ،‬رجتتاصء راجتتع » ‪PostgreSQL Administrator's‬‬
‫‪ «Guide‬لمعامل ت ضبط إضافية‪.‬‬

‫يمسكنك اختبار اتصال ت الخادوم من الجهزة الخرى باستخدام عملء ‪:PostgreSQL‬‬

‫‪sudo apt-get install postgresql-client‬‬


‫‪psql -h postgres.example.com -U postgres -W‬‬

‫ملحظة‪ :‬استبدل اسم النطاق في المثال السابق باسم ظنطاقك الفعلي‪.‬‬

‫▲‬ ‫‪| 366‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫قواعد البياظنا ت‬

‫ج‪ .‬مصادر‬

‫كما نذشكر سابصقا‪ ،‬فإن » ‪ «PostgreSQL Administrator's Guide‬هو مصدر رائع‪ ،‬وهتتو‬ ‫•‬

‫متوفر أي ص‬
‫ضا في حزمة ‪postgresql-doc-9.1‬؛ ظنفذ ما يلي لتثبيت تلك الحزمة‪:‬‬

‫‪sudo apt-get install postgresql-doc-9.1‬‬

‫أد ش‬
‫ختتتل الوصتتتلة ‪file:///usr/share/doc/postgresql-doc-9.1/html/index.html‬‬

‫في شريط العنوان في متصفحك لمشاهدة الدليل‪.‬‬

‫راجع أي ص‬
‫ضا صفحة ويسكي أوبنتو »‪ «PostgreSQL‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 367‬‬


‫تطبيقات ‪LAMP‬‬
‫‪13‬‬

‫▲‬ ‫‪| 368‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫تثتتبيت ‪) LAMP‬التتذي هتتو ‪ (Linux + Apache + MySQL + PHP/Perl/Python‬هتتو‬

‫إعداد شائع لخواديم أوبنتو؛ هنالك تشسكيلة واسعة ج صدا من البرمجيا ت مفتوحتتة المصتتدر المسكتوبتتة‬

‫لتجميعتتة برامتتج ‪ LAMP‬؛ أشتتهر تلتتك البرمجيتتا ت هتتي تطبيقتتا ت التتويسكي‪ ،‬وأظنظمتتة إدارة المحتتتوى‪،‬‬

‫وبرمجيا ت الدارة مثل ‪.phpMyAdmin‬‬

‫ميزة من مزايتا ‪ LAMP‬هتي المروظنتة غيتر العاديتة لستتخدام قواعتد بياظنتتا ت أو خ واديم ويتب‬

‫أو لغتتتتا ت برمجيتتتتة مختلفتتتتة بتتتتدائل شتتتتائعة لقواعتتتتد ‪ MySQL‬تتضتتتتمن ‪ PostgreSQL‬و ‪SQLite‬؛‬

‫ونتستتتتتتتتخندم ‪ Python‬أو ‪ Perl‬أو ‪ Ruby‬بتتتتتتتدصل متتتتتتتن ‪PHP‬؛ ونيستتتتتتتتبدل ‪ Nginx‬أو ‪Cherokee‬‬

‫أو ‪ Lighttpd‬الخادوم أباتشي‪.‬‬

‫أستترع طريقتتة للبتتدء فتتي تثتتبيت ‪ LAMP‬هتتي استتتخدام ‪tasksel‬؛ الداة ‪ tasksel‬هتتي أداة‬

‫خاصة بدبيان‪/‬أوبنتو التي نتث دبت حزصما مترابطة للقيام »بمهمة« في ظنظامتتك؛ أد ش‬
‫ختتل المتتر التتتي فتتي‬

‫الطرفية لتثبيت خادوم ‪:LAMP‬‬

‫‪sudo tasksel install lamp-server‬‬

‫بعد إتمام عملية التثبيت‪ ،‬ستسكون قادصرا على تثبيت أغلبية تطبيقا ت ‪ LAMP‬بهذه الطريقة‪:‬‬

‫تنزيل أرشيف يحتوي على الملفا ت المصدرية للتطبيق‪.‬‬ ‫•‬

‫استخراج الملفا ت من الرشيف إلى مجلد يمسكن لخادوم الويب الوصول إليه‪.‬‬ ‫•‬

‫اعتمتتتا صدا علتتتى المسكتتتان التتتذي استتتتخرجت الملفتتتا ت إليتتته‪ ،‬فاضتتتبط ختتتادوم التتتويب لنيختتتددم‬ ‫•‬

‫الصفحا ت من هناك‪.‬‬

‫اضبط التطبيق للتصال بقاعدة البياظنا ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 369‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

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

‫التطبيق‪.‬‬

‫ ت شتتتتبيهتة بهتتتتا‪ ،‬فتتتتأظنت جتتتتاهةز الن للبتتتتدء‬


‫بعتتتتد أن أجريتتتتت الخطتتتتوا ت الستتتتابقة أو خطتتتتوا ت‬ ‫•‬

‫باستعماله‪.‬‬

‫عيب من عي وب هتذه الطريقتتة هتي أن ملفتا ت التطتبيق ل توض ع فتي مسكتان قياستي فتي ظنظتتام‬

‫الملفا ت‪ ،‬المر التذي قتتد يستبب فوضتتى؛ عيتتب آختتر كتبير هتو تحتتديث التطتتبيق‪ ،‬فعنتد إصتدار ظنستخة‬

‫جديدة منه‪ ،‬فيجب إجراء ظنفس عملية تثبيت التطبيق لتحديثه‪.‬‬

‫لحسن الحظ‪ ،‬هنالك عدد من تطبيقا ت ‪ LAMP‬نمحنزمة في أوبنتو‪ ،‬ومتوفرة للتثبيت كغيرها‬

‫من التطبيقتتا ت؛ لسكتن حستتب التطتتبيق‪ ،‬فربمتتا هنالتك خطتوا ت أختترى للضتتبط والعتداد؛ سيشتترح هتتذا‬

‫الفصل تثبيت بعض تطبيقا ت ‪.LAMP‬‬

‫▲‬ ‫‪| 370‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫‪ .1‬تطبيق ‪Moin Moin‬‬


‫إن ‪ MoinMoin‬هو محرك ويسكي مسكتوب بلغة بايثون ومبني على محرك الويسكي ‪PikiPiki‬‬

‫ومرخص برخصة ‪.GUN GPL‬‬

‫ا‪ .‬التثبيت‬

‫ظندفذ المر التي لتثبيت ‪:MoinMoin‬‬

‫‪sudo apt-get install python-moinmoin‬‬

‫يجتتب أن تسكتتون قتتد ثبتتتت ختتادوم أباتشتتي؛ رجتتاصء راجتتع » الفصتتل الحتتادي عشتتر« لمزيتتتد متتن‬

‫المعلوما ت حول تثبيت أباتشي‪.‬‬

‫ب‪ .‬الضبط‬

‫لضتتبط أول تطتتبيق ويسكتتي ختتاص بتتك‪ ،‬فعليتتك تنفيتتذ سلستتلة الوامتتر التيتتة؛ علتتى فتترض أظنتتك‬

‫نتنششئ »ويسكي« باسم ‪:mywiki‬‬

‫‪cd /usr/share/moin‬‬
‫‪sudo mkdir mywiki‬‬
‫‪sudo cp -R data mywiki‬‬
‫‪sudo cp -R underlay mywiki‬‬
‫‪sudo cp server/moin.cgi mywiki‬‬
‫‪sudo chown -R www-data.www-data mywiki‬‬
‫‪sudo chmod -R ug+rwX mywiki‬‬
‫‪sudo chmod -R o-rwx mywiki‬‬

‫▲‬ ‫‪| 371‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫يجتتتتتتتب الن أن تضتتتتتتتبط ‪ MoinMoin‬لسكتتتتتتتي يتتتتتتترى التتتتتتتويسكي الجديتتتتتتتد ‪mywiki‬؛ لضتتتتتتتبط‬

‫‪ ،MoinMoin‬افتح الملف ‪ /etc/moin/mywiki.py‬وعددل السطر التي‪:‬‬

‫'‪data_dir = '/org/mywiki/data‬‬

‫إلى‪:‬‬

‫'‪data_dir = '/usr/share/moin/mywiki/data‬‬

‫أي ص‬
‫ضا‪ ،‬تحت الخيار ‪ ،data_dir‬أضف الخيار ‪:data_underlay_dir‬‬

‫'‪data_underlay_dir='/usr/share/moin/mywiki/underlay‬‬

‫ملحظة‪ :‬إذا لم يسكن الملف ‪ /etc/moin/mywiki.py‬موجوصدا‪ ،‬فعليك ظنستخ ‪/usr/share/moin/config/wik‬‬


‫‪ ifarm/mywiki.py‬إلى ‪ /etc/moin/mywiki.py‬ثم تنفيذ التغيير المذكور آظنصفا‪.‬‬

‫ملحظة‪ :‬إذا سميت الويسكي باسم ‪ ،my_wiki_name‬فيجب إضافة الستتطر )"*‪ ("my_wiki_name",r".‬إلتتى‬
‫ملف ‪ /etc/moin/farmconfig.py‬بعد السطر )"*‪.("mywiki", r".‬‬

‫بعتتد أن تضتتبط ‪ MoinMoin‬ليعتتثر علتتى أول تطتتبيق ويسكتتي ‪ mywiki‬عليتتك ضتتبط أباتشتتي‬

‫وجعله جاهصزا لتطبيق الويسكي‪.‬‬

‫▲‬ ‫‪| 372‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫يجتتتب أن نتضتتتيف الستتتطر التيتتتة فتتتي ملتتتف ‪/etc/apache2/sites-available/default‬‬

‫ضمن الوسم‬

‫‪<VirtualHost *>:‬‬
‫‪### moin‬‬
‫"‪ScriptAlias /mywiki "/usr/share/moin/mywiki/moin.cgi‬‬
‫"‪alias /moin_static193 "/usr/share/moin/htdocs‬‬
‫>‪<Directory /usr/share/moin/htdocs‬‬
‫‪Order allow,deny‬‬
‫‪allow from all‬‬
‫>‪</Directory‬‬
‫‪### end moin‬‬

‫بعد أن تضبط خادوم أباتشي وتجعله جاه صزا لتطتبيق التويسكي‪ ،‬يجتب عليتك أن تعيتتد تشتتغيله‪،‬‬

‫وذلك بإدخال المر التي لعادة تشغيل خادوم أباتشي‪:‬‬

‫‪sudo service apache2 restart‬‬

‫ج‪ .‬التجربة‬

‫للتأكد من عمل تطبيق الويسكي‪ ،‬ودجه متصفحك للوصلة التية‪:‬‬

‫‪http://localhost/mywiki‬‬

‫للمزيد من المعلوما ت‪ ،‬راجع موقع ‪ MoinMoin‬الرسمي‪.‬‬

‫د‪ .‬مصادر‬

‫للمزيد من المعلوما ت اظنظر إلى ويسكي »‪.«moinmoin‬‬ ‫•‬

‫أي ص‬
‫ضا‪ ،‬صفحة ويسكي أوبنتو »‪.«MoinMoin‬‬ ‫•‬

‫▲‬ ‫‪| 373‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫‪ .2‬تطبيق ‪MediaWiki‬‬
‫إن ‪ MediaWiki‬هتتتي برمجيتتتة ‪ Wiki‬مبنيتتتة علتتتى التتتويب مسكتوبتتتة بلغتتتة ‪PHP‬؛ يمسكنهتتتا أن‬

‫تستخدم ظنظام إدارة قواعد بياظنا ت ‪ MySQL‬أو ‪.PostgreSQL‬‬

‫ا‪ .‬التثبيت‬

‫قبتتل تثتتبيت ‪ ،MediaWiki‬يجتتب عليتتك تثتتبيت أباتشتتي ولغتتة برمجتتة ‪ PHP5‬وظنظتتام إدارة‬

‫قواعتتد بياظنتتا ت؛ وأشتتهرها ‪ MySQL‬أو ‪ ،PostgreSQL‬اختتتر واحتتصدا بنتتاصء علتتى احتياجاتتتك‪ ،‬رجتتاصء‬

‫ارجع إلى القسام التي تشرح تثبيتها في هذا السكتاب للمزيد من المعلوما ت‪.‬‬

‫ظندفذ المر التي في الطرفية لتثبيت ‪:MediaWiki‬‬

‫‪sudo apt-get install mediawiki php5-gd‬‬

‫لوظائف ‪ MediaWiki‬إضافية‪ ،‬اظنظر إلى الحزمة ‪.mediawiki-extensions‬‬

‫ب‪ .‬الضبط‬

‫ملتتتف ضتتتبط أباتشتتتي ‪ mediawiki.conf‬مثنبتتت ة‬


‫ت فتتتي ‪،/etc/apache2/conf-available/‬‬

‫يجب عليك إزالة التعليق من السطر التي للوصول إلى تطبيق ‪:MediaWiki‬‬

‫‪# Alias /mediawiki /var/lib/mediawiki‬‬

‫▲‬ ‫‪| 374‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫بعد أن نتزيل التعليق من السطر الستتابق‪ ،‬فف دعتتل الضتتبط ثتتم أعتتد تشتتغيل ختتادوم أباتشتتي ثتتم ادختتل‬

‫إلى ‪ MediaWiki‬عبر الرابط التي ‪:http://localhost/mediawiki/config/index.php‬‬

‫‪sudo a2enconf mediawiki.conf‬‬


‫‪sudo service apache2 restart‬‬

‫تنظظويه‪ :‬رجتتاصء اقترأ القستتم »‪ «Checking environment...‬فتتي تلتتك الصتتفحة؛ ستتتسكون قتادصرا علتتى حتتل مشتتاكل‬
‫عديدة بقراءة هذا القسم بحذر‪.‬‬

‫بعتتتتد إكمتتتتتال الضتتتتبط‪ ،‬يجتتتتب عليتتتتك أن تنقتتتتل الملتتتتف ‪ LocalSettings.php‬إلتتتتى المجلتتتتد‬

‫‪:/etc/mediawiki‬‬

‫\ ‪sudo mv /var/lib/mediawiki/config/LocalSettings.php‬‬
‫‪/etc/mediawiki/‬‬

‫ربما تريتتد أي ص‬
‫ضتتا تعتديل ‪ /etc/mediawiki/LocalSettings.php‬لسكتي تضتبط حتتد التتذاكرة‬

‫القصى )معنطل افتراضصيا(‪:‬‬

‫;) '‪ini_set( 'memory_limit', '64M‬‬

‫ج‪ .‬الضاافات‬

‫تودفر الضافا ت ميزا ت وتحسينا ت على تطتتبيق ‪MediaWiki‬؛ تمنتتح هتتذه الضتتافا ت متتدراء‬

‫الويسكي والمستخدمين النهائيين القدرة على تخصيص ‪ MediaWiki‬لتناسب احتياجاتهم‪.‬‬

‫▲‬ ‫‪| 375‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫يمسكنتتك تنزيتتل إضتتافا ت ‪ MediaWiki‬كأرشتتيف أو عتتبر ستتحبها )‪ (checkout‬متتن مستتتودع‬

‫‪Subversion‬؛ عليك أن تنسخها إلتتى مجلتتد ‪/var/lig/mediawiki/extensions‬؛ يجتتب عليتتك‬

‫أي ص‬
‫ضا إضافة السطر التي في ظنهاية الملف ‪:/etc/mediawiki/LocalSettings.php‬‬

‫;"‪require_once "$IP/extensions/ExtentionName/ExtentionName.php‬‬

‫د‪ .‬مصادر‬

‫للمزيد من المعلوما ت‪ ،‬رجاصء راجع موقع ‪.MediaWiki‬‬ ‫•‬

‫يحتوي كتاب » ‪ «MediaWiki Administrators’ Tutorial Guide‬على معلومتتا ت‬


‫ ت‬ ‫•‬

‫قيمة لمدراء ‪ MediaWiki‬الجدد‪.‬‬

‫صفحة ويسكي أوبنتو »‪ «MediaWiki‬هي مصدةر جيةد أي ص‬


‫ضا‪.‬‬ ‫•‬

‫▲‬ ‫‪| 376‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫‪ .3‬تطبيق ‪phpMyAdmin‬‬
‫صتتا لدارة ختتواديم ‪ ،MySQL‬وهتتو‬
‫إن ‪ phpMyAdmin‬هتتو تطتتبيق ‪ LAMP‬مسكتتتوب خصي ص‬

‫مبرمج بلغة ‪ ،PHP‬ويمسكن الوصول إليه عبر متصفح الويب‪ ،‬حيث يودفر ‪ phpMyAdmin‬واجهة‬

‫رسومية لمهام إدارة قواعد البياظنا ت‪.‬‬

‫ا‪ .‬التثبيت‬

‫قبل تثبيت ‪ phpMyAdmin‬فستحتاج إلى وصول إلى قاعدة بياظنا ت ‪ MySQL‬سواصء على‬

‫ظنفتتس المضتتيف التتذي ستتنيثنبت عليتته ‪ phpMyAdmin‬أو علتتى مضتتيف آختتر متتتوفر عتتبر الشتتبسكة؛‬

‫للمزيد من المعلومتا ت حتول ‪ MySQL‬فتاظنظر إلتتى القستتم الختتاص بهتتا فتي هتذا السكتتتاب؛ أد ش‬
‫ختتل المتتر‬

‫التي لتثبيت ‪:phpMyAdmin‬‬

‫‪sudo apt-get install phpmyadmin‬‬

‫ستتتتتتظهر لتتتتتك ظنافتتتتتذة لختيتتتتتار أي ختتتتتادوم ويتتتتتب سنيضتتتتتنبط ليستتتتتتخدمه ‪phpMyAdmin‬؛‬

‫سنستخدم لبقية هذا القسم خادوم أباتشي كخادوم ويب‪.‬‬

‫في المتصفح‪ ،‬اذهب إلى ‪ http://server/phpmyadmin‬مستبدصل ‪ server‬باسم مضيف‬

‫الختتادوم الحقيقتتي؛ وعنتتد صتتفحة تستتجيل التتدخول‪ ،‬اكتتتب ‪ root‬فتتي حقتتل استتم المستتتخدم‪ ،‬أو أي‬

‫مستخدم ‪ MySQL‬إذا كنت قد أعدد ت واحصدا؛ ثم أدخل كلمة مرور ذاك المستخدم‪.‬‬

‫بعد تسجيل الدخول‪ ،‬تستطيع إعتتادة ضتبط كلمتة متترور الجتتذر إن كتان ذلتك ضترورصيا‪ ،‬وإظنشتاء‬

‫المستخدمين‪ ،‬وإظنشاء أو حذف قواعد البياظنا ت والجداول ‪...‬إلخ‪.‬‬

‫▲‬ ‫‪| 377‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫ب‪ .‬الضبط‬

‫ملفا ت الضبط الخاصة ببرمجية ‪ phpMyAdmin‬موجودةة في مجلد ‪/etc/phpmyadmin‬؛‬

‫ملتتتف الضتتتبط الرئيستتتي هتتتو ‪ /etc/phpmyadmin/config.inc.php‬يحتتتتوي هتتتذا الملتتتف خيتتتارا ت‬

‫الضبط التي نتطنبق عموصما على ‪.phpMyAdmin‬‬

‫لستخدام ‪ phpMyAdmin‬لدارة قواعد بياظنا ت ‪ MySQL‬على خادوم آخر‪ ،‬عتتددل قيمتتة متتا‬

‫يلي في ملف ‪:/etc/phpmyadmin/config.inc.php‬‬

‫;'‪$cfg['Servers'][$i]['host'] = 'db_server‬‬

‫ملحظظظة‪ :‬استتتبدل ‪ db_server‬باستتم مضتتيف الختتادوم البعيتتد أو عنتتوان ‪ IP‬الختتاص بتته؛ أي ص‬


‫ضتتا تأكتتد أن مضتتيف‬
‫‪ phpMyAdmin‬لديه الذوظنا ت السكافية للوصول إلى قاعدة البياظنا ت البعيدة‪.‬‬

‫بعتتتد ضتتتبطه‪ ،‬ستتتجل خروجتتتك متتتن ‪ phpMyAdmin‬ثتتتم أعتتتد تستتتجيل التتتدخول‪ ،‬ويجتتتب أن‬

‫تستطيع الوصول إلى الخادوم الجديد‪.‬‬

‫الملفتتتتتتان ‪ config.header.inc.php‬و ‪ config.footer.inc.php‬يستتتتتتتخدمان لضتتتتتتافة‬

‫ترويسة وتذييل ‪ HTML‬إلى ‪.phpMyAdmin‬‬

‫ملف ضبط آخر مهم هو ‪ ،/etc/phpmyadmin/apache.conf‬توجد وصتتلة رمزيتتة لهتتذا الملتتف‬

‫فتتتي ‪ /etc/apache2/conf.d/phpmyadmin.conf‬ونيستتتتخندم لضتتتبط أباتشتتتي لتختتتديم صتتتفحا ت‬

‫‪phpMyAdmin‬؛ يحتوي هذا الملف على تعليما ت لتحميل ‪ ،PHP‬وأذوظنا ت المجلد ‪...‬إلخ‪.‬‬

‫▲‬ ‫‪| 378‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫ج‪ .‬مصادر‬

‫يتتتتأتي توثيتتتتق ‪ phpMyAdmin‬مثب صتتتتا متتتتع الحزمتتتتة ويمسكتتتتن الوصتتتول إليتتته متتتتن وصتتتلة‬ ‫•‬

‫»‪ «phpMyAdmin Documentation‬تحت شعار ‪phpMyAdmin‬؛ يمسكن الوصول‬

‫إلى التوثيق الرسمي أي ص‬


‫ضا في موقع ‪.phpMyAdmin‬‬

‫كتاب »‪ «Mastering phpMyAdmin‬هو مصدر جيد للمعلوما ت‪.‬‬ ‫•‬

‫مصدر ثالث هو صفحة ويسكي أوبنتو »‪.«phpMyAdmin‬‬ ‫•‬

‫▲‬ ‫‪| 379‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ LAMP ‫تطبيقا ت‬

Wordpress ‫ تطبيق‬.4
‫ وظنظتتام إدارة محتتتوى مسكتوبتتة‬،‫ ومنصتتة ظنشتتر‬،‫( هتتي أداة تتتدوين‬Wordpress) ‫إن وردبريتتس‬

.GNU GPLv2 ‫ ومرخصة برخصة‬PHP ‫بلغة‬

‫ التثبيت‬.‫ا‬

:‫ظندفذ المر التي في سطر الوامر لتثبيت وردبريس‬

sudo apt-get install wordpress

‫؛ راجتتتع القستتتام التتتتي نتعنتتتى‬MySQL ‫ضتتتا تثتتتبيت ختتتادوم أباتشتتتي وختتتادوم‬


‫يجتتتب عليتتتك أي ص‬

.‫بتثبيتهما وإعدادهما في هذا السكتاب‬

‫ الضبط‬.‫ب‬

/etc/apache2/sites- ‫ فعليك ضبط موقع أباتشي؛ افتح الملف‬،‫لضبط أول تطبيق وردبريس‬

:‫ وضع فيه السطر التية‬available/wordpress.conf

Alias /blog /usr/share/wordpress


<Directory /usr/share/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/wordpress/wp-content>
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

▲ | 380
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫ثم فدعل الموقع الجديد‪:‬‬

‫‪sudo a2ensite wordpress‬‬

‫بعتتد أن اظنتهيتتت متتن ضتتبط ختتادوم أباتشتتي‪ ،‬وجعلتتته جتتاهصزا لتطتتبيق وردبريتتس‪ ،‬فعليتتك الن‬

‫إعادة تشغيله وذلك بتنفيذ المر التي‪:‬‬

‫‪sudo service apache2 restart‬‬

‫لتبسيط تشغيل عددة ظنسخ متن وردبريتس‪ ،‬فست دم ملتف الضتبط بنتتاصء علتى استم المضتيف؛ وهتذا‬

‫يعنتي أظنتك تستتطيع أن تملتك عت ددة مضتيفين وهمييتن بمطابقتتة استم المضتيف ف ي ملتف الضتبط متع‬

‫ملتتتتف استتتتم المضتتتتيف التتتتوهمي فتتتتي أباتشتتتتي؛ فعلتتتتى ستتتتبيل المثتتتتال‪ ،‬تسكتتتتون أستتتتماء الملفتتتتا ت هتتتتي‬

‫‪ ، /etc/wordpress/config-10.211.55.50.php‬أو قتتتتتتتتتتد تسكتتتتتتتتتتون علتتتتتتتتتتى ستتتتتتتتتتبيل المثتتتتتتتتتتال‪:‬‬

‫‪ … /etc/wordpress/config-hostalias1.php‬إلخ‪.‬‬

‫هتتتذه التعليمتتتا ت تفتتتترض أظنتتتك تستتتتطيع الوصتتتول إلتتتى أباتشتتتي عتتتبر المضتتتيف المحلتتتي )ربمتتتا‬

‫باستتتتتتخدام ظنفتتتتتق ‪(SSH‬؛ إذا لتتتتتم يسكتتتتتن ذلتتتتتك هتتتتتو المتتتتتر‪ ،‬فاستتتتتتبدل ‪/etc/wordpress/config-‬‬

‫‪ localhost.php‬بالسم ‪./etc/wordpress/config/NAME_OF_VIRTUAL_HOST.php‬‬

‫بعتتتد أن نيسك نتتتتب ملتتتف الضتتتبط‪ ،‬فعليتتتك اختيتتتار ظنمتتتط لستتتماء مستتتتخدمي ‪ MySQL‬وكلمتتتا ت‬

‫مرورهم لسكل ظنسخة وردبريس؛ لسكن سنعرض في هذا السكتاب مثال واحد هو ‪ localhost‬فقط‪.‬‬

‫▲‬ ‫‪| 381‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ LAMP ‫تطبيقا ت‬

/etc/wordpress ‫؛ افتح الملتتف‬MySQL ‫علينا الن ضبط وردبريس لستخدام قاعدة بياظنا ت‬

:‫ واكتب السطر التية‬/config-localhost.php

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'yourpasswordhere');
define('DB_HOST', 'localhost');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

‫ فيتتته أوامتتتر‬wordpree.sql ‫ وذلتتتك بفتتتتح ملتتتف متتتؤقت باستتتم‬،‫ثتتتم أظن ششتتتئ قاعتتتدة البياظنتتتا ت‬

:‫ التية‬MySQL

CREATE DATABASE wordpress;


GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
ON wordpress.*
TO wordpress@localhost
IDENTIFIED BY 'yourpasswordhere';
FLUSH PRIVILEGES;

:‫ السابقة بالمر‬MySQL ‫ظندفذ أوامر‬

cat wordpress.sql | sudo mysql \


--defaults-extra-file=/etc/mysql/debian.cnf

‫يجتتتتتتتتتتب أن تسكتتتتتتتتتتون ظنستتتتتتتتتتخة وردبريتتتتتتتتتتس عنتتتتتتتتتتدك قابلتتتتتتتتتتة للضتتتتتتتتتتبط بزيتتتتتتتتتتارة الوصتتتتتتتتتتلة‬

‫ ثتتم اكتتتب استتم الموقتتع واستتم المستتتخدم‬،http://localhost/blog/wp-admin/install.php

.«‫وكلمة المرور وبريدك اللسكتروظني ثم اضغط على »تثبيت وردبريس‬

▲ | 382
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت ‪LAMP‬‬

‫لحظ كلمة المرور النمونلدة إن لم تختر واحدصة‪ ،‬ثم سدجل دخولك إلى لوحة تحسكم وبرديس‪.‬‬

‫ج‪ .‬مصادر‬

‫توثيق ‪.Wordpress.org Codex‬‬ ‫•‬

‫صفحة ويسكي أوبنتو المسماة »‪.«WordPress‬‬ ‫•‬

‫▲‬ ‫‪| 383‬‬


‫خواديم الملفات‬
‫‪14‬‬

‫▲‬ ‫‪| 384‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫إذا كتتان لتتديك أكتتثر متتن حاستتوب فتتي ظنفتتس الشتتبسكة‪ ،‬فعنتتد حتت ي‬
‫د معنيتتن ستتتحتاج إلتتى مشتتاركة‬

‫الملفا ت بين تلك الحواسيب؛ ظنشرح في هذا الفصل تثبيت وضبط ‪ ،FTP‬و ‪ ،NFS‬و ‪.CUPS‬‬

‫‪ .1‬خادوم ‪FTP‬‬
‫بروتوكتتول ظنقتتل الملفتتا ت ) ‪ File Transfer Protocol‬اختصتتاصرا ‪ (FTP‬هتتو بروتوكتتول ‪TCP‬‬

‫لتنزيل الملفا ت بين الحواسيب؛ في الماضي‪ ،‬كان نيستتخدم أي ص‬


‫ضتا لرفتع الملفتا ت‪ ،‬لسكتن هتذه الطريقتتة‬

‫ل توفر إمسكاظنية التشفير‪ ،‬وسنتن نقل معلومتا ت المستتخدم متع البياظنتتا ت فتي صتيغة ستهلة التفستير؛ إذا‬

‫ق ظنظتترصة علتى قستتم ‪ OpenSSH‬فتي‬


‫كنتتت تبحتث هنتتا عتتن طريقتتة آمنتتة لرفتع أو تنزيتل الملفتا ت‪ ،‬فتتأل ش‬

‫الفصل السادس‪.‬‬

‫يعمل ‪ FTP‬وفق ظنمط »عميل‪/‬ختادوم«؛ حيتث نتستمى مسكوظنتة ‪ FTP‬فتتي الختتادوم »عفريتتت ‪،«FTP‬‬

‫التتذي يستتتمع بشتتسكل متواصتتل لطلبتتا ت ‪ FTP‬متتن العملء البعيتتدين؛ وعنتتد وصتتول طلتتب‪ ،‬فتتإظنه يجتتري‬

‫يء التصال‪ ،‬وسنتننفذ الوامر النمرنسلة من عميل ‪ FTP‬أثناء مدة عمل الجلسة‪.‬‬
‫عملية الدخول ونيه د‬

‫يمسكن الوصول إلى خادوم ‪ FTP‬بإحدى الطريقتين‪:‬‬

‫مستخدم مجهول‪.‬‬ ‫•‬

‫مستخدم موثوق‪.‬‬ ‫•‬

‫في ظنمط المستخدم المجهول )‪(Anonymous‬؛ يمسكن للعملء البعيدين الوصول إلى ختتادوم‬

‫‪ FTP‬بحستتاب المستتتخدم الفتراضتتي النمستتمى »‪ «anonymous‬أو »‪ «ftp‬ويرستتلون عنتتوان بريتتد‬

‫إلسكتتروظني كسكلمتة مترور؛ أمتا فتي ظنمتط المستتخدم الموث وق‪ ،‬فيجتب علتى المستتخدم امتلك حستاب‬

‫وكلمتتتتة متتتترور؛ الخيتتتتار الثتتتتاظني غيتتتتر آمتتتتن أبتتتت صدا ول يجتتتتب أن يستتتتتخدم إل فتتتتي الحتتتتال ت الخاصتتتتة؛‬

‫▲‬ ‫‪| 385‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫إذا كنت تبحث عن طريقة آمنة لنقل الملفا ت‪ ،‬فاظنظر إلى ‪ SFTP‬في ‪ .OpenSSH-Server‬وصول‬

‫المستتخدم إلتتى مجلتدا ت وملفتا ت ختتادوم ‪ FTP‬يتعلتق بالذوظنتتا ت المعطيتتة للحستتاب أثنتتاء تستتجيل‬

‫الدخول؛ وكقاعدة عامة‪ ،‬سيخفي عفريتت ‪ FTP‬المجلتد الجتذر لختادوم ‪ FTP‬وستيحول المستتخدم‬

‫إلى مجلد منزل ‪FTP‬؛ وهذا سيخفي بقية ظنظام الملفا ت من الجلسا ت البعيدة‪.‬‬

‫ا‪ .‬تثبيت تخادوم ‪«vsftpd» FTP‬‬

‫إن ‪ vsftpd‬هتتتو عفريتتتت ‪ FTP‬متتتتوفر فتتتي أوبنتتتتو‪ ،‬ومتتتن الستتتهل تثتتتبيته وإعتتتداده وصتتتياظنته؛‬

‫لتثبيت ‪ ،vsftpd‬عليك تنفيذ المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install vsftpd‬‬

‫ب‪ .‬ضبط الوصول المجهول لخادوم ‪FTP‬‬

‫افتراضتتتصيا‪ ،‬لتتتم نيضتتتنبط ‪ vsftpd‬للستتتماح للمستتتتخدمين المجهتتتولين بالتنزيتتتل؛ إذا كنتتتت تريتتتد‬

‫السماح لهم بالتنزيل‪ ،‬فعددل الملف ‪ /etc/vsftpd.conf‬مغديصرا‪:‬‬

‫‪anonymous_enable=Yes‬‬

‫سنيننشتتأ مستتتخدم باستتم ‪ ftp‬متتع مجلتتد المنتتزل ‪ /srv/ftp‬أثنتتاء التثتتبيت؛ هتتذا هتتو مجلتتد ‪FTP‬‬

‫الفتراضي‪.‬‬

‫▲‬ ‫‪| 386‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫إذا أرد ت تغييتتر هتتذا المستتار إلتتى ‪ /srv/files/ftp‬علتتى ستتبيل المثتتال‪ ،‬فببستتاطة أظنششتتئ مجلتتصدا‬

‫في مسكاتن آخر‪ ،‬وغدير مجلد المنزل للمستخدم ‪:ftp‬‬

‫‪sudo mkdir /srv/files/ftp‬‬


‫‪sudo usermod -d /srv/files/ftp‬‬

‫أعد تشغيل الخدمة ‪ vsftpd‬بعد عمل التغيرا ت السابقة‪:‬‬

‫‪sudo restart vsftpd‬‬

‫في النهاية‪ ،‬اظنسخ أ ديتة ملفتتا ت ومجلتدا ت تريتد للمستتخدمين المجهتولين تنزيلهتتا عتتبر ‪ ftp‬إلتى‬

‫‪ /srv/files/ftp‬أو إلى ‪ /srv/ftp‬إذا أبقيت على العدادا ت الفتراضية‪.‬‬

‫ج‪ .‬ضبط ‪ FTP‬للستيثاق من المستخدمين‬

‫افتراضتتصيا‪ ،‬يسكتتون ‪ vsftpd‬مضتتبو صطا علتتى الستتتيثاق متتن مستتتخدمي النظتتام والستتماح لهتتم‬

‫بتنزيل الملفا ت؛ إذا أرد ت السماح للمستخدمين برفع الملفا ت‪ ،‬فعددل الملف ‪:/etc/vsftpd.conf‬‬

‫‪write_enable=YES‬‬

‫ثم أعد تشغيل ‪:vsftpd‬‬

‫‪sudo restart vsftpd‬‬

‫الن عنتتدما يتصتتل مستتتخدمو النظتتام عتتبر ‪ ،FTP‬فستتيبدؤون فتتي مجلتتد المنتتزل الختتاص بهتتم‪،‬‬

‫حيث يستطيعون تنزيل أو رفع الملفا ت أو إظنشاء المجلدا ت ‪...‬إلخ‪.‬‬

‫▲‬ ‫‪| 387‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫وبشسكتل مشابه‪ ،‬ل نيسنمح افتراض صيا للمستتخدمين المجهتولين برفتع الملفتا ت إلتى ختادوم ‪FTP‬؛‬

‫لتغيير ذلك العداد عليك أن نتزيل التعليق عن السطر التي ونتعيد تشغيل خدمة ‪:vsftpd‬‬

‫‪anon_upload_enable=YES‬‬

‫تحذير‪ :‬إن الستماح للمستتخدمين المجهتتولين برفتع الملفتتا ت إلتتى الختتادوم هتتو أمتةر خطيتةر جتصدا‪ ،‬ول نيف ن‬
‫ضتتل أبتصدا أن‬
‫نيسنمح للمستخدمين المجهولين برفع الملفا ت مباشرصة من الظنترظنت‪.‬‬

‫يحتتوي ملتتف الضتبط علتى العديتتد متتن خيتارا ت الضتتبط؛ توجتتد معلومتتا ت حتول كتل خيتتار فتي‬

‫ملف الضبط؛ ويمسكنك مراجعة صفحة التدليل ‪ man 5 vsftpd.conf‬للمزيتد متن التفاصتيل حتول‬

‫كل إعداد‪.‬‬

‫د‪ .‬تأمين ‪FTP‬‬

‫هنالك خيارا ت في ‪ /etc/vsftpd.conf‬للمساعدة في جعتتل ‪ vsftpd‬أكتتثر أماصظنتتا؛ فمثصل يمسكتتن‬

‫أن يق ديد وصول المستخدمين إلى مجلدا ت المنزل الخاصة بهم بإزالة التعليق عن السطر‪:‬‬

‫‪chroot_local_users=YES‬‬

‫يمسكنك أن تق ديد قائمة محددة من المستخدمين إلى مجلدا ت المنزل الخاصة بهم فقط‪:‬‬

‫‪chroot_list_enable=YES‬‬
‫‪chroot_list_file=/etc/vsftpd.chroot_list‬‬

‫▲‬ ‫‪| 388‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫بعتتتد إزالتتتة التعليتتتق عتتتن الخيتتتارا ت الستتتابقة؛ أظنششتتتئ ملتتتف ‪ /etc/vsftpd.chroot_list‬التتتذي‬

‫يحتوي على قائمة بالمستخدمين المسموح لهم واحصدا في كل سطر؛ ثم أعد تشغيل ‪:vsftpd‬‬

‫‪sudo restart vsftpd‬‬

‫يحتوي الملف ‪ /etc/ftpusers‬أي ص‬


‫ضا علتى قائمتة بالمستتخدمين غيتر المستموح لهتم بالوصتول‬

‫إلتتى ‪FTP‬؛ القائمتتة الفتراضتتية تتضتتمن ‪ ،root‬و ‪ ،daemon‬و ‪... nobody‬إلتتخ‪ .‬لتعطيتتل الوصتتول‬

‫إلى ‪ FTP‬لمستخدمين آخرين‪ ،‬فأضفهم ببساطة إلى القائمة‪.‬‬

‫يمسكن أن نيشنفر ‪ FTP‬باستخدام ‪ ،FTPS‬الذي يختلف عتن ‪SFTP‬؛ ‪ FTPS‬هتو ‪ FTP‬عتبر طبقتة‬

‫المقتتابس المنتتة ) ‪(SSL‬؛ إن ‪ SFTP‬هتتو مثتتل جلستتة ‪ FTP‬عتبر اتصتتال ‪ SSH‬مشتتفر؛ اختلف رئيستتي‬

‫هو أن مستخدمي ‪ SFTP‬يجب أن يملسكوا حساب‬

‫»‪ «shell‬على النظام‪ ،‬بدصل من صدفة ‪nologin‬؛ قد ل يسكون توفير صدفة لسكتتل المستتتخدمين‬

‫أمصرا ملئصما في بعض البيئا ت مثل خادوم ويب مشترك؛ لسكن من الممسكن تقييد مثل هذه الحستتابا ت‬

‫إلى ‪ SFTP‬فقط وتعطيل التعامل مع الصدفة‪ ،‬راجع قسم ‪ OpenSSH‬لمزيتد من المعلوما ت‪.‬‬

‫لضبط ‪ ،FTPS‬عددل الملف ‪ /etc/vsftpd.conf‬وأضف في النهاية‪:‬‬

‫‪ssl_enable=Yes‬‬

‫▲‬ ‫‪| 389‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫أي ص‬
‫ضا‪ ،‬لحظ الخيارا ت المتعلقة بالشهادة والمفتاح‪:‬‬

‫‪rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem‬‬
‫‪rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key‬‬

‫ضتتشبنطت هتتذه الخيتتارا ت افتراضتت صيا إلتتى الشتتهادة والمفتتتاح المتتوفر متتن الحزمتتة ‪ssl-sert‬؛ لسكتتن‬
‫ن‬

‫يجتتب استتتبدالهما فتتي البيئتتتا ت الظنتاجيتتة بالشتتهادة والمفتتتاح النمونلتتد لمضتتيف محتتدد؛ للمزيتتد متتن‬

‫المعلوما ت حول الشهادا ت‪ ،‬راجع »الفصل التاسع‪ :‬الحماية«‪.‬‬

‫أعد الن تشغيل ‪ ،vsftpd‬وسنيجبر المستخدمون غير المجهولين على استخدام ‪:FTPS‬‬

‫‪sudo restart vsftpd‬‬

‫للستتتماح للمستتتتخدم بصتتتدفة ‪ /usr/sbin/nologin‬بالوصتتتول إلتتتى ‪ ،FTP‬لسكتتتن عتتتدم امتلك‬

‫وصول للصدفة‪ ،‬فعددل ملف ‪ /etc/shells‬مضيصفا الصدفة ‪:nologin‬‬

‫‪# /etc/shells: valid login shells‬‬


‫‪/bin/csh‬‬
‫‪/bin/sh‬‬
‫‪/usr/bin/es‬‬
‫‪/usr/bin/ksh‬‬
‫‪/bin/ksh‬‬
‫‪/usr/bin/rc‬‬
‫‪/usr/bin/tcsh‬‬
‫‪/bin/tcsh‬‬
‫‪/usr/bin/esh‬‬
‫‪/bin/dash‬‬
‫‪/bin/bash‬‬
‫‪/bin/rbash‬‬
‫‪/usr/bin/screen‬‬
‫‪/usr/sbin/nologin‬‬

‫▲‬ ‫‪| 390‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫هتتذا ضتترورةي لن ‪ vsftpd‬يستتتخدم ‪ PAM‬افتراضتتصيا للستتتيثاق؛ والملتتف ‪/etc/pam.d/vsftpd‬‬

‫يحتوي على‪:‬‬

‫‪auth‬‬ ‫‪required‬‬ ‫‪pam_shells.so‬‬

‫الصدفا ت التي تسمح الوحدة ‪ PAM‬لها بالوصول هي الصدفا ت المذكورة في ملف ‪./etc/shells‬‬

‫يمسكتتن ضتتبط أغلبيتتة عملء ‪ FTP‬الشتتهيرين ليتصتتلوا عتتبر ‪ .FTPS‬الداة ‪ lftp‬التتتي تعمتتل متتن‬

‫سطر الوامر لها إمسكاظنية استخدام ‪ FTPS‬أي ص‬


‫ضا‪.‬‬

‫ه‪ .‬مصادر‬

‫راجع موقع ‪ vsftpd‬الرسمي لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫لتفاصيل الخيارا ت في ‪ /etc/vsftpd.conf‬راجع صفحة دليل ‪.vsftpd.conf‬‬ ‫•‬

‫▲‬ ‫‪| 391‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫‪ .2‬نظام ملفات الشبكة ‪NFS‬‬


‫يسمح ‪ NFS‬للنظام بمشاركة المجلدا ت والملفا ت مع الخرين عتتبر الشتتبسكة؛ إذ يمسكتتن للمستتتخدمين‬

‫والبرامج الوصول إلى الملفا ت في الظنظمة البعيدة كأظنها ملفا ة‬


‫ ت محلية باستخدام ‪.NFS‬‬

‫بعض الميزا ت الملحوظة التي يوفرها استخدام ‪:NFS‬‬

‫محطا ت العمل المحلية تستهلك مساحة قرص أقل لظنهتا تستتخدم بياظنتتا ت يمسكتن تخزينهتا‬ ‫•‬

‫على جهاز واحد وتبقى متاحصة للبقية عبر الشبسكة‪.‬‬

‫ل توجتد حاجتة لنين نشتتأ للمستتخدمين مجلتدا ت منتزل منفصتلة فتي كتل جهتاز ش بسكي؛ حيتث‬ ‫•‬

‫يمسكن ضبط مجلدا ت المنزل على خادوم ‪ NFS‬وتتوفر للجميع عبر الشبسكة‪.‬‬

‫أجهزة التخزين مثل سواقا ت ‪ CD-ROM‬وأقراص ‪ USB‬يمسكن استتخدامها متتن الجهتتزة الختترى‬ ‫•‬

‫على الشبسكة‪ ،‬وربما يقلل هذا من عدد مشغل ت الوسائط القابلة للزالة في الشبسكة‪.‬‬

‫ا‪ .‬التثبيت‬

‫أدخل المر التي في الطرفية لتثبيت خادوم ‪:NFS‬‬

‫‪sudo apt-get install nfs-kernel-server‬‬

‫▲‬ ‫‪| 392‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫ب‪ .‬الضبط‬

‫تستطيع ضبط المجلدا ت لسكي »نتصندر« عبر إضافتها لملف ‪ ،/etc/exports‬على سبيل المثال‪:‬‬

‫‪/ubuntu‬‬ ‫)‪*(ro,sync,no_root_squash‬‬
‫‪/home‬‬ ‫)‪*(rw,sync,no_root_squash‬‬

‫تستتتتطيع استتتتبدال علمتتتة "*" بإحتتتدى صتتتيغ أستتتماء المضتتتيفين‪ ،‬تأكتتتد متتتن أن تعريتتتف استتتم‬

‫المضيف محدد كي ل تستطيع الظنظمة غير المعنية أن تصل إلى ‪.NFS‬‬

‫ظندفذ المر التي في شمنحث الطرفية لتشغيل خادوم ‪:NFS‬‬

‫‪sudo service nfs-kernel-server start‬‬

‫ج‪ .‬ضبط عميل ‪NFS‬‬

‫استخدم المتر ‪ mount‬لوصتل مجلتد ‪ NFS‬مشتتترك متن جهتتاز لختتر؛ وذلتك بسكتابتتة أمتتر شتبيه‬

‫بالمر التي في الطرفية‪:‬‬

‫‪sudo mount example.hostname.com:/ubuntu /local/ubuntu‬‬

‫تحظظذير‪ :‬يجتتب أن تسكتتون ظنقطتتة الوصتتل ‪ /local/ubuntu‬موجتتودصة مستتبصقا‪ ،‬ول يجتتب أن يسكتتون هنالتتك أديتتة ملفتتا ت‬
‫أو مجلدا ت فرعية في ظنقطة الوصل‪.‬‬

‫▲‬ ‫‪| 393‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫طريقة أخترى لوصتل مشتتاركة ‪ NFS‬متن جهتاز لختر هتي إضتافة ستطر إلتى ملتف ‪/etc/fstab‬؛‬

‫صتددنر متن الختادوم‪ ،‬والمجلتد‬


‫يجب أن نيحددد هذا الستطر استم مضتيف ختادوم ‪ ،NFS‬والمجلتد التذي ن‬

‫فتتي الجهتتاز المحلتتي التتذي يجتتب وصتتل ‪ NFS‬إليتته؛ الشتتسكل العتتام للستتطر التتذي سنيضتتاف إلتتى ملتتف‬

‫‪ /etc/fstab‬هو‪:‬‬

‫‪example.hostname.com:/ubuntu /local/ubuntu nfs‬‬


‫‪rsize=8192,wsize=8192,timeo=14,intr‬‬

‫إذا حدثت معك مشسكلة في وصل ‪ ،NFS‬فتأكتتد أن الحزمتتة ‪ nfs-common‬مثبتتتة فتتي ظنظتتام‬

‫عميلك؛ وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install nfs-common‬‬

‫د‪ .‬مصادر‬

‫‪.Linux NFS faq2‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪.«NFS Howto‬‬ ‫•‬

‫▲‬ ‫‪| 394‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫‪ .3‬ممبادر ‪iSCSI‬‬
‫إن ‪ (Internet Small Computer System Interface ) iSCSI‬هتتو بروتوكتتول يستتمح‬

‫بنقتتل أوامتتر ‪ SCSI‬عتتبر الشتتبسكة؛ عتتادصة نيستتتخندم ‪ iSCSI‬فتتي ‪(Storage Area Network ) SAN‬‬

‫للستتماح للختتواديم بالوصتتول إلتتى مختتزن كتتبير لمستتاحة القتترص الصتتلب؛ نيشتتير بروتوكتتول ‪iSCSI‬‬

‫للعملء »بالمبادرين« )‪ (initiators‬ولخواديم ‪ iSCSI‬بالهداف )‪.(targets‬‬

‫يمسكتتن أن نيضتتنبط ختتادوم أوبنتتتو كمبتتادر أو هتتدف ‪ ،iSCSI‬يتتوفر هتتذا السكتتتاب الوامتتر والضتتبط‬

‫اللزم لعتتداد مبتتادر ‪ ،iSCSI‬علتتى فتترض أظنتتك تملتتك هتتدف ‪ iSCSI‬فتتي شتتبسكتك وتملتتك المتيتتازا ت‬

‫المناسبة للتصال إليه؛ التعليما ت حول إعداد هدف تختلف اختلصفا كبيصرا بين مزودي العتاد‪ ،‬لتتذلك‬

‫راجع توثيق الشركة لضبط هدف ‪ iSCSI‬الذي عندك‪.‬‬

‫ا‪ .‬تثبيت مبادر ‪iSCSI‬‬

‫لضبط خادوم أوبنتو كمبادر ‪ ،iSCSI‬فثدبت الحزمة ‪ open-iscsi‬بإدخال المر التي‪:‬‬

‫‪sudo apt-get install open-iscsi‬‬

‫ب‪ .‬ضبط مبادر ‪iSCSI‬‬

‫بعتتد أن نتثنبتتت حزمتتة ‪ ،open-iscsi‬عليتتك تعتتديل الملتتف ‪ /etc/iscsi/iscsid.conf‬مغيتتصرا متتا‬

‫يلي‪:‬‬

‫‪node.startup = automatic‬‬

‫▲‬ ‫‪| 395‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫تستتتطيع التأكتتد إذا كتتان الهتتدف متتتوفصرا حالصيتتا باستتتخدام الداة ‪iscsiadm‬؛ وذلتتك بإدختتال‬

‫المر التي في الطرفية‪:‬‬

‫‪sudo iscsiadm -m discovery -t st -p 192.168.0.10‬‬

‫‪ :-m‬يحدد النمط الذي سنيننفذ فيه ‪.iscsiadm‬‬ ‫•‬

‫‪ :-t‬يحدد ظنوع الستسكشاف‪.‬‬ ‫•‬

‫‪ :-p‬يحدد عنوان ‪ IP‬للهدف‪.‬‬ ‫•‬

‫ملحظة‪ :‬عددل ‪ 192.168.0.10‬إلى عنوان ‪ IP‬للهدف على شبسكتك المحلية‪.‬‬

‫إذا كان الهدف متوفصرا‪ ،‬فيجب أن تشاهد مخرجا ت شبيهة بما يلي‪:‬‬

‫‪192.168.0.10:3260,1 iqn.1992-05.com.emc:sl7b92030000520000-2‬‬

‫ملحظة‪ :‬قد يختلف رقم ‪ iqn‬وعنوان ‪ IP‬في العلى بناصء على العتاد الذي تستخدمه‪.‬‬

‫يجب أن تسكون الن قادصرا على التصال بهدف ‪ ،iSCSI‬واعتماصدا علتتى إعتتدادا ت الهتتدف‪ ،‬فربمتتا‬

‫تحتاج لدخال بياظنا ت المستخدم لتسجيل الدخول إلى عقدة ‪:iSCSI‬‬

‫‪sudo iscsiadm -m node --login‬‬

‫▲‬ ‫‪| 396‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خواديم الملفا ت‬

:dmesg ‫تأكد الن أن القرص الجديد قد نعشثنر عليه باستخدام‬

dmesg | grep sd

[ 4.322384] sd 2:0:0:0:Attached scsi generic sg1 type 0


[ 4.322797] sd 2:0:0:0: [sda] 41943040 512-byte logical
blocks:(21.4GB/20.0 GiB)
[ 4.322843] sd 2:0:0:0: [sda] Write Protect is off
[ 4.322846] sd 2:0:0:0: [sda] Mode Sense: 03 00 00 00
[ 4.322896] sd 2:0:0:0: [sda] Cache data unavailable
[ 4.322899] sd 2:0:0:0: [sda] Assuming drive cache: write
through
[ 4.323230] sd 2:0:0:0: [sda] Cache data unavailable
[ 4.323233] sd 2:0:0:0: [sda] Assuming drive cache: write
through
[ 4.325312] sda: sda1 sda2 < sda5 >
[ 4.325729] sd 2:0:0:0: [sda] Cache data unavailable
[ 4.325732] sd 2:0:0:0: [sda] Assuming drive cache: write
through
[ 4.325735] sd 2:0:0:0: [sda] Attached SCSI disk
[2486.941805] sd 4:0:0:3: Attached scsi generic sg3 type 0
[2486.952093] sd 4:0:0:3: [sdb] 1126400000 512-byte logical
blocks: (576 GB/537GiB)
[2486.954195] sd 4:0:0:3: [sdb] Write Protect is off
[2486.954200] sd 4:0:0:3: [sdb] Mode Sense: 8f 00 00 08
[2486.954692] sd 4:0:0:3: [sdb] Write cache: disabled, read
cache: enabled, doesn't support DPO or FUA
[2486.960577] sdb: sdb1
[2486.964862] sd 4:0:0:3: [sdb] Attached SCSI disk

‫ قتد يختلتف‬،‫ الجديد؛ تذكر أن هتذا مجترد مثتال‬iSCSI ‫ هو قرص‬sdb ‫ يسكون‬،‫في الناتج أعله‬

.‫الناتج عدما تراه على الشاشة‬

▲ | 397
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫يتتء ظنظتتام الملفتتا ت‪ ،‬و ش‬


‫صتل قتترص ‪ iSCSI‬الجديتتد؛ وذلتتك بإدختتال متتا يلتتي‬ ‫أظنششتتئ الن قستتصما‪ ،‬وه د‬

‫في الطرفية‪:‬‬

‫‪sudo fdisk /dev/sdb‬‬


‫‪n‬‬
‫‪p‬‬
‫‪enter‬‬
‫‪w‬‬

‫ملحظة‪ :‬الوامر التية من داخل الداة ‪fdisk‬؛ راجع ‪ man fdisk‬لتعليما ت تفصتتيلية؛ أي ص‬
‫ضتتا الداة ‪ cfdisk‬فتي‬
‫بعض الحيان تسكون »صديقة« للمستخدم أكثر‪.‬‬

‫يء الن ظنظام الملفا ت و ش‬


‫صله إلى ‪ /srv‬على سبيل المثال‪:‬‬ ‫ه د‬

‫‪sudo mkfs.ext4 /dev/sdb1‬‬


‫‪sudo mount /dev/sdb1 /srv‬‬

‫في النهاية‪ ،‬أضف مدخلة إلى ‪ /etc/fstab‬لوصل قرص ‪ iSCSI‬أثناء القلع‪:‬‬

‫‪/dev/sdb1‬‬ ‫‪/srv ext4‬‬ ‫‪defaults,auto,_netdev‬‬ ‫‪0‬‬ ‫‪0‬‬

‫فسكرة جيدة هي التأكد أن كل شيء يعمل على ما يرام قبل إعادة تشغيل الخادوم‪.‬‬

‫ج‪ .‬مصادر‬

‫موقع ‪ Open-iSCSI‬اللسكتروظني‪.‬‬ ‫•‬

‫صفحة ويسكي دبيان »‪.«Open-iSCSI‬‬ ‫•‬

‫▲‬ ‫‪| 398‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫‪ .4‬خادوم الطباعة ‪CUPS‬‬


‫اللية الرئيسية للطباعة وخدما ت الطباعة فتي أوبنتتو هي »النظتام الشتائع للطباعتة ف ي يتوظنسكس«‬

‫)‪ Common UNIX Printing System‬اختصتتاصرا ‪ ،(CUPS‬ظنظتتام الطباعتتة هتتذا هتتو طبقتتة محمولتتة‬

‫متوفرة مجا صظنا التي أصبحت المعيار القياسي الجديد للطباعة في غالبية توزيعا ت ليننسكس‪.‬‬

‫يتتتتدير ‪ CUPS‬مهتتتتام الطباعتتتتة والطلبيتتتتا ت ويتتتتوفر ختتتتدما ت طباعتتتتة عتتتتبر الشتتتتبسكة باستتتتتخدام‬

‫»بروتوكول الطباعة عبر الظنترظنت« ) ‪ Internet Printing Protocol‬اختصاصرا ‪ ،(IPP‬بينما يتتوفر‬

‫‪ CUPS‬دعصمتتا لمجتتاتل واستتع جتصدا متتن الطابعتتا ت‪ ،‬بتتدصءا متن طابعتتا ت مصتتفوفة النقتط )‪(dot-matrix‬‬

‫إلى الطابعا ت الليزرية وما بينهمتا؛ ويتدعم ‪ CUPS‬أي ص‬


‫ضتا » ‪«PostScript Printer Description‬‬

‫)‪ (PPD‬والكتشاف التلقائي لطابعا ت الشبسكة‪ ،‬ويوفر واجهة ويب بسيطة كأداة للضبط والدارة‪.‬‬

‫ا‪ .‬التثبيت‬

‫أدخل المر التي في الطرفية لتثبيت ‪:CUPS‬‬

‫‪sudo apt-get install cups‬‬

‫سيعمل خادوم ‪ CUPS‬تلقائصيا بعد ظنجاح التثبيت‪.‬‬

‫▲‬ ‫‪| 399‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫ولستسكشاف الخطاء‪ ،‬يمسكنك الوصول إلى أخطاء خادوم ‪ CUPS‬عبر ملف سجل فتتي الملتتف‬

‫ ت كافيتتصة لحتتل المشتتاكل التتتي‬


‫‪/var/log/cups/error_log‬؛ إذا لتتم نيظشهتتر ستتجل الخطتتاء معلومتتا ت‬

‫تواجهتتك‪ ،‬فيمسكتتن زيتتادة درجتتة »الستتهاب« لستتجل ‪ CUPS‬بتغييتتر التعليمتتة ‪ LogLevel‬فتتي ملتتف‬

‫الضبط إلى "‪ "debug‬أو حتى إلى "‪ ،"debug2‬مما يؤدي إلى تستجيل كتل ش يء؛ تأكتد متن إعتادة‬

‫القيمة الفتراضية "‪ "info‬بعد حل مشسكلتك لتفادي زيادة حجم السجل زيادصة كبيرصة جصدا‪.‬‬

‫ب‪ .‬الضبط‬

‫نيضتتنبط ستتلوك ختتادوم ‪ CUPS‬عتتبر تعليمتتا ت موجتتودة فتتي ملتتف ‪/etc/cups/cupsd.conf‬؛‬

‫يتدبع ملتف ضتبط ‪ CUPS‬ظنفتس الصتيغة العامتة لملتف الضتبط الرئيستي لختادوم أباتشتي؛ ستنذكر هنتا‬

‫بعض المثلة عن العدادا ت التي يمسكن تغييرها‪.‬‬

‫تنويه‪ :‬عليك إظنشاء ظنسخة من الملف الصلي قبتل تعتديل ملتف الضتبط‪ ،‬وعليتك حمايتة تلتك النستخة متن السكتابتة‪،‬‬
‫لذلك ستسكون لديك العدادا ت الفتراضية كمرجع أو لعادة استخدامها وقت الحاجة‪.‬‬

‫اظنسخ الملف ‪ /etc/cups/cupsd.conf‬واحمشه من السكتابة بالوامر التية‪:‬‬

‫‪sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original‬‬


‫‪sudo chmod a-w /etc/cups/cupsd.conf.original‬‬

‫▲‬ ‫|‬ ‫‪400‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫التعليمة ‪ :ServerAdmin‬لضتبط عنتتوان البريتتد اللسكتتتروظني لمتتدير ختتادوم ‪ ،CUPS‬عليتك أن‬

‫نتحتتتدرر ملتتتف الضتتتبط ‪ ،/etc/cups/cupsd.conf‬ثتتتم أضتتتف أو عتتتددل ستتتطر ‪ ServerAdmin‬بمتتتا‬

‫يلئمتتتتتتتتك؛ فمث صل إن كنتتتتتتتتت أظنتتتتتتتتت متتتتتتتتدير ختتتتتتتتادوم ‪ ، CUPS‬وكتتتتتتتتان بريتتتتتتتتدك اللسكتتتتتتتتتروظني هتتتتتتتتو‬

‫‪ ،user@example.com‬فعليك تعديل سطر ‪ ServerAdmin‬ليبدو كما يلي‪:‬‬

‫‪ServerAdmin user@example.com‬‬

‫التعليمة ‪ :Listen‬يستمع خادوم ‪ CUPS‬في أوبنتتتو افتراضتتصيا علتتى بطاقتتة ‪ loopback‬فقتتط‬

‫علتتى عنتتوان ‪IP 127.0.0.1‬؛ ولسكتتي تجعتتل ختتادوم ‪ CUPS‬يستتتمع علتتى عنتتوان ‪ IP‬لبطاقتتة شتتبسكية‪،‬‬

‫فعليك تحديد إما اسم مضيف‪ ،‬أو عنوان ‪ ،IP‬أو اختياصرا‪ ،‬عنوان ‪ IP‬ومنفذ؛ وذلتتك بإضتتافة التعليمتتة‬

‫‪Listen‬؛ على سبيل المثال‪ ،‬لو كان خادوم ‪ CUPS‬يقبع على شبسكة محليتة بعنتوان ‪ IP‬ه و ‪192.16‬‬

‫‪ 8.10.250‬وتريتتتد أن تجعلتتته متا صحتتتا لبقيتتتة الظنظمتتتة علتتتى هتتتذه الشتتتبسكة الفرعيتتتة؛ فعليتتتك تعتتتديل‬

‫‪/etc/cups/cupsd.conf‬؛ وإضافة التعليمة ‪ ،Listen‬كما يلي‪:‬‬

‫‪Listen 127.0.0.1:631‬‬ ‫‪# existing loopback Listen‬‬


‫‪Listen /var/run/cups/cups.sock‬‬ ‫‪# existing socket Listen‬‬
‫‪Listen 192.168.10.250:631‬‬ ‫‪# Listen on the LAN‬‬
‫)‪interface, Port 631 (IPP‬‬

‫▲‬ ‫|‬ ‫‪401‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫قتتد تحتتذف أو تضتتع تعليصقتتا قبتتل الشتتارة إلتتى عنتتوان ‪ (127.0.0.1) loopback‬إذا لتتم ترغتتب‬

‫في أن يستتمع ‪ cupsd‬إلتى هتذه البطاقتة لسكنتك تريتتده أن يستتتمع فقتتط إلتتى بطاقتتة إيتثرظنت للشتتبسكة‬

‫المحلية ‪LAN‬؛ لتفعيل الستماع لسكل منافذ الشبسكة بما فيها ‪ loopback‬لمضيف معديتتن‪ ،‬فتستتتطيع‬

‫إظنشاء قيد ‪ Listen‬لسم المضيف )‪ (socrates‬كما يلي‪:‬‬

‫‪Listen socrates:631‬‬ ‫‪# Listen on all interfaces for the‬‬


‫'‪hostname 'socrates‬‬

‫أو بحذف التعليمة ‪ Listen‬واستخدام ‪ Port‬عو ص‬


‫ضا عنها‪:‬‬

‫‪Port 631‬‬ ‫‪# Listen on port 631 on all interfaces‬‬

‫للمزيد متن المثلتة عتن تعليمتا ت الضتبط لختادوم ‪ ،CUPS‬راجتع ص فحة التدليل الخاصتة بملتف‬

‫الضبط بإدخال المر التي‪:‬‬

‫‪man cupsd.conf‬‬

‫ملحظظظة‪ :‬فتتي كتتل متترة نتعتتددل فيهتتا علتتى ملتتف الضتتبط ‪/etc/cups/cupsd.conf‬؛ فستتتحتاج إلتتى إعتتادة تشتتغيل‬
‫خادوم ‪ CUPS‬بسكتابة المر التالي في الطرفية‪:‬‬

‫‪sudo service cups restart‬‬

‫▲‬ ‫‪| 402‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خواديم الملفا ت‬

‫ج‪ .‬واجهة الويب‬

‫ملحظظظظظظظة‪ :‬يمسكتتتتتتن أن نيضتتتتتتنبط ونيرانقتتتتتتب ‪ CUPS‬باستتتتتتتخدام واجهتتتتتتة ويتتتتتتب‪ ،‬التتتتتتتي تتتتتتتتوفر افتراضتتتتتتصيا علتتتتتتى‬
‫‪http://localhost:631/admin‬؛ يمسكن استخدام واجهة الويب لجراء كل مهام إدارة الطابعة‪.‬‬

‫لسكي تنفذ المهام الدارية عبر واجهة الويب‪ ،‬فعليتك إمتا تفعيتتل حستتاب الجتذر علتى خادومتتك‪،‬‬

‫ب أمنيتتتة‪ ،‬لتتتن يستتتتوثق ‪ CUPS‬متتتن‬


‫أو الستتتتيثاق كمستتتتخدم فتتتي المجموعتتتة ‪lpadmin‬؛ ولستتتبا ت‬

‫مستخدم ل يملك كلمة مرور‪.‬‬

‫لضافة مستخدم إلى المجموعة ‪ ،lpadmin‬فعليك تنفيذ المر التي في الطرفية‪:‬‬

‫‪sudo usermod -aG lpadmin username‬‬

‫يتوفر توثيق في لسان ‪ Documentation/Help‬في واجهة الويب‪.‬‬

‫د‪ .‬مصادر‬

‫موقع ‪ CUPS‬اللسكتروظني‪.‬‬ ‫•‬

‫▲‬ ‫‪| 403‬‬


‫‪15‬‬
‫خدمات البريد‬
‫اللكتروني‬

‫▲‬ ‫‪| 404‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ص لختتر عتتبر‬‫تشتتترك العديتتد متتن الظنظمتتة فتتي عمليتتة الحصتتول علتتى بريتتد إلسكتتتروظني متتن شتتخ ت‬

‫ضا؛ ويجب أن نيضنبط كل واحد من هذه الظنظمة ضبصطا‬


‫الشبسكة أو الظنترظنت التي تعمل مع بعضها بع ص‬

‫صتتتحيصحا لسكتتتي تتتتتم العمليتتتة بنجتتتاح؛ يستتتتخدم النمرشستتتل »عميتتتل مستتتتخدم البريتتتد« )‪Mail User‬‬

‫‪ Agent‬اختصتتاصرا ‪ (MUA‬أو عميتتل بريتتد إلسكتتتروظني‪ ،‬لرستتال رستتالة عتتبر واحتتد أو أكتتثر متتن »عملء‬

‫ظنقتتل البريتتد« )‪ Mail Transfer Agents‬اختصتتاصرا ‪ ،(MTA‬سيستتلم آخرهتتم البريتتد إلتتى »عميتتل‬

‫إيصتتال البريتتد« )‪ Mail Delivery Agent‬اختصتتاصرا ‪ (MDA‬ليصتتال البريتتد إلتتى صتتندوق بريتتد‬

‫المستلم‪ ،‬الذي بدوره يحصل عليه عميل البريد اللسكتروظني للمستلم عادصة باستخدام خادوم ‪POP3‬‬

‫أو ‪.IMAP‬‬

‫‪ .1‬خادوم ‪Postfix‬‬
‫إن ‪ Postfix‬هتتو عميتتل ظنقتتل البريتتد )‪ (MTA‬الفتراضتتي فتتي أوبنتتتو؛ التتذي نيو ن‬
‫صتتف بتتأظنه ستتريع‬

‫وسهل الدارة‪ ،‬وآمن ومتوافق مع عميل ظنقل البريد ‪sendmail‬؛ يشتترح هتتذا القستتم طريقتتة تثتبيت‬

‫وضبط ‪ ،Postfix‬ويشرح أي ص‬
‫ضا كيفية إعداد خادوم ‪ SMTP‬باستخدام اتصال آمن )لرسال رسائل‬

‫البريد اللسكتروظني بأمان(‪.‬‬

‫ملحظة‪ :‬لن يشرح هذا السكتاب »‪ «Postfix Virtual Domains‬للمزيد من المعلوما ت حول النطاقا ت الوهميتتة‬

‫وغيرها من إعدادا ت الضبط المتقدمة‪ ،‬فراجع قسم »مصادر« في ظنهاية هذا القسم‪.‬‬

‫▲‬ ‫‪| 405‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ا‪ .‬التثبيت‬

‫ظندفذ المر التي في الطرفية لتثبيت ‪:postfix‬‬

‫‪sudo apt-get install postfix‬‬

‫سنتسأل بعض السئلة أثناء عملية التثبيت‪ ،‬وسنيشنرح الضبط بتفاصيل أكبر في المرحلة القادمة‪.‬‬

‫ب‪ .‬الضبط الساسي‬

‫ظندفذ المر التي في الطرفية لضبط ‪:postfix‬‬

‫‪sudo dpkg-reconfigure postfix‬‬

‫ستظهر واجهة مستخدم‪ ،‬اختر منها القيم التية على كل شاشة‪:‬‬

‫‪Internet Site‬‬
‫‪mail.example.com‬‬
‫‪steve‬‬
‫‪mail.example.com, localhost.localdomail, localhost‬‬
‫‪No‬‬
‫‪127.0.0.1/8 8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24‬‬
‫‪0‬‬
‫‪+‬‬
‫‪all‬‬

‫ملحظتتتتة‪ :‬استتتتتبدل ‪ mail.example.com‬بالنطتتتتاق التتتتذي ستتتتيقبل استتتتتلم البريتتتتد عليتتتته‪ ،‬و ‪192.168.0.0/24‬‬
‫بالشبسكة التي عندك ومجالها؛ و ‪ steve‬باسم ملئم للمستخدم‪.‬‬

‫▲‬ ‫‪| 406‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫الن هتتتو وقتتت ة‬


‫ت ملئتتت ةم لتحديتتتد صتتتيغة صتتتندوق البريتتتد التتتتي تنتتتوي استتتتخدامها؛ افتراضتتتصيا‬

‫‪ Postfix‬يستخدم ‪ mbox‬لصيغة صندوق البريد؛ وبتدصل متتن تعتديل ملتتف الضتبط مباشتترصة‪ ،‬يمسكنتتك‬

‫استتتخدام المتتر ‪ postconf‬لضتتبط كتتل معتتامل ت ‪postfix‬؛ ستتنتخنزن معتتامل ت الضتتبط فتتي ملتتف‬

‫‪/etc/postfix/main.cf‬؛ وإذا أرد ت إعادة ضبط معامل مع نين‪ ،‬يمسكنك إمتا أن تنفتذ المتر أو تعتدل‬

‫الملف يدوصيا؛ فلضبط صيغة صندوق البريد إلى ‪:Maildir‬‬

‫'‪sudo postconf -e 'home_mailbox = Maildir/‬‬

‫ملحظة‪ :‬هذا سيضع البريد الجديد فتي مجلتتد ‪ ،/home/username/Maildir‬لتذلك تريتتد ضتبط عميتتل تستتليم‬
‫البريد )‪ (MDA‬لستخدام ظنفس المسار‪.‬‬

‫ج‪ .‬استيثاق ‪SMTP‬‬

‫يسمح ‪ SMTP-AUTH‬للعميل بالتعريف عن ظنفستته باستتخدام آليتة استتيثاق )‪ ،(SASL‬يجتب‬

‫استخدام أمن طبقة النقل‬

‫)‪ (TLS‬لتشتتتفير عمليتتتة الستتتتيثاق؛ سيستتتمح ختتتادوم ‪ SMTP‬للعميتتتل بتتتأن ينقتتتل البريتتتد بعتتتد‬

‫الستيثاق‪.‬‬

‫▲‬ ‫‪| 407‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫لضبط ‪ Postfix‬مع ‪ SMTP-AUTH‬باستخدام ‪:(Dovecot SASL ) SASL‬‬

‫'‪sudo postconf -e 'smtpd_sasl_type = dovecot‬‬


‫'‪sudo postconf -e 'smtpd_sasl_path = private/auth-client‬‬
‫'= ‪sudo postconf -e 'smtpd_sasl_local_domain‬‬
‫'‪sudo postconf -e 'smtpd_sasl_security_options = noanonymous‬‬
‫'‪sudo postconf -e 'broken_sasl_auth_clients = yes‬‬
‫'‪sudo postconf -e 'smtpd_sasl_auth_enable = yes‬‬
‫\ = ‪sudo postconf -e 'smtpd_recipient_restrictions‬‬
‫\ ‪permit_sasl_authenticated,permit_mynetworks,‬‬
‫'‪reject_unauth_destination‬‬

‫ملحظة‪ :‬الضبط ‪ smtpd_sasl_path‬هو مسار ظنسبي إلى مجلد طلبيا ت ‪.Postfix‬‬

‫ثتتتم ودلتتتد أو احصتتتل علتتتى شتتتهادة ‪ TLS‬رقميتتتة‪ ،‬راجتتتع »الفصتتتل التاستتتع‪ :‬الحمايتتتة«؛ هتتتذا المثتتتال‬

‫يستتتخدم أي ص‬
‫ضتتا ستتلطة شتتهادا ت ) ‪ Certificate Authority‬أو ‪ ،(CA‬للمزيتتد متتن المعلومتتا ت حتتول‬

‫ذلك‪ ،‬اظنظر إلى قسم »سلطة الشهادا ت«‪.‬‬

‫ملحظظظة‪ :‬عملء مستتتخدمي البريتتد )‪ (MUA‬التتتي تتصتتل إلتتى ختتادوم البريتتد عتتبر ‪ TLS‬يجتتب أن تتعتترف علتتى‬
‫الشهادة المستخدمة فتي ‪ TLS‬؛ يمسكتن فعتل ذلتك إمتا باستتخدام شتهادة متن ستلطة شتهادا ت تجاريتة‪ ،‬أو استتخدام‬
‫شهادة موقعة ذاتصيا‪ ،‬وعلتى المستتخدمين أن نيثدبتتوا أو يقبلتوا الشتهادة يتدوصيا‪ ،‬شتهادا ت ‪ TLS‬متن عميتل ظنقتتل بريتد‬
‫إلتتى عميتتل ظنقتتل بريتتد آختتر ل نيتح نقتتق منهتتا إل بعتتد موافقتتة مستتبقة متتن المنظمتتا ت المتتتأثرة؛ ل يوجتتد ستتبب لعتتدم‬
‫استخدام شهادة موقعة ذاتصيتا عنتد استتعمال ‪ TLS‬متن ‪ MTA‬إلتتى ‪ ،MTA‬متتا لتتم تتطلتب السياستا ت المحليتتة ذلتك؛‬
‫راجع قسم »إظنشاء شهادة موقعة ذاتصيا« لمزيتد من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 408‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

:‫ للبريد النمرنسل والنمستنلم‬TLS ‫ لتوفير تشفير‬Postfix ‫ اضبط‬،‫بعد أن تحصل على الشهادة‬

sudo postconf -e 'smtp_tls_security_level = may'


sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file =
/etc/ssl/private/server.key'
sudo postconf -e 'smtpd_tls_cert_file =
/etc/ssl/certs/server.crt'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'myhostname = mail.example.com'

‫ فأد ش‬،‫إذا كنت تستخدم سلطة الشهادا ت الخاصة بك لتوقيع الشهادة‬


:‫خل‬

sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'

.‫ راجع الفصل التاسع‬،‫ للمزيد من المعلوما ت حول الشهادا ت‬،‫مر صة أخرى‬

‫ضتشب ن‬
‫ وشتهادة موقعتتة‬SMTP-AUTH ‫ط ليستتخدم‬ ‫ قتد ن‬Postfix ‫ فيسكتتون‬،‫ بعد تنفيذ كتل الوامتر الستابقة‬:‫ملحظة‬
‫ن‬
.‫ مشفر‬TLS ‫ذاتصيا أظنششئت لتصال‬

# See /usr/share/postfix/main.cf.dist for a commented, more


complete
# version

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)


biff = no

# appending .domain is the MUA's job.


append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings


#delay_warning_time = 4h

▲ | 409
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

myhostname = server1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com,
localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject
_unauth_destination
smtpd_tls_auth_only = no
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

:‫؛ فنفذ المر التي لعادة تشغيل العفريت‬postfix ‫بعد إكمال الضبط البتدائي لخدمة‬

sudo service postfix restart

‫؛ التتذي هتتو مبنتتي‬RFC2554 ‫ كمتتا هتتو معتتنرف فتتي‬SMTP-AUTH ‫ استتتخدام‬Postfix ‫يتتدعم‬

.SMTP-AUTH ‫ قبل استخدام‬SASL ‫؛ لسكنه يبقى ضرورصيا إعداد استيثاق‬SASL ‫على‬

▲ | 410
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

SASL ‫ ضبط‬.‫د‬

‫؛ لتفعيتتتتل‬Dovecot SASL ‫ و‬Cyrus SASL ‫ همتتتتا‬SASL ‫ ظنستتتتختين متتتتن‬Postfix ‫يتتتتدعم‬

‫ وذلتتك بإدختتال المتتر التتتي متتن‬،dovecot-common ‫ فيجتتب تثتتبيت حزمتتة‬،Dovecot SASL

:‫الطرفية‬

sudo apt-get install dovecot-common

:‫؛ مغديصرا ما يلي‬/etc/dovecot/conf.d/10-master.conf ‫يجب تعديل ملف الضبط‬

service auth {
# auth_socket_path points to this userdb socket by default.
It's typically
# used by dovecot-lda, doveadm, possibly imap process, etc.
Its default
# permissions make it readable only by root, but you may
need to relax these
# permissions. Users that have access to this socket are
able to get a list
# of all usernames and get results of everyone's userdb
lookups.
unix_listener auth-userdb {
#mode = 0600
#user =
#group =
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}

▲ | 411
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ولسكتتي ظنستتمح لعملء ‪ Outlook‬باستتتخدام ‪ ،SMTP-AUTH‬فعتتددل الستتطر التتتي فتتي قستتم‬

‫‪ authentication mechanisms‬في ملف ‪:/etc/dovecot/conf.d/10-auth.conf‬‬

‫‪auth_mechanisms = plain‬‬

‫إلى ما يلي‪:‬‬

‫‪auth_mechanisms = plain login‬‬

‫ضنبنط ن‬
‫ت ‪ ،Dovecot‬فأعد تشغيله بالمر‪:‬‬ ‫بعد أن ن‬

‫‪sudo service dovecot restart‬‬

‫ه‪ .‬تفعيل ‪Mail-Stack Delivery‬‬

‫خيتتار آختتر لضتتبط ‪ Postfix‬لستتتعمال ‪ SMTP-AUTH‬هتتو استتتخدام الحزمتتة ‪mail-stack-‬‬

‫‪) delivery‬كتتتاظنت نتحتتتتنزم مستتتبصقا باستتتتم ‪(dovecot-postfix‬؛ هتتتذه الحزمتتتتة ستتتنتثدبت ‪Dovecot‬‬

‫وتضبط ‪ Postfix‬ليستخدمها لستيثاق ‪ SASL‬وعميل تسليم البريد )‪(MDA‬؛ تضبط هذه الحزمة‬

‫‪ Dovecot‬أي ص‬
‫ضا للخدما ت ‪ IMAP‬و ‪ IMAPS‬و ‪ POP3‬و ‪.POP3S‬‬

‫ملحظة‪ :‬ربما تريد أو ل تريد تشغيل ‪ ،IMAP‬أو ‪ ،IMAPS‬أو ‪ ،POP3‬أو ‪ POP3S‬على خادوم البريد عندك؛ على‬
‫ستتتتتبيل المثتتتتتال‪ ،‬إذا كنتتتتتت تضتتتتتبط خادومتتتتتك ليسكتتتتتون بوابتتتتتصة للبريتتتتتد‪ ،‬أو نمنردشتتتتتصحا للرستتتتتائل العشتتتتتوائية ) ‪(Spam‬‬
‫أو الفيروسا ت ‪ ...‬إلخ‪ .‬فإذا كتاظنت هتذه هتي الحالتة عنتدك‪ ،‬فمتن الستهل اس تخدام الوامتر الستابقة لضتبط ‪Postfix‬‬
‫لستخدام ‪.SMTP-AUTH‬‬

‫▲‬ ‫‪| 412‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫لتثبيت الحزمة‪ ،‬أد ش‬


‫خل ما يلي في الطرفية‪:‬‬

‫‪sudo apt-get install mail-stack-delivery‬‬

‫يجب أن تحصتل الن علتتى ختتادوم بريتد يعمتل تماصمتتا؛ لسكتتن هنالتتك بعتتض الخيتارا ت التتي تريتتد‬

‫ضتتبطها لمزيتت تد متتن التخصتتيص؛ علتتى ستتبيل المثتتال‪ ،‬تستتتخدم الحزمتتة الستتابقة شتتهادة ومفتتتاح متتن‬

‫حزمة ‪ ،ssl-cert‬وفي بيئة إظنتاجية يجب أن تستخدم شتهادة ومفتتتاح مونلتد للمضتيف؛ راجتع قستتم‬

‫»الشهادا ت« لمزيتد من التفاصيل‪.‬‬

‫عددل الخيارا ت التية في ‪ /etc/postfix/main.cf‬بعد أن تخصص الشهادة والمفتاح للمضيف‪:‬‬

‫‪smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem‬‬
‫‪smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key‬‬

‫ثم أعد تشغيل ‪:Postfix‬‬

‫‪sudo service postfix restart‬‬

‫و‪ .‬التختبار‬

‫اكتمل الن ضبط ‪SMTP-AUTH‬؛ حان الن الوقت لختبار العدادا ت‪.‬‬

‫للتأكد إذا كان ‪ SMTP-AUTH‬و ‪ TLS‬يعملن عمصل صحيصحا‪ ،‬فندفذ المر التي‪:‬‬

‫‪telnet mail.example.com 25‬‬

‫▲‬ ‫‪| 413‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫بعد أن نتنششئ اتصاصل لخادوم البريد ‪ ،postfix‬اكتب ما يلي‪:‬‬

‫‪ehlo mail.example.com‬‬

‫إذا رأيت السطر التية بين غيرها‪ ،‬فإن كل شيء يعمل على ما يرام؛ اكتب ‪ quit‬للخروج‪.‬‬

‫‪250-STARTTLS‬‬
‫‪250-AUTH LOGIN PLAIN‬‬
‫‪250-AUTH=LOGIN PLAIN‬‬
‫‪250 8BITMIME‬‬

‫ز‪ .‬استكشاف التخطاء وإصلحها‬

‫سنقدم في هذا القسم بعض الطرق الشائعة لتحديد السبب إذا حدثت مشسكلة ما‪.‬‬

‫الخروج من ‪chroot‬‬

‫سنتثنبت الحزمة ‪ postfix‬في أوبنتو افتراضتتصيا فتتي بيئتتة »‪ «chroot‬لستتبا ت‬


‫ب أمنيتتة؛ يمسكتتن أن‬

‫يزيد هذا من تعقيد إصلح المشاكل‪.‬‬

‫لتعطيل عمل ‪ ،chroot‬حدد السطر التي في ملف ‪:/etc/postfix/master.cf‬‬

‫‪smtp‬‬ ‫‪inet‬‬ ‫‪n‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪smtpd‬‬

‫وعددله كما يلي‪:‬‬

‫‪smtp‬‬ ‫‪inet‬‬ ‫‪n‬‬ ‫‪-‬‬ ‫‪n‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪smtpd‬‬

‫▲‬ ‫‪| 414‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫تحتاج إلى إعادة تشغيل ‪ Postfix‬لستخدام الضبط الجديد‪ ،‬وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo service postfix restart‬‬

‫تفعيل ‪Smtps‬‬

‫إذا احتجت إلى ‪ ،smtps‬فعددل الملف ‪ /etc/postfix/master.cf‬وأزل التعليق عن السطر التي‪:‬‬

‫‪smtps‬‬ ‫‪inet‬‬ ‫‪n‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪smtpd‬‬


‫‪-o smtpd_tls_wrappermode=yes‬‬
‫‪-o smtpd_sasl_auth_enable=yes‬‬
‫‪-o‬‬
‫‪smtpd_client_restrictions=permit_sasl_authenticated,reject‬‬
‫‪-o milter_macro_daemon_name=ORIGINATING‬‬

‫ملفات السجل‬

‫نيرشستتل ‪ Postfix‬جميتتع رستتائل الستتجل إلتتى ملتتف ‪ ،/var/log/mail.log‬لسكتتن يمسكتتن أن تضتتيع‬

‫رستتائل الخطتتأ والتحتتذير فتتي الستتجل العتتادي‪ ،‬لتتذلك فإظنهتتا نتستتنجل أي ص‬


‫ضتتا إلتتى ‪/var/log/mail.err‬‬

‫و ‪ /var/log/mail.warn‬على التوالي وبالترتيب‪.‬‬

‫لمراقبة الرسائل الداخلة إلى السجل في الوقت الحقيقي‪ ،‬فاستتتخدم المتتر ‪ tail‬متتع الخيتتار ‪-f‬‬

‫كما يلي‪:‬‬

‫‪tail -f /var/log/mail.err‬‬

‫يمسكتتتن زيتتتادة كميتتتة التفاصتتتيل التتتتي سنتستتت نجل؛ هتتتذه بعتتتض خيتتتارا ت الضتتتبط لزيتتتادة مستتتتوى‬

‫التسجيل لبعض »المناطق« المذكورة أعله‪.‬‬

‫▲‬ ‫‪| 415‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫لزيادة ظنشاط تسجيل ‪ ،TLS‬فاضبط الخيار ‪ smtpd_tls_loglevel‬إلى قيمة من ‪ 1‬إلى ‪:4‬‬

‫'‪sudo postconf -e 'smtpd_tls_loglevel = 4‬‬

‫إذا كتتاظنت لتتديك مشتتسكلة فتتي إرستتال أو استتتقبل البريتتد متتن ظنطتتاق معيتتن‪ ،‬فيمسكنتتك إضتتافة ذاك‬

‫النطاق إلى معامل ‪:debug_peer_list‬‬

‫'‪sudo postconf -e 'debug_peer_list = problem.domain‬‬

‫يمسكنك زيادة درجة السهاب لي عملية تابعة لعفريت ‪ Postfix‬بتعديل الملتتف‪/etc/postfix‬‬

‫‪ /master.cf‬وبإضافة الخيار ‪ -v‬بعد القيد‪ ،‬على سبيل المثال‪ ،‬عددل القيد ‪ smtp‬كما يلي‪:‬‬

‫‪smtp‬‬ ‫‪unix‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪-‬‬ ‫‪smtp -v‬‬

‫ملحظظظة‪ :‬متتن الضتتروري ملحظتتة أظنتته بعتتد إظنشتتاء تعتتديل متتن تعتتديل ت التستتجيل المتتذكورة آظنصفتتا‪ ،‬فيجتتب أن يعتتاد‬
‫تحميل عملية ‪ Postfix‬لسكي نتدشرك الضبط الجديد‪:‬‬

‫‪sudo service postfix reload‬‬

‫▲‬ ‫‪| 416‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫لزيتتادة مقتتدار المعلومتتا ت المستتجلة عنتتد استسكشتتاف مشتتاكل ‪ ،SASL‬يمسكنتتك ضتتبط الخيتتارا ت‬

‫التية في ملف ‪:/etc/dovecot/conf.d/10-logging.conf‬‬

‫‪auth_debug=yes‬‬
‫‪auth_debug_passwords=yes‬‬

‫ملحظة‪ :‬مثل ‪ ،Postfix‬إذا عندلت ضبط ‪ Dovecot‬فيجب إعادة تحميل العملية‪:‬‬

‫‪sudo service dovecot reload‬‬

‫ملحظة‪ :‬يمسكن أن تزيد بعض الخيارا ت م ن مقتدار المعلومتا ت النمرنستلة إلتى الستجل زيتادصة كتبيرصة؛ تتذكر أن نتعيتد‬
‫مستوى التسجيل إلى الحالة الطبيعية بعد أن تح د‬
‫ل المشتسكلة؛ ثتم أع د تحميتل العفريتت الملئتم كتي يأختذ الضتبط‬
‫الجديد مفعوله‪.‬‬

‫ح‪ .‬مصادر‬

‫يمسكن أن تسكون مهمة إدارة خادوم ‪ Postfix‬مهمصة معقتتدصة جتتصدا؛ وستتتحتاج فتتي مرحلتتتة متتا‬ ‫•‬

‫إلى الستعاظنة بمجتمع أوبنتو للحصول على المساعدة‪.‬‬

‫مسكتتان رائتتع للستتؤال عتتن مستتاعدة فتتي ‪ Postfix‬والشتتتراك فتتي مجتمتتع أوبنتتتو هتتو قنتتاة‬ ‫•‬

‫‪ #ubuntu-server‬على خادوم ‪freenode‬؛ يمسكنك أي ص‬


‫ضا ظنشر موضوع في أحد المنتديا ت‪.‬‬

‫لمعلوما ت معمدقة عن ‪ ،Postfix‬فينصح مطورو أوبنتو بسكتاب » ‪.«The Book of Postfix‬‬ ‫•‬

‫موقع ‪ Postfix‬فيه توثيق رائع لمختلف خيارا ت الضبط المتوفرة‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة ويسكي أوبنتو »‪ «Postfix‬للمزيد من المعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 417‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪ .2‬خادوم ‪Exim4‬‬
‫إن ‪ Exim4‬هتتو عميتتل ظنقتتل رستتائل آختتر مطتتور فتتي جامعتتة كتتامبردج لستتتخدامه فتتي أظنظمتتة‬

‫يوظنسكس المتصلة إلى الظنترظنت؛ يمسكن تثبيت ‪ Exim‬بدصل من ‪ ،sendmail‬وذلك على الرغتتم متتن أن‬

‫ضبط ‪ exim‬مختلف كثيصرا عن ضبط ‪.sendmail‬‬

‫ا‪ .‬التثبيت‬

‫ظندفذ المر التي في الطرفية لتثبيت ‪:exim4‬‬

‫‪sudo apt-get install exim4‬‬

‫ب‪ .‬الضبط‬

‫ظندفذ المر التي لضبط ‪:Exim4‬‬

‫‪sudo dpkg-reconfigure exim4-config‬‬

‫ستتتتظهر واجهتتتة مستتتتخدم تستتتمح لتتتك بضتتتبط العديتتتد متتتن المعتتتامل ت؛ فمثصل نتقنستتتم ملفتتتا ت الضتتتبط‬

‫في ‪ Exim4‬إلى ع ددة ملفا ت‪ ،‬إذا أرد ت أن تجعلهم في ملف واحد‪ ،‬فتستطيع ضبط ذلك من هذه الواجهة‪.‬‬

‫جميتتتتتع المعتتتتتامل ت التتتتتتي ضتتتتتبطتها فتتتتتي واجهتتتتتة المستتتتتتخدم مخزظنتتتتتةة فتتتتتي الملتتتتتف التتتتتتالي‬

‫‪ /etc/exim4/update-exim4.conf‬؛ وإذا أرد ت إعادة الضبط‪ ،‬فتستطيع تشغيل معالج الضتتبط‬

‫أو تعديل هذا الملف يدوصيا باستخدام محررك النصي المفضل‪.‬‬

‫▲‬ ‫‪| 418‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫بعد أن تنتهي من الضبط‪ ،‬يمسكنك تنفيذ المر التي لتولد ملف ضبط رئيسي‪:‬‬

‫‪sudo update-exim4.conf‬‬

‫يونلد ونيخنزن ملف الضبط الرئيسي في ‪./var/lib/exim4/config.autogenerated‬‬

‫تحظظظذير‪ :‬عليتتتك عتتتدم تعتتتديل ملتتتف الضتتتبط الرئيستتتي ‪ /var/lib/exim4/config.autogenerated‬بتاصتتتتا؛ حيتتتث‬


‫نيحندث تلقائصيا في كل مرة نتندفذ فيها ‪.update-exim4.conf‬‬

‫ظندفذ المر التي لتشغيل عفريت ‪:Exim4‬‬

‫‪sudo service exim4 start‬‬

‫ج‪ .‬استيثاق ‪SMTP‬‬

‫يشرح هذا القسم كيفية ضبط ‪ Exim4‬لستخدام ‪ SMTP-AUTH‬مع ‪ TLS‬و ‪.SASL‬‬

‫أول خطوة هي إظنشاء شهادة لستخدامها مع ‪TLS‬؛ وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo /usr/share/doc/exim4-base/examples/exim-gencert‬‬

‫يجب أن نيضنبط ‪ Exim4‬الن لستخدام ‪ TLS‬بتعديل الملتتف ‪/etc/exim4/conf.d/main‬‬

‫‪ /03_exim4-config_tlsoptions‬وإضافة ما يلي‪:‬‬

‫‪MAIN_TLS_ENABLE = yes‬‬

‫▲‬ ‫‪| 419‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

‫ للستتتتتتتيثاق؛ عتتتتتتددل الملتتتتتتف‬saslauthd ‫ لستتتتتتتخدام‬Exim4 ‫ثتتتتتتم ستتتتتتتحتاج إلتتتتتتى ضتتتتتتبط‬

‫ي‬
‫ وأزل التعليقتتتتتتا ت عتتتتتتن قستتتتتتنم د‬/etc/exim4/conf.d/auth/30_exim4-config_examples

:login_saslauthd_server ‫ و‬plain_saslauthd_server

plain_saslauthd_server:
driver = plaintext
public_name = PLAIN
server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
server_set_id = $auth2
server_prompts = :
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif
#
login_saslauthd_server:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
# don't send system passwords over unencrypted connections
server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
server_set_id = $auth1
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif

‫ فمتن الضتتروري‬،‫ الجديتد‬exim ‫لسكتتي يتمسكتتن عميتل البريتتد الختتارجي متتن التصتتال إلتى ختتادوم‬

:‫ بتنفيذ الوامر التية‬exim ‫إضافة مستخدمين جدد إلى‬

sudo /usr/share/doc/exim4/examples/exim-adduser

▲ | 420
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫يجب أن يحمي المستخدمون ملفا ت كلمة المرور الجديدة لخادوم ‪ exim‬بالوامر التية‪:‬‬

‫‪sudo chown root:Debian-exim /etc/exim4/passwd‬‬


‫‪sudo chmod 640 /etc/exim4/passwd‬‬

‫في النهاية‪ ،‬حددث ضبط ‪ Exim4‬وأعد تشغيل الخدمة‪:‬‬

‫‪sudo update-exim4.conf‬‬
‫‪sudo service exim4 restart‬‬

‫د‪ .‬ضبط ‪SASL‬‬

‫يوفر هذا القسم معلوما ت حول ضبط خدمة ‪ saslauthd‬لتوفير الستيثاق لخادوم ‪.Exim4‬‬

‫أول خطوة هي تثبيت حزمة ‪ sasl2-bin‬من الطرفية بإدخال المر التي‪:‬‬

‫‪sudo apt-get install sasl2-bin‬‬

‫لضبط ‪ ،saslauthd‬عددل ملف الضبط ‪ /etc/default/saslauthd‬واضبط ‪ START=no‬إلى‪:‬‬

‫‪START=yes‬‬

‫ثتتتم يجتتتب أن يسكتتتون المستتتتخدم ‪ Debian-exim‬جتتتزصءا متتتن مجموعتتتة ‪ sasl‬لسكتتتي يستتتتخدم‬

‫‪ Exim4‬الخدمنة ‪:saslauthd‬‬

‫‪sudo adduser Debian-exim sasl‬‬

‫▲‬ ‫‪| 421‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫عليك الن تشغيل خدمة ‪:saslauthd‬‬

‫‪sudo service saslauthd start‬‬

‫ن‬
‫ضشبط الن ‪ Exim4‬مع ‪ SMTP-AUTH‬ليستخدم ‪ TLS‬واستيثاق ‪.SASL‬‬

‫ه‪ .‬مصادر‬

‫راجع موقع ‪ exim.org‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫يتوفر أي ص‬
‫ضا كتاب »‪.«Exim4 Book‬‬ ‫•‬

‫مصدر آخر هو صفحة ويسكي أوبنتو »‪.«Exim4‬‬ ‫•‬

‫▲‬ ‫‪| 422‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪ .3‬برمجية ‪Dovecot‬‬
‫ب متتع اعتبتتار الحمايتتة متتن الولويتتا ت؛ ويتتدعم‬
‫إن ‪ Dovecot‬هتتو عميتتل تستتليم البريتتد‪ ،‬مسكتتتو ة‬

‫صتتتيغتي صتتتندوق البريتتتد الرئيستتتتيتين‪ mbox :‬أو ‪Maildir‬؛ يشتتترح هتتتذا القستتتتم كيفيتتتتة ضتتتتبطه‬

‫كخادوم ‪ imap‬أو ‪.pop3‬‬

‫ا‪ .‬التثبيت‬

‫ظندفذ المر التي في الطرفية لتثبيت ‪:dovecot‬‬

‫‪sudo apt-get install dovecot-imapd dovecot-pop3d‬‬

‫ب‪ .‬الضبط‬

‫عددل الملف ‪ /etc/dovecot/dovecot.conf‬لضتتبط ‪ ،dovecot‬يمسكنتتك اختيتتار التتبروتوكول‬

‫التتتذي تريتتتد استتتتخدامه‪ ،‬حيتتتث يمسكتتتن أن يسكتتتون ‪ pop3‬أو ‪) pop3s‬أي ‪ pop3‬المتتتن(‪ ،‬أو ‪،imap‬‬

‫أو ‪) imaps‬أي ‪ imap‬المتن( ؛ شترح عتن هتذه التبروتوكول ت ختتارج عتن ظنطتاق هتذا السكتتاب‪ ،‬للمزيتد‬

‫من المعلوما ت راجع مقال ت ويسكيبيديا عنهم‪.‬‬

‫بروتوكتتتتتتونلي ‪ IMAPS‬و ‪ POP3S‬أكتتتتتتتثر أماصظنتتتتتتتا متتتتتتن بروتوكتتتتتتونلي ‪ IMAP‬و ‪ POP3‬لظنهمتتتتتتتا‬

‫يستتتخدمان تشتتفير ‪ SSL‬للتصتتال؛ بعتتد أن تختتتار التتبروتوكول‪ ،‬فعليتتك تعتتديل الستتطر التتتي فتتي‬

‫الملف ‪:/etc/dovecot/dovecot.conf‬‬

‫‪protocols = pop3 pop3s imap imaps‬‬

‫▲‬ ‫‪| 423‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ثم اختر صندوق البريد التذي تريتد اس تخدامه‪ ،‬حيتث يتدعم ‪ Dovecot‬الصتيغتين ‪maildir‬‬

‫و ‪ mbox‬؛ هاتان هما أشهر صيغتين مستعملتين للبريد؛ يملتتك كلهمتتا مزايتتا خاصتتصة بتته‪ ،‬ومشتتروحصة‬

‫في موقع ‪.Dovecot‬‬

‫بعتتد أن تختتتار ظنتتوع صتتندوق البريتتد‪ ،‬عتتددل الملتتف ‪/etc/dovecot/conf.d/10-mail.conf‬‬

‫وغدير السطر التي‪:‬‬

‫)‪mail_location = maildir:~/Maildir # (for maildir‬‬

‫أو‬

‫‪mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for‬‬


‫)‪mbox‬‬

‫ملحظة‪ :‬يجب عليك ضبط عميل ظنقل البريتد )‪ (MTA‬لنقتتل البريتتد التتوارد إلتى هتتذا النتوع متتن صتندوق البريتتد إذا‬
‫كان مختلصفا عنما ضبطته‪.‬‬

‫بعتتد الظنتهتتاء متتن ضتتبط ‪ ،dovecot‬يجتتب عليتتك إعتتادة تشتتغيل عفريتتت ‪ dovecot‬لتجتتدرب‬

‫عمل الخادوم‪:‬‬

‫‪sudo service dovecot restart‬‬

‫▲‬ ‫‪| 424‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫إذا فنعلتتت ‪ ،imap‬أو ‪pop3‬؛ فيجتب عليتتك أي ص‬


‫ضتا تجربتتة تستجيل التدخول باستتخدام الوامتر‬

‫‪ telnet localhost pop3‬أو ‪telnet localhost imap2‬؛ لتتترى إن شتتاهد ت شتتيصئا شتتبيصها بمتتا‬

‫يلي‪ ،‬فستعلم أن التثبيت والعداد قد ظنجحا‪:‬‬

‫‪user@localbox:~$ telnet localhost pop3‬‬


‫‪Trying 127.0.0.1...‬‬
‫‪Connected to localhost.localdomain.‬‬
‫‪Escape character is '^]'.‬‬
‫‪+OK Dovecot ready.‬‬

‫ج‪ .‬ضبط ‪Dovecot SSL‬‬

‫لضتتتتتتبط ‪ Dovecot‬ليستتتتتتتخدم ‪ ،SSL‬حتتتتتتدرر الملتتتتتتف ‪/etc/dovecot/conf.d/10-ssl.conf‬‬

‫وعددل السطر التية‪:‬‬

‫‪ssl = yes‬‬
‫‪ssl_cert = </etc/ssl/certs/dovecot.pem‬‬
‫‪ssl_key = </etc/ssl/private/dovecot.pem‬‬

‫يمسكنك الحصول على شهادة ‪ SSL‬من س لطة إصتدار الشتهادا ت أو إظنشتاء شتهادة ‪ SSL‬موقعتة‬

‫ذات صيا؛ الخيتتار الخيتتر هتو خيتار جيتد للبريتد اللسكتتتروظني‪ ،‬لن عملء ‪ SMTP‬ظنتتادصرا متتا يشتتسكون حتول‬

‫الشتتهادا ت الموقعتتة ذاتصيتتا؛ رجتتاصء نعتتد إلتتى الفصتتل التاستتع لمزيتتد متتن المعلومتتا ت حتتول إظنشتتاء شتتهادة‬

‫‪ SSL‬موقعتتة ذات صيتتا؛ يجتتب عليتتك الحصتتول علتتى ملتتف مفتتتاح وملتتف الشتتهادة بعتتد إظنشتتائك للشتتهادة؛‬

‫رجاصء اظنسخهما إلى المسكان النمشار إليه في ملف الضبط ‪./etc/dovecot/conf.d/10-ssl.conf‬‬

‫▲‬ ‫‪| 425‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫د‪ .‬ضبط الجدار الناري لخادوم البريد اللكتروني‬

‫عليتتك ضتتبط الجتتدار النتتاري للستتماح للتصتتال ت علتتى المنافتتذ الضتترورية للوصتتول إلتتى ختتادوم‬

‫ب آخر‪ ،‬وهي‪:‬‬
‫البريد من حاسو ت‬

‫‪IMAP – 143‬‬
‫‪IMAPs – 993‬‬
‫‪POP3 – 110‬‬
‫‪POP3s – 995‬‬

‫ه‪ .‬مصادر‬

‫راجع موقع ‪ Dovecot‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫ضا صفحة ويسكي أوبنتو »‪ «Dovecot‬فيها تفاصي ة‬


‫ل إضافية‪.‬‬ ‫أي ص‬ ‫•‬

‫▲‬ ‫‪| 426‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪ .4‬برمجية ‪Mailman‬‬
‫إن ‪ Mailman‬هتتتو برمجيتتتة مفتوحتتتة المصتتتدر لدارة ظنقاشتتتا ت البريتتتد اللسكتتتتروظني وقتتتوائم‬

‫الخبتتار اللسكتروظنيتتة؛ وتعتمتتد العديتتد متتن قتتوائم البريتتد المفتوحتتة المصتتدر )بمتتا فيهتتا قتتوائم بريتتد‬

‫أوبنتو( على ‪ Mailman‬كبرمجية قوائم البريد؛ حيث أظنها قوية وسهلة التثبيت والدارة‪.‬‬

‫ا‪ .‬التثبيت‬

‫يتتتوفر ‪ Mailman‬واجهتتتة ويتتتب للمتتتدراء والمستتتتخدمين؛ مستتتتخدصما ختتتادوم بريتتتد ختتتارجي‬

‫لرسال واستقبال الرسائل؛ حيث يعمل عمصل ممتاصزا مع خواديم البريد التية‪:‬‬

‫‪Postfix‬‬ ‫•‬
‫‪Exim‬‬ ‫•‬
‫‪Sendmail‬‬ ‫•‬
‫‪Qmail‬‬ ‫•‬

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

‫‪ Postfix‬أو ‪Exim‬؛ إذا أرد ت استخدام ‪ Mailman‬مع خادوم بريد مختلف‪ ،‬فرجاصء نعد إلى قستتم‬

‫المصادر لمزيتد من المعلوما ت‪.‬‬

‫ملحظة‪ :‬تحتاج إلى خادوم بريد وحيد فقط‪ ،‬و ‪ Postfix‬هو عميل ظنقل البريد الفتراضي في أوبنتو‪.‬‬

‫▲‬ ‫‪| 427‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪Apache2‬‬
‫لتثبيت ‪ ،apache2‬راجع الفصل الحادي عشر لمزيد من التفاصيل‪.‬‬

‫‪Postfix‬‬
‫راجع القسم الول من هذا الفصل لتعليما ت عن تثبيت وضبط ‪.Postfix‬‬

‫‪Exim4‬‬
‫لتثبيت ‪ ،Exim4‬راجع القسم الثاظني من هذا الفصل‪.‬‬

‫نتختتنزن ملفتتا ت الضتتبط فتتي مجلتتد ‪ /etc/exim4‬بعتتد تثتتبيت ‪exim4‬؛ وتسكتتون ملفتتا ت ضتتبط‬

‫‪ exim4‬مقسمة إلى عدة ملفا ت مختلفة افتراضت صيا فتي أوبنتتو؛ يمسكنتك تغييتر هتذا الس لوك بتعتديل‬

‫قيمة المتغير التي في ملف ‪:/etc/exim4/update-exim4.conf‬‬

‫'‪dc_use_split_config='true‬‬

‫‪Mailman‬‬
‫ظندفذ المر التي في الطرفية لتثبيت ‪:Mailman‬‬

‫‪sudo apt-get install mailman‬‬

‫تنسخ هذه الحزمة ملفا ت التثبيت إلتى مجلتد ‪ ،/var/lib/mailman‬وتثبتت ستسكربتا ت ‪CGI‬‬

‫فتتتي ‪/usr/lib/cgi-bin/mailman‬؛ وسنتنششتتتئ مستتتتخدم ليننسكتتتس المستتتمى ‪ ،list‬وكتتتذلك نتنششتتتئ‬

‫المجموعة ‪list‬؛ سنتمنلك عملية ‪ mailman‬لهذا المستخدم‪.‬‬

‫▲‬ ‫‪| 428‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ب‪ .‬الضبط‬

‫يفترض هتتذا القستم أظنتتك ثبتتتت ‪ mailman‬و ‪ apache2‬و ‪ postfix‬أو ‪ exim4‬بنجتاح؛ كتتل‬

‫ما بقي عليك هو ضبطهم‪.‬‬

‫مثا ة‬
‫ل عن ملتف ضتبط أباتشتي يتأتي متع ‪ Mailman‬الموجتود فتي ‪،/etc/mailman/apache.conf‬‬

‫ولسكي يستخدم أباتشي ملف الضبط هذا‪ ،‬فيجب أن نيننسخ إلى ‪:/etc/apache2/sites-available‬‬

‫\ ‪sudo cp /etc/mailman/apache.conf‬‬
‫‪/etc/apache2/sites-available/mailman.conf‬‬

‫هتتذا سنينششتتئ مضتتيصفا وهمصيتتا فتتي أباتشتتي لموقتع إدارة ‪Mailman‬؛ فدعتتل الن الضتتبط الجديتتد‬

‫وأعد تشغيل أباتشي‪:‬‬

‫‪sudo a2ensite mailman.conf‬‬


‫‪sudo service apache2 restart‬‬

‫يستتتتخدم ‪ Mailman‬أباتشتتتي ليشتتتدغل ستتتسكربتا ت ‪CGI‬؛ تسكتتتون ستتتسكربتا ت ‪ CGI‬مثبتتتتصة فتتتي‬

‫‪ ،/usr/lib/cgi-bin/mailman‬هتتتذا يعنتتتي أن وصتتتلة ‪ mailman‬ستتتتسكون علتتتى الرابتتتط التتتتالي‬

‫‪ http://hostname/cgi-bin/mailman‬؛ يمسكنتتتتتتتك إجتتتتتتتراء تعتتتتتتتديل ت علتتتتتتتى الملتتتتتتتف التتتتتتتتالي‬

‫‪ /etc/apache2/sites-available/mailman.conf‬لتعديل هذا السلوك‪.‬‬

‫‪Postfix‬‬
‫ستتتنربط النطتتتاق ‪ lists.example.com‬متتتع القائمتتتة البريديتتتة للدمتتتج متتتع ‪Postfix‬؛ رجتتتاصء‬

‫استبدل ‪ lists.example.com‬بالنطاق الذي تختاره‪.‬‬

‫▲‬ ‫‪| 429‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

:/etc/postfix/main.cf ‫ لضافة الضبط الضروري إلى ملف‬postconf ‫يمسكنك استخدام المر‬

sudo postconf -e 'relay_domains = lists.example.com'


sudo postconf -e 'transport_maps = hash:/etc/postfix/transport'
sudo postconf -e 'mailman_destination_recipient_limit = 1'

‫اظنظتتر أي ص‬
(transporter) «‫ للتحقتتق متتن أن لتديك »الناقتل‬/etc/postfix/master.cf ‫ضتتا فتي‬

:‫التي‬

mailman unix - n n - - pipe


flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-
mailman.py ${nexthop} ${user}

.‫ عندما نيسنلم بريةد ما إلى القائمة‬postfix-to-mailman.py ‫هذا سيستدعي السسكربت‬

‫ باستتتخدام خريطتتة الربتتط‬Mailman ‫ إلتتى ظناقتتل‬lists.example.com ‫اربتتط بيتتن النطتتاق‬

:/etc/postfix/transport ‫ وعددل الملف‬،(transport map)

lists.example.com mailman:

:‫ يبني خريطة الربط بإدخال المر التي في الطرفية‬Postfix ‫عليك الن جعل‬

sudo postmap -v /etc/postfix/transport

:‫ لتفعيل الضبط الجديد‬Postfix ‫ثم أعد تشغيل‬

sudo service postfix restart

▲ | 430
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪Exim4‬‬
‫تستطيع تشغيل خادوم ‪ Exim‬بإدخال المر التي في الطرفية بعد تثبيت ‪:Exim4‬‬

‫‪sudo service exim4 start‬‬

‫ولجعتتل ‪ mailman‬يعمتتل متتع ‪ ،Exim4‬فيجتتب عليتتك أن تضتتبط ‪Exim4‬؛ وكمتتا نذشكتتنر ستتابصقا‪،‬‬

‫يستخدم ‪ Exim4‬افتراضصيا عتت ددة ملفتتا ت ضتبط للظنتواع المختلفتة؛ لمزيتد متن التفاصتيل‪ ،‬ارجتع إلتتى‬

‫موقتتع ويتتتب ‪ .Exim‬يجتتب عليتتك إضتتتافة ملتتف ضتتبط جديتتتد يحتتتوي علتتى أظنتتواع الضتتتبط التيتتتة‬

‫لتشغيل ‪:mailman‬‬

‫‪) Main‬الرئيسي(‪.‬‬ ‫‪.1‬‬

‫‪) Transport‬النقل(‪.‬‬ ‫‪.2‬‬

‫‪) Router .3‬الموجه(‪.‬‬

‫نينششتتئ ‪ Exim‬ملتتف ضتتبط رئيستتي بتتترتيب كتتل ملفتتا ت الضتتبط الصتتغيرة هتتذه؛ ولتتذلك ترتيتتب‬

‫ي جصدا‪.‬‬
‫هذه الملفا ت أمةر ضرور ة‬

‫▲‬ ‫‪| 431‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

‫الرئيسي‬

‫( يجتتب أن نتختتنزن فتتي مجلتتد‬Main) ‫جميتتع ملفتتا ت الضتتبط التتتي تنتمتتي إلتتى النتتوع الرئيستتي‬

‫ يمسكنتتتتتك إضتتتتتافة المحتويتتتتتا ت التيتتتتتة فتتتتتي ملتتتتتف جديتتتتتد نمستتتتتمى‬، /etc/exim4/conf.d/main/

:04_exim4-config_mailman

# start
# Home dir for your Mailman installation -- aka Mailman's
prefix
# directory.
# On Ubuntu this should be "/var/lib/mailman"
# This is normally the same as ~mailman
MM_HOME=/var/lib/mailman
#
# User and group for Mailman, should match your --with-mail-gid
# switch to Mailman's configure script. Value is
normally "mailman"
MM_UID=list
MM_GID=list
#
# Domains that your lists are in - colon separated list
# you may wish to add these into local_domains as well
domainlist mm_domains=hostname.com
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# These values are derived from the ones above and should not
need
# editing unless you have munged your mailman installation
#
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file
when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
# end

▲ | 432
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

‫النقل‬

‫( يجتتتتب أن نتختتتتنزن فتتتتي مجلتتتتد‬transport ) ‫جميتتتتع الملفتتتتا ت التتتتتي تنتمتتتتي إلتتتتى ظنتتتتوع النقتتتتل‬

‫ ؛ تستتتطيع إضتتافة المحتويتتا ت التيتتة إلتتى ملتتف جديتتد باستتم‬/etc/exim4/conf.d/transport/

:40_exim4-config_mailman

mailman_transport:
driver = pipe
command = MM_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\
+.*)?}{\$1}}} \
{post}}' \
$local_part
current_directory = MM_HOME
home_directory = MM_HOME
user = MM_UID
group = MM_GID

‫الموجه‬

‫( يجتتتتب أن نتختتتتنزن فتتتتي مجلتتتتد‬router ) ‫جميتتتتع الملفتتتتا ت التتتتتي تنتمتتتتي إلتتتتى ظنتتتتوع المتتتتوجه‬

‫ ؛ تستتتتتطيع إضتتتتافة المحتويتتتتا ت التيتتتتة إلتتتتى ملتتتتف جديتتتتد باستتتتم‬/etc/exim4/conf.d/router/

:101_exim4-config_mailman

mailman_router:
driver = accept
require_files = MM_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport

▲ | 433
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

‫ لسكن ترتيب ملفا ت ضبط التوجيه مهم؛ حيث يجتتب‬،‫ ترتيب ملفا ت الضبط » الرئيسي« و» النقل« غير مهم‬:‫تحذير‬
‫؛ هتتتذان الملفتتتان يحتويتتتان علتتتى ظنفتتتس ظنتتتوع‬200_exim4-config_primary ‫أن يظهتتتر هتتتذا الملتتتف قبتتتل ملتتتف‬
.‫ وتسكون الولوية للذي يأتي أوصل‬،‫المعلوما ت‬

Mailman
:‫ تستطيع تشغيله بالمر التي‬،mailman ‫بعد تثبيت‬

sudo service mailman start

:‫عليك الن إظنشاء قائمة بريدية افتراضية؛ وذلك بتنفيذ ما يلي‬

sudo /usr/sbin/newlist mailman

Enter the email address of the person running the list: user
at ubuntu.com
Initial mailman password:
To finish creating your mailing list, you must edit your
/etc/aliases (or
equivalent) file by adding the following lines, and possibly
running the
`newaliases' program:

## mailman mailing list


mailman: "|/var/lib/mailman/mail/mailman
post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman
admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman
bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman
confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman
join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman
leave mailman"

▲ | 434
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪mailman-owner:‬‬ ‫‪"|/var/lib/mailman/mail/mailman‬‬
‫"‪owner mailman‬‬
‫‪mailman-request:‬‬ ‫‪"|/var/lib/mailman/mail/mailman‬‬
‫"‪request mailman‬‬
‫‪mailman-subscribe:‬‬ ‫‪"|/var/lib/mailman/mail/mailman‬‬
‫"‪subscribe mailman‬‬
‫‪mailman-unsubscribe:‬‬ ‫‪"|/var/lib/mailman/mail/mailman‬‬
‫"‪unsubscribe mailman‬‬

‫‪Hit enter to notify mailman owner...‬‬

‫‪#‬‬

‫لقتتد ضتتبطنا إمتتا ‪ Postfix‬أو ‪ Exim4‬للتعتترف علتتى كتتل البريتتد متتن ‪mailman‬؛ لتتذلك ليتتس‬

‫ضرورصيا إظنشاء أدية قيتود جديتتدة فتتي ‪/etc/aliases‬؛ إذا أجريتت أديتتة تعتتديل ت إلتتى ملفتتا ت الضتبط‪،‬‬

‫فرجاصء تأكد أظنك أعد ت تشغيل هذه الخدما ت قبل الكمال إلى القسم التي‪.‬‬

‫ملحظظظة‪ :‬ل نيستتتخشدم ‪ Exim4‬الستتماء البديلتتة فتتي العلتتى لتمريتتر البريتتد إلتتى ‪ ،Mailman‬حيتتث أظنتته يستتتخدم‬
‫طريقتتة »الكتشتتاف«؛ لتجاهتتل الستتماء البديلتتة )‪ (aliases‬عنتتد إظنشتتاء القائمتتة‪ ،‬فأضتتف الستتطر ‪ MTA=None‬إلتتى‬
‫ملف ضبط ‪ ،Mailman‬الذي هو ‪./etc/mailman/mm_cfg.py‬‬

‫ج‪ .‬الدارة‬

‫لنفتتتترض أن لتتتتديك تثبيصتتتتتا افتراضتتتتصيا وأنظنتتتتك أبقيتتتتت علتتتتى ستتتتسكربتا ت ‪ CGI‬فتتتتي المجلتتتتد التتتتتالي‬

‫‪ ./usr/lib/cgi-bin/mailman/‬يتتوفر ‪ Mailman‬أداة ويتتب للدارة؛ ودجتته متصتتفحك إلتتى العنتتوان‬

‫التي للوصول إليها‪:‬‬

‫‪http://hostname/cgi-bin/mailman/admin‬‬

‫▲‬ ‫‪| 435‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ستظهر القائمتتة البريديتتة الفتراضتية علتى الشاشتة وهتي ‪mailman‬؛ إذا ضتغطت علتى استم‬

‫القائمة البريدية‪ ،‬فس نتسأل عن كلمتتة المتترور للستتتيثاق؛ إذا أدخلتت كلمتتة مترور صتحيحة‪ ،‬فستتتسكون‬

‫قادصرا على تغيير العدادا ت الدارة للقائمة البريدية؛ يمسكنك إظنشاء قائمة بريدية جديدة باستتتخدام‬

‫الداة السطرية ‪/usr/sbin/newlist‬؛ أو بشسكل بديل يمسكنك إظنشاؤها عبر واجهة الويب‪.‬‬

‫د‪ .‬المستخدمون‬

‫يتتوفر ‪ Mailman‬واجهتتة ويتتب للمستتتخدمين‪ ،‬ودجتته متصتتفحك ظنحتتو العنتتوان التتتي للوصتتول‬

‫لتلك الصفحة‪:‬‬

‫‪http://hostname/cgi-bin/mailman/listinfo‬‬

‫ستتتتظهر القائمتتتة البريديتتتة الفتراضتتتية ‪ mailman‬علتتتى الشاشتتتة؛ وإذا ضتتتغطت علتتتى استتتم‬

‫القائمتتتة البريديتتتة‪ ،‬فستتتيظهر ظنمتتتوذج للشتتتتراك فيهتتتا؛ يمسكنتتتك إدختتتال بريتتتدك اللسكتتتتروظني واستتتمك‬

‫)اختيتتاري( وكلمتتة المتترور للشتتتراك؛ سنير نستتل بريتتد للتتدعوة إلتتى بريتتدك اللسكتتتروظني‪ ،‬ويمسكنتتك اتبتتاع‬

‫التعليما ت في البريد للشتراك‪.‬‬

‫ه‪ .‬مصادر‬

‫دليل تثبيت ‪.GNU Mainman‬‬ ‫•‬

‫‪.HOWTO – Using Exim 4 and Mailman 2.1 together‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة ويسكي أوبنتو »‪.«Mailman‬‬ ‫•‬

‫▲‬ ‫‪| 436‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪ .5‬ترشيح البريد‬
‫واحدة متن أكتتبر المشتاكل متع البريتتد اللسكتتروظني اليتوم هتي مشتتسكلة البريتتد غيتر المرغتوب فيته‬

‫) ‪ Unsolicited Bulk Email‬أو اختصاصرا ‪ (UBE‬المعروف أي ص‬


‫ضا بالبريد العشوائي ) ‪(SPAM‬؛ قتتد‬

‫ضا على فيروسا ت أو أشتسكاتل أخترى متن البرمجيتا ت الخبيثتة؛ ووفصقتا لبعتض‬
‫تحتوي هذه الرسائل أي ص‬

‫التقارير‪ ،‬تشغل هذه الرسائل حيصزا كبيصرا من البريد اللسكتروظني النمرنسل عبر الظنترظنت‪.‬‬

‫سيشتتتترح هتتتتذا القستتتتتم طريقتتتتة دمتتتتتج ‪ ،Amavisd-new‬و ‪ ،Spamassassin‬و ‪ClamAV‬‬

‫مع عميل ظنقل البريد ‪Postfix‬؛ يمسكن أي ص‬


‫ضا التحقق من البريد عبر تمريره خلل مرشحا ت خارجية؛‬

‫هتتتتتذه المرشتتتتتحا ت يمسكنهتتتتتا فتتتتتي بعتتتتتض الحيتتتتتان تحديتتتتتد إذا متتتتتا كتتتتتاظنت الرستتتتتالنة عشتتتتتوائيصة دون‬

‫الحاجتتتة إلتتتى معالجتهتتتا ببرمجيتتتا ت تستتتتهلك المتتتوارد؛ أشتتتهر هتتتذه المرشتتتحا ت هتتتي ‪opendkim‬‬

‫و ‪.python-policyd-spf‬‬

‫إن ‪ Amavisd-new‬هتتتو برظنامتتتج نمغدلتتتف ) ‪ (wrapper‬يستتتتطيع استتتتدعاء أي عتتتدد متتتن‬ ‫•‬

‫برامج ترشيح المحتوى لستسكشاف الرسائل العشوائية‪ ،‬وللتصدي للفيروسا ت ‪...‬إلخ‪.‬‬

‫ ت عددة لترشيح البريد اعتماصدا على محتوى الرسالة‪.‬‬


‫يستخدم ‪ Spamassassin‬آليا ت‬ ‫•‬

‫إن ‪ ClamAV‬هو مضاد فيروسا ت مفتوح المصدر‪.‬‬ ‫•‬

‫يتتتتوفر ‪ opendkim‬متتتتا يستتتتمى ‪) Milter‬أي ‪ (Sendmail Mail Filter‬إلتتتتى المعيتتتتار‬ ‫•‬

‫القياسي ‪) DKIM‬أي ‪.(DomainKeys Identified Mail‬‬

‫نيفدعتتتتتتتل ‪ python-policyd-spf‬تحقتتتتتتتق ‪) SPF‬اختصتتتتتتتار للعبتتتتتتتارة ‪Sender Policy‬‬ ‫•‬

‫‪ (Framework‬مع ‪.Postfix‬‬

‫▲‬ ‫‪| 437‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫هذه هي آلية جمع القطع السابقة‪:‬‬

‫نتقنبل رسالة البريد اللسكتروظني من ‪.Postfix‬‬ ‫•‬

‫نتمتتنرر الرستتالة إلتتى أي مرشتتحا ت خارجيتتة مثتتل ‪ opendkim‬و ‪python-policyd-spf‬‬ ‫•‬

‫في هذه الحالة‪.‬‬

‫ثم نيعاشلج ‪ Amavisd-new‬الرسالة‪.‬‬ ‫•‬

‫ثتتم نيستتتخندم ‪ ClamAV‬لفحتتص الرستتالة؛ إذا حتتو ت الرستتالة علتتى فيتتروس‪ ،‬فسيرفضتتها‬ ‫•‬

‫‪.Postfix‬‬

‫ستتنتحنلل الرستتائل »النظيفتتة« متتن ‪ Spamassassin‬للتحقتتق إذا كتتاظنت الرستتالة هتتي رستتالة‬ ‫•‬

‫عشتتتتتتتوائية؛ ثتتتتتتتم يضتتتتتتتيف ‪ Spamassassin‬أستتتتتتتطر ‪ X-Header‬ليستتتتتتتمح للبرمجيتتتتتتتة‬

‫‪ Amavisd-new‬بإكمال معالجة الرسالة‪.‬‬

‫على سبيل المثال‪ ،‬إذا كان » رصيد العشوائية« لرستتالة متتا أكتبر متن خمستتين بالمئتتة‪ ،‬فيمسكتن أن‬

‫نتتتزال الرستتالة تلقائصيتتا متتن الطتتابور )‪ (queue‬حتتتى دون إعلم المتلقتتي؛ طريقتتة أختترى للتعامتتل متتع‬

‫هتتذه الرستتائل هتتي إيصتتالهم لعميتتل مستتتخدم البريتتد )‪ (MUA‬والستتماح للمستتتخدم بتتأن يتعامتتل متتع‬

‫الرسالة بما يراه مناسصبا‪.‬‬

‫▲‬ ‫‪| 438‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ا‪ .‬التثبيت‬

‫ ت تفصيلية عن تثبيت ‪.Postfix‬‬


‫راجع القسم الول من هذا الفصل لمعلوما ت‬

‫أدخل المرين التيين في سطر الوامر لتثبيت بقية البرمجيا ت‪:‬‬

‫‪sudo apt-get install amavisd-new spamassassin clamav-daemon‬‬


‫‪sudo apt-get install opendkim postfix-policyd-spf-python‬‬

‫هنالتتك بعتتض الحتتزم الختترى التتتي يمسكتتن أن نتدنمتتج متتع ‪ Spamassassin‬لكتشتتاف أفضتتل‬

‫للرسائل العشوائية‪:‬‬

‫‪sudo apt-get install pyzor razor‬‬

‫بالضتتتافة إلتتتى برمجيتتتا ت الترشتتتيح الرئيستتتية‪ ،‬ستتتنحتاج إلتتتى أدوا ت الضتتتغط لنعالتتتج بعتتتض‬

‫مرفقا ت البريد‪:‬‬

‫‪sudo apt-get install arj cabextract cpio lha nomarch pax rar‬‬
‫‪unrar unzip zip‬‬

‫ملحظظظة‪ :‬إذا لتتم نيعنثتتر علتتى بعتتض الحتتزم الستتابقة‪ ،‬فتأكتتد متتن تفعيتتل مستتتودع ‪ multiverse‬فتتي الملتتف التتتالي‬
‫‪./etc/apt/sources.list‬‬

‫إذا أجريتت ن‬
‫ت تعتتديل ت ت علتتى ذاك الملتتف‪ ،‬فتأكتتد متتن تحتتديث فهتترس الحتتزم بتنفيتتذ المتتر ‪sudo‬‬

‫‪ apt-get update‬قبل محاولة التثبيت مرصة أخرى‪.‬‬

‫▲‬ ‫‪| 439‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ب‪ .‬الضبط‬

‫علينا الن ضبط كل شيء مع بعضه بع ص‬


‫ضا لترشيح البريد‪.‬‬

‫‪ClamAV‬‬
‫الستتتلوك الفتراضتتتي لبرمجيتتتة ‪ ClamAV‬تناستتتب احتياجاتنتتتا؛ للمزيتتتد متتتن خيتتتارا ت الضتتتبط‬

‫الخاصة ببرمجية ‪ ،ClamAV‬راجع ملفا ت الضبط في ‪./etc/clamav‬‬

‫أضف المستتخدم ‪ clamav‬إلتى المجموعتة ‪ amavis‬لسكتي يملتك ‪ Amavisd-new‬الوص ول‬

‫الملئم لتفحص الملفا ت‪:‬‬

‫‪sudo adduser clamav amavis‬‬


‫‪sudo adduser amavis clamav‬‬
‫‪Spamassassin‬‬

‫يعثر ‪ Spamassassin‬تلقائ صيتتا علتتى المسكوظنتتا ت الضتتافية ويستتتخدمها إن تتتوفر ت؛ هتتذا يعنتتي‬

‫أظنه ل حاجة لضبط ‪ pyzor‬و ‪.razor‬‬

‫عتتتتددل ملتتتتف الضتتتتبط ‪ /etc/default/spamassassin‬لتفعيتتتتل عفريتتتتت ‪،Spamassassin‬‬

‫عددل قيمة ‪ ENABLED=0‬إلى‪:‬‬

‫‪ENABLED=1‬‬

‫ثم ابدأ تشغيل العفريت‪:‬‬

‫‪sudo service spamassassin start‬‬

‫▲‬ ‫‪| 440‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

Amavisd-new
‫ بتعتتديل‬Amavisd-new ‫ ف دعل استسكشتتاف الرستتائل العشتتوائية ومضتتاد الفيروستتا ت فتتي‬،‫أوصل‬

:/etc/amavis/conf.d/15-content_filter_mode ‫الملف‬

use strict;

# You can modify this file to re-enable SPAM checking through


spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Uncomment the two lines below to enable it
#

@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \
$bypass_virus_checks_re);

#
# Default SPAM checking mode
# Uncomment the two lines below to enable it
#

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \
$bypass_spam_checks_re);

1; # insure a defined return

‫قد تسكون إعادة معالجة الرستائل العشتوائية فسكترصة س يئصة لن العنتوان النمعتاد مزيتةف غالصبتا؛ ربمتتا‬

‫ لتضتتتتتتتتتتتتتتتبط‬/etc/amavis/conf.d/20-debian_defaults ‫ترغتتتتتتتتتتتتتتتب بتعتتتتتتتتتتتتتتتديل الملتتتتتتتتتتتتتتتف‬

:‫ كما يلي‬،D_BOUNCE ‫ بدصل من‬D_DISCARD ‫ إلى‬$final_spam_destiny

$final_spam_destiny = D_DISCARD;

▲ | 441
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

:‫( المزيد من الرسائل كرسائل عشوائية‬flag) ‫وربما ترغب بتعديل قيمة الخيارا ت التية لتعليم‬

$sa_tag_level_deflt = -999; # add spam info headers if at, or


above that level
$sa_tag2_level_deflt = 6.0; # add 'spam detected' headers at
that level
$sa_kill_level_deflt = 21.0; # triggers spam evasive actions
$sa_dsn_cutoff_level = 4; # spam level beyond which a DSN is
not sent

‫ فربمتتا تحتتاج‬،‫ للنطتتاق‬MX ‫( مختلصفتتا عتن ستجل‬hostname) ‫إذا كان اسم المضيف للختتادوم‬

،‫ يتدو صيا؛ وإذا كتان الختادوم يستتتلم البريتتد لكتتثر متتن ظنطتتاق‬$myhostname ‫إلى أن تضبط الخيتتار‬

‫@ أي ص‬local_domains_acl ‫فيجب تخصيص الخيار‬


/etc/amavis/co ‫ وذلك بتعديل الملتتف‬،‫ضا‬

:nf.d/50-user

$myhostname = 'mail.example.com';
@local_domains_acl = ( "example.com", "example.org" );

:/etc/amavis/conf.d/50-user ‫ فعليك استخدام ما يلي في‬،‫إذا أرد ت تغطية أكثر من ظنطاق‬

@local_domains_acl = qw(.);

:‫ بعد الضبط‬Amavisd-new ‫يجب إعادة تشغيل‬

sudo service amavis restart

▲ | 442
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫‪ .6‬قائمة ‪ DKIM‬البيضاء‬
‫يمسكتتتتن ضتتتبط ‪ Amavisd-new‬ليضتتتيف عنتتتاوين متتتن ظنطاقتتتا ت معينتتتة متتتع مفاتيتتتتح ظنطتتتاق‬

‫)‪ (Domain Keys‬صالحة إلى القائمة البيضتتاء )‪(Whitelist‬؛ هنالتتك بعتتض النطاقتتا ت المضتتبوطة‬

‫مسبصقا في ‪:/etc/amavis/conf.d/40-policy_banks‬‬

‫هذه بعض المثلة لضبط القائمة البيضاء لنطاق‪:‬‬

‫التعليمتتتتة ‪ :'example.com' =>‎ 'WHITELIST',‬ستضتتتتيف أي عنتتتتوان متتتتن النطتتتتاق‬ ‫•‬

‫"‪ "example.com‬إلى القائمة البيضاء‪.‬‬

‫التعليمتتة ‪ :'.example.com' =>‎ 'WHITELIST',‬ستضتتيف أي عنتتوان متتن أي ظنطتتاق فرعتتي‬ ‫•‬

‫للنطاق "‪ "example.com‬ويملك توقيع صالح )‪ (valid signature‬إلى القائمة البيضاء‪.‬‬

‫التعليمتتتتتة ‪ :'.example.com/@example.com' =>‎ 'WHITELIST',‬إضتتتتتافة أي‬ ‫•‬

‫عنتتوان متتن النطاقتتا ت الفرعيتتة للنطتتاق "‪ "example.com‬التتذي يستتتخدم توقيتتع النطتتاق‬

‫الب " ‪."example.com‬‬

‫التعليمة ‪ :'./@example.com' =>‎ 'WHITELIST',‬يضيف العناوين من توقيع صالح‬ ‫•‬

‫من "‪ "example.com‬هذا يستخدم عادصة لمجوعا ت النقاش التي تونقع رسائلها‪.‬‬

‫يمسكن أن يملك ظنطا ةق واحد أكثر من ضبط للقائمة البيضتتاء؛ عليتتك إعتتادة تشتتغيل ‪amavisd-‬‬

‫‪ new‬بعد تعديل الملف‪:‬‬

‫‪sudo service amavis restart‬‬

‫▲‬ ‫‪| 443‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

‫ فإن الرسالة لن تحصل علتتى أي فحتص متتن‬،‫ في هذا السياق؛ عندما نيضاف النطاق إلى القائمة البيضاء‬:‫ملحظة‬
.‫الفيروسا ت أو الرسائل العشوائية؛ ربما يسكون أو ل يسكون هذا هو السلوك الذي ترغبه لهذا النطاق‬

Postfix ‫ افي‬.‫ا‬

:Postfix ‫أدخل ما يلي في شمنحث الطرفية لدمج‬

sudo postconf -e 'content_filter = smtp-amavis: \


[127.0.0.1]:10024'

:‫ وأضف السطر التية إلى ظنهاية الملف‬/etc/postfix/master.cf ‫ثم عددل الملف‬

smtp-amavis unix - - - - 2 smtp


-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o
receive_override_options=no_header_body_checks,no_unknown_recip
ient_checks

▲ | 444
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫خدما ت البريد اللسكتروظني‬

:«pickup» ‫ضا أضف السطرين التيين مباشرصة بعد خدمة النقل‬


‫أي ص‬

-o content_filter=
-o receive_override_options=no_header_body_checks

‫هذا ستيمنع الرستائل النمو نلتدة للتبلي غ عتن الرستائل العشتوائية متن تصتنيفها كرستائل عش وائية؛‬

:Postfix ‫أعد الن تشغيل‬

sudo service postfix restart

.‫يجب الن أن يسكون ترشيح المحتوى والعثور على الفيروسا ت نمفنعصل‬

‫ التختبار‬.‫ب‬

:‫ يستمع‬Amavisd-new SMTP ‫ اختبر أن‬،‫أوصل‬

telnet localhost 10024


Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
^]

:‫ يجب أن نتشاشهد‬،‫( الرسائل التي نتمنرر عبر نمردشح المحتوى‬header) ‫وفي ترويسة‬

X-Spam-Level:
X-Virus-Scanned: Debian amavisd-new at example.com
X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0
tests=AWL, BAYES_00
X-Spam-Level:

▲ | 445
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ملحظة‪ :‬قد تختلف النتائج المعروضة عنمتا س يظهر عنتدك‪ ،‬لسكتن متن المهتم وجتود القيتدين ‪X-Virus-Scanned‬‬
‫و ‪.X-Spam-Status‬‬

‫ج‪ .‬استكشاف التخطاء‬

‫أفضتتل طريقتتة لمعرفتتة ستتبب حتتدوث مشتتسكلة متتا هتتي مراجعتتة ملفتتا ت الستتجل‪ .‬لتعليمتتا ت‬
‫ ت عتتن‬

‫التسجيل في ‪ Postfix‬راجع القسم الول من هذا الفصل‪.‬‬

‫يستتتخدم ‪ Amavisd-new‬البرمجيتتة ‪ Syslog‬لرستتال الرستتائل إلتتى ‪/var/log/mail.log‬؛‬

‫يمسكن زيتادة مقتدار التفاصتيل بإضتافة الخيتار ‪ $log_level‬إلتى ملتف ‪/etc/amavis/conf.d/50-‬‬

‫‪ ،user‬وضبط القيمة من ‪ 1‬إلى ‪:5‬‬

‫;‪$log_level = 2‬‬

‫ملحظة‪ :‬عند زيادة درجة السهاب لسجل ‪ ،Amavisd-new‬فسيزداد ظناتج سجل ‪ Spamassassin‬أي ص‬
‫ضا‪.‬‬

‫يمسكن زيادة مستوى التسجيل لبرمجية ‪ ClamAV‬بتعديل الملتتف ‪/etc/clamav/clamd.conf‬‬

‫وضبط الخيار التي‪:‬‬

‫‪LogVerbose true‬‬

‫افتراضصيا‪ ،‬سنيرشسل ‪ ClamAV‬رسائل السجل إلى ‪./var/log/clamav/clamav.log‬‬

‫▲‬ ‫‪| 446‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدما ت البريد اللسكتروظني‬

‫ملحظة‪ :‬بعد تغيير إعدادا ت التسجيل للبرمجيا ت‪ ،‬تذكر أن تعيد تشغيل الخدمة لسكي تأخذ العدادا ت الجديدة‬
‫مفعولها؛ أي ص‬
‫ضا تذكر أن تعيد القيمة الفتراضية بعد أن تحل المشسكلة‪.‬‬

‫د‪ .‬مصادر‬

‫للمزيد من المصادر حول ترشيح البريد‪ ،‬راجع الوصل ت التية‪:‬‬

‫توثيق ‪.Amavisd-new‬‬ ‫•‬

‫توثيق ‪ ClamAV‬وويسكي ‪.ClamAV‬‬ ‫•‬

‫ويسكي ‪.Spamassassin‬‬ ‫•‬

‫صفحة ‪ Pyzor‬الرئيسية‪.‬‬ ‫•‬

‫صفحة ‪ Razor‬الرئيسية على سورس فورج‪.‬‬ ‫•‬

‫موقع ‪.DKIM.org‬‬

‫‪.Postfix Amavis New‬‬ ‫•‬

‫أي ص‬
‫ضا‪ ،‬تستطيع أن تسأل أسئلتك في قناة ‪ #ubuntu-sever‬على خادوم ‪.freenode‬‬ ‫•‬

‫▲‬ ‫‪| 447‬‬


‫تطبيقات المحادثة‬
‫‪16‬‬

‫▲‬ ‫‪| 448‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت المحادثة‬

‫ستتنناقش فتتي هتتذا الفصتتل كيفيتتة تثتتبيت وضتتبط ختتادوم ‪ (ircd-irc2) IRC‬وستتنناقش أي ص‬
‫ضتتا‬

‫كيفية تثبيت وضبط خادوم المراسلة الفورية ‪.Jabber‬‬

‫‪ .1‬خادوم ‪IRC‬‬
‫يحتتتوي مستتتودع أوبنتتتو علتتى العديتتد متتن ختتواديم ‪ ،IRC‬يشتترح هتتذا القستتم كيفيتتة تثتتبيت‬

‫وضبط خادوم ‪ IRC‬الصلي ‪.ircd-irc2‬‬

‫ا‪ .‬التثبيت‬

‫أد ش‬
‫خل المر التي في الطرفية لتثبيت خادوم ‪:ircd-irc2‬‬

‫‪sudo apt-get install ircd-irc2‬‬

‫نيختتنزن ملتتف الضتتبط فتتي مجلتتد ‪ ،/etc/ircd‬والتوثيتتق متتتوفةر فتتي المجلتتد فتتي المستتار التتتالي‪:‬‬

‫‪./usr/share/doc/ircd-irc2‬‬

‫ب‪ .‬الضبط‬

‫يمسكتتتن أن نتضتتتنبط إعتتتدادا ت ‪ IRC‬بملتتتف الضتتتبط ‪/etc/ircd/ircd.conf‬؛ يمسكنتتتك ضتتتبط استتتم‬

‫مضيف ‪ IRC‬بتعديل السطر التي‪:‬‬

‫‪M:irc.localhost::Debian ircd default configuration::000A‬‬

‫▲‬ ‫‪| 449‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت المحادثة‬

‫رجتتاصء تأكتتد أظنتتك تضتتيف أستتماء ‪ DNS‬البديلتتة لستتم مضتتيف ‪IRC‬؛ علتتى ستتبيل المثتتال‪ ،‬إذا ضتتبطت‬

‫‪ irc.liveciper.com‬كاستتتم مضتتتيف ‪IRC‬؛ فتأكتتتد أن ‪ irc.liveciper.com‬نينحتتتل فتتتي ختتتادوم أستتتماء‬

‫المضيفين عندك؛ ل يتوجب أن يسكون اسم مضيف ‪ IRC‬هو ظنفسه اسم مضيف الخادوم‪.‬‬

‫يمسكن ضبط معلوما ت مدير ‪ IRC‬بتعديل السطر التي‪:‬‬

‫‪A:Organization, IRC dept.:Daemon <ircd@example.irc.org>:Client‬‬


‫‪Server::IRCnet:‬‬

‫عليتتك إضتتافة أستتطر خاصتتة لضتتبط قائمتتة بالمنافتتذ التتتي يستتتمع إليهتتا ‪IRC‬؛ ولضتتبط »الوراق‬

‫العتمادية للمشغل« ‪ ،‬ولتضبط الستيثاق من العميل ‪ ...‬إلخ‪ .‬رجاصء ارجع إلى المثال عن ملف الضبط‬

‫الموجود في ‪./usr/share/doc/ircd-irc2/ircd.conf.example.gz‬‬

‫لفتتتة ‪ IRC‬هتتي الرستتالة التتتي تظهتتر فتتي عميتتل ‪ IRC‬عنتتدما يتصتتل إلتتى الختتادوم‪ ،‬ويمسكتتن أن‬

‫نتضنبط في الملف ‪./etc/ircd/ircd.motd‬‬

‫بعد إجراء التعديل ت الضرورية لملف الضبط‪ ،‬تستطيع إعادة تشغيل خادوم ‪ IRC‬بتنفيذ المر التي‪:‬‬

‫‪sudo service ircd-irc2 restart‬‬

‫ج‪ .‬مصادر‬

‫ربما تسكون مهتصما بإلقاء ظنظرة إلى خواديم ‪ IRC‬الخرى المتوفرة فتتي مستتتودعا ت أوبنتتتو‪،‬‬ ‫•‬

‫التي تتضمن ‪ ،ircd-ircu‬و ‪.ircd-hybrid‬‬

‫ارجع إلى ‪ IRCD FAQ‬للمزيد من التفاصيل حول خادوم ‪.IRC‬‬ ‫•‬

‫▲‬ ‫‪| 450‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت المحادثة‬

‫‪ .2‬خادوم المراتسلة الفورية ‪Jabber‬‬


‫إن ‪ Jabber‬هتتتو بروتوكتتتول مراستتتلة فوريتتتة مبنتتتي علتتتى ‪) XMPP‬معيتتتار مفتتتتوح للمراستتتلة‬

‫الفوريتتة( ونيستتتخندم بواستتطة عتت ددة برمجيتتا ت مشتتهورة‪ .‬يشتترح هتتذا القستتم طريقتتة إعتتداد ختتادوم‬

‫‪ Jabberd 2‬على شبسكة ‪ LAN‬محلية؛ يمسكن أن نيع ندل هذا الضتبط لت وفير ختدما ت تبتادل الرستائل‬

‫فورصيا عبر الظنترظنت‪.‬‬

‫ا‪ .‬التثبيت‬

‫لتثبيت ‪ ،jabberd2‬أد ش‬
‫خل المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install jabberd2‬‬

‫ب‪ .‬الضبط‬

‫ي ضتتبط ‪ XML‬نيستتتخندمان لضتتبط ‪ Jabberd2‬لستتتيثاق ‪ Berkeley DB‬متتن‬ ‫ن‬


‫هنالتتك ملفتت د‬

‫المستتتتخدم؛ هتتتذا شتتتسكل بستتتيط جتتت صدا متتتن أشتتتسكال الستتتتيثاق؛ لسكتتتن يمسكتتتن ضتتتبط ‪ Jabberd2‬لسكتتتي‬

‫نيستخدم ‪ ،LDAP‬أو ‪ ،MySQL‬أو ‪... PostgreSQL‬إلخ‪ .‬للستيثاق من المستخدم‪.‬‬

‫أوصل‪ ،‬عددل الملف ‪ /etc/jabberd2/sm.xml‬مغديصرا‪:‬‬

‫>‪<id>jabber.example.com</id‬‬

‫ملحظة‪ :‬استبدل ‪ jabber.example.com‬باسم المضيف أو بمعدرف ‪ ID‬آخر لخادومك‪.‬‬

‫▲‬ ‫‪| 451‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫تطبيقا ت المحادثة‬

‫الن في قسم >‪ ،<storage‬عددل قيمة >‪ <driver‬إلى‪:‬‬

‫>‪<driver>db</driver‬‬

‫ثم في ملف ‪ ،/etc/jabberd2/c2s.xml‬عددل في قسم >‪:<local‬‬

‫>‪<id>jabber.example.com</id‬‬

‫وعددل أي ص‬
‫ضا >‪ <module‬في قسم >‪ <authreg‬إلى‪:‬‬

‫>‪<module>db</module‬‬

‫في النهاية‪ ،‬أعد تشغيل خدمة ‪ jabberd2‬لتفعيل الضبط الجديد‪:‬‬

‫‪sudo service jabberd2 restart‬‬

‫يمسكنك الن التصال على الخادوم بعميل ‪ Jabber‬مثل بيدجن )‪ (Pidgin‬على سبيل المثال‪.‬‬

‫ملحظظظة‪ :‬ميتتزة استتتخدام ‪ Berkeley DB‬لمعلومتتا ت المستتتخدم هتتو أظنهتتا ل تحتتتاج إلتتى صتتياظنة إضتتافية بعتتد‬
‫ضبطها؛ إذا أرد ت المزيد من التحسكم في حسابا ت المستخدمين‪ ،‬فمن المستحسن استخدام آلية استيثاق أخرى‪.‬‬

‫ج‪ .‬مصادر‬

‫يحتوي موقع ‪ Jabberd2‬على المزيد من التفاصيل حول ضبط ‪.Jabberd2‬‬ ‫•‬

‫للمزيد من خيارا ت الستيثاق‪ ،‬راجع » ‪.«Jabberd2 Install Guide‬‬ ‫•‬

‫أي ص‬
‫ضا‪ ،‬هنالك بعض المعلوما ت في صفحة ويسكي أوبنتو »‪.«Setting Up Jabber Server‬‬ ‫•‬

‫▲‬ ‫‪| 452‬‬


‫‪17‬‬
‫أنظمة التحكم‬
‫بالدصدارات‬

‫▲‬ ‫‪| 453‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫التحسكتتم بالصتتدارا ت )‪ (Version Control‬هتتو فتتن إدارة التغييتترا ت إلتتى المعلومتتا ت؛ وهتتي‬

‫أداة محورية للمبرمجين‪ ،‬الذين يستتتهلسكون وقتهتتم بتتإجراء تعتتديل ت صتتغيرة إلتتى البرمجيتتا ت ومتتن‬

‫ثم يتراجعون عنها في اليوم التالي! لسكتن فائتدة برمجيتا ت التحسكتتم بالصتدارا ت تمتتد ختارج حتدود‬

‫صتتا يستتتخدمون الحواستتيب لدارة معلومتتا ت‬


‫عالم تطوير البرمجيا ت؛ في أي مسكان تجد فيته أشخا ص‬

‫تتغير عادصة‪ ،‬فهنالك مسكان للتحسكم بالصدارا ت‪.‬‬

‫‪ .1‬نظام ‪Bazaar‬‬
‫إن ‪ Bazaar‬هتتو ظنظتتام جديتتد للتحسكتتم بالصتتدارا ت ممتتول متتن كاظنوظنيسكتتال ‪ -‬الشتتركة التجاريتتة‬

‫التي تقف خلف أوبنتو‪ ،‬وعلى النقيتتض متتن ‪ Subversion‬و ‪ CVS‬اللتتذان يتتدعمان ظنمتتط المستتتودع‬

‫المركتتتزي‪ ،‬فتتتإن ‪ Bazaar‬يتتتدعم أي ص‬


‫ضتتتا »التحسكتتتم المتتتونزع بالصتتتدارا ت« ) ‪distributed version‬‬

‫‪ ،(control‬مما يسمح للناس بالتعامل بطريقة تعاوظنية أكثر فعاليصة؛ وخصو ص‬


‫صا أن ‪ Bazaar‬مصمم‬

‫لتعظيم درجة اشتراك المجتمع في المشاريع المفتوحة المصدر‪.‬‬

‫ا‪ .‬التثبيت‬

‫أد ش‬
‫خل المر التي في الطرفية لتثبيت ‪:bzr‬‬

‫‪sudo apt-get install bzr‬‬

‫ب‪ .‬الضبط‬

‫لسكي »نتعدرف ظنفسك« إلى ‪ ،bzr‬فاستخدم المر ‪ whoami‬كما يلي‪:‬‬

‫'>‪bzr whoami 'Joe Doe <joe.doe@gmail.com‬‬

‫▲‬ ‫‪| 454‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫ج‪ .‬تعلم ‪Bazaar‬‬

‫يأتي ‪ Bazaar‬مع توثيق مدمج مثنبتتت فتتي ‪ /usr/share/doc/bzr/html‬افتراضتتصيا؛ يتتأتي‬

‫المر ‪ bzr‬أي ص‬
‫ضا مع مساعدة مدمجة فيه‪:‬‬

‫‪bzr help‬‬

‫لتعلم المزيد عن أمتر ما‪:‬‬

‫‪bzr help foo‬‬

‫د‪ .‬الدمج مع ‪Launchpad‬‬

‫علتتتى الرغتتتم متتتن أظنتتته مفيتتتد كنظتتتام يعمتتتل بمفتتترده‪ ،‬لسكنتتته يملتتتك قابليتتتة الدمتتتج الختيتتتاري متتتع‬

‫‪ ، Launchpad‬التتتذي هتتتو ظنظتتتام التطتتتوير التعتتتاوظني المستتتتخدم متتتن كاظنوظنيسكتتتال ومجتمتتتع البرمجيتتتا ت‬

‫المفتوحة المحيط بها لدارة وتوستيع أوبنتتو؛ للمزيتد متن المعلومتا ت حتول كيفيتة استتخدام ‪Bazaar‬‬

‫مع ‪ Launchpad‬للتعاون في البرمجيا ت مفتوحة المصدر‪ ،‬راجع ‪.Launchpad Integration‬‬

‫‪ .2‬نظام ‪Git‬‬
‫إن ‪ Git‬هتتتو ظنظتتتام تحسكتتتم بالصتتتدارا ت متتتونزع ) ‪ (distributed‬ومفتتتتوح المصتتتدر مطتتتنور متتتن‬

‫لينوس تورفالدس لدعم تطوير ظنتواة ليننسكتتس؛ حيتث يسكتتون كتتل مجلتد فتي ‪ Git‬عبتتارة عتن مستتتودع‬

‫متتع تأريتتخ كامتتل وإمسكاظنيتتا ت لتتبتتع الصتتدارا ت‪ ،‬وليتتس متعشمتتصدا علتتى الوصتتول علتتى الشتتبسكة أو علتتى‬

‫خادوم مركزي‪.‬‬

‫▲‬ ‫‪| 455‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫ا‪ .‬التثبيت‬

‫يمسكن تثبيت ظنظام التحسكم بالصدارا ت ‪ git‬باستخدام المر التي‪:‬‬

‫‪sudo apt-get install git‬‬

‫ب‪ .‬الضبط‬

‫يجب لسكل مستخدم ‪ git‬أن يعدرف ظنفسه أوصل إلى ‪ ،git‬وذلك بتنفيذ المدرين التيين‪:‬‬

‫"‪git config --global user.email "you@example.com‬‬


‫"‪git config --global user.name "Your Name‬‬

‫ج‪ .‬الستخدام الساسي‬

‫متتتا ستتتبق يسكفتتتي لستتتتخدام ‪ git‬فتتتي طريقتتتة موزعتتتة وآمنتتتة‪ ،‬حيتتتث نيفتتتتنرض أنن المستتتتخدمين‬

‫يستطيعون الوصول إلى الخادوم عبر ‪SSH‬؛ حيث يمسكن إظنشاء مستودع جديد على الخادوم بالمر‪:‬‬

‫‪git init --bare /path/to/repository‬‬

‫ملحظة‪ :‬المر السابق نينششئ مستودصعا »فار ص‬


‫غا« )‪ ،(bare‬أي أظنه ليس بالمسكان استخدامه للتعتتديل علتتى الملفتتا ت‬
‫مباشر صة‪ .‬إذا أرد ت الحصول على ظنسخة من محتويا ت المستودع على الخادوم‪ ،‬فاحذف الخيار ‪.--bare‬‬

‫يمسكن لي عميل يملك وصوصل عبر ‪ SSH‬إلى الخادوم أن ينسخ المستودع بالمر‪:‬‬

‫‪git clone username@hostname:/path/to/repository‬‬

‫▲‬ ‫‪| 456‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫بعد ظنسخ الملفا ت إلى جهاز العميل‪ ،‬يمسكنه تعديلها ثم إيداعها ومشاركتها بالوامر‪:‬‬

‫‪cd /path/to/repository‬‬
‫‪# Edit some files‬‬
‫‪# Commit all changes to the local version of the repository‬‬
‫‪git commit -a‬‬
‫‪# Push changes to the server's version of the repository‬‬
‫‪git push origin master‬‬

‫د‪ .‬تثبيت تخادوم ‪Gitolite‬‬

‫ف لظنشتتاء وظنستتخ وتعتتديل المستتتودعا ت‪ ،‬لسكتتن المستتتخدمين‬


‫علتتى الرغتتم متتن أدن متتا ستتبق كتتا ت‬

‫الذين يريدون تثبيت ‪ git‬على خادوم سيريدون عموصما إظنجاز المهتتام فتتي ‪ git‬كنظتتام إدارة التحسكتتم‬

‫بالكواد المصتدرية تقليتدي؛ وعنتد وج ود عت ددة مستتخدمين وامتيتازا ت وص ول لهتم‪ ،‬فالحتل المثتل‬

‫هو تثبيت ‪ Gitolite‬كما يلي‪:‬‬

‫‪sudo apt-get install gitolite‬‬

‫ضبط ‪Gitolite‬‬

‫ضتتبط ختتادوم ‪ Gitolite‬مختلتتف قليصل عتتن معظتتم الختتواديم فتتي الظنظمتتة الشتتبيهة شبيتتوظنسكس؛‬

‫فبدصل من ملفا ت الضبط التقليديتتة فتي ‪ ،/etc/‬فتإن ‪ Gitolite‬نيختدزن الضتبط فتي مستتودع ‪git‬؛ أول‬

‫خطوة لضبط تثبيت جديد هي السماح بالوصول إلى مستودع الضبط‪.‬‬

‫▲‬ ‫‪| 457‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫أوصل‪ ،‬علينا إظنشاء مستخدم لجل ‪ Gitolite‬لسكي ظنصل إليه عبره‪:‬‬

‫\ ‪sudo adduser --system --shell /bin/bash --group‬‬


‫‪--disabled-password --home /home/git git‬‬

‫سنترك الن ‪ Gitolite‬لسكي يعرف عن مفتاح ‪ SSH‬العمومي لمدير المستودع؛ هنا ظنفتتترض أن‬

‫المستتتخدم الحتتالي هتتو متتدير المستتتودع؛ إذا لتتم تضتتبط مفتتتاح ‪ SSH‬بعتتد‪ ،‬فراجتتع الفصتتل الستتادس‬

‫لمزيتد من التفاصيل‪:‬‬

‫‪cp ~/.ssh/id_rsa.pub /tmp/$(whoami).pub‬‬

‫لنبددل إلى المستخدم ‪ git‬وظنستورد مفتاح المدير إلى ‪:Gitolite‬‬

‫‪sudo su - git‬‬
‫‪gl-setup /tmp/*.pub‬‬

‫سيسمح ‪ Gitolite‬لك بعمل تغيترا ت مبدئيتتة لضتبطه أثنتتاء عمليتة العتداد؛ يمسكنتتك الن ظنستخ‬

‫وتعديل مستودع ضبط ‪ Gitolite‬من المستخدم المتدير )المستتخدم التذي اس تورد ت مفتتاح ‪SSH‬‬

‫العمومي الخاص به(؛ نعد إلى ذاك المستخدم‪ ،‬ثم اظنسخ مستودع الضبط‪:‬‬

‫‪exit‬‬
‫‪git clone git@$IP_ADDRESS:gitolite-admin.git‬‬
‫‪cd gitolite-admin‬‬

‫المجلتتتتد ‪ gitolite-admin‬فيتتتته مجلتتتتدين فرعييتتتتن‪ ،‬المجلتتتتد »‪ «conf‬و »‪«keydir‬؛ ملفتتتتا ت‬

‫الضتتتتبط موجتتتتودة فتتتتي مجلتتتتد ‪ ،conf‬ويحتتتتتوي مجلتتتتد ‪ keydir‬علتتتتى مفاتيتتتتح ‪ SSH‬العموميتتتتة‬

‫للمستخدم‪.‬‬

‫▲‬ ‫‪| 458‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫إدارة مستخدمي ومستودعات ‪Gitolite‬‬

‫إضافة مستخدمين جدد إلى ‪ Gitolite‬هي عملية سهلة‪ :‬احصل على مفتاح ‪ SSH‬العمومي لهم‬

‫ثتتم أضتتفه إلتتى مجلتتد ‪ keydir‬بالستتم ‪ ،USERNAME.pub‬لحتتظ أن أستتماء مستتتخدمي ‪Gitolite‬‬

‫ل تطتتابق بالضتترورة أستتماء مستتتخدمي النظتتام‪ ،‬حيتتث نتستتتخندم أستتمائهم فتتي ملتتف ضتتبط ‪Gitolite‬‬

‫فقط‪ ،‬وذلك لدارة التحسكم بالوصول؛ وبشسكل مشابه‪ ،‬يمسكن حتذف المستتخدمين بحتتذف ملتتف المفتتاح‬

‫العمومي الخاص بهم؛ ول تننس أن تودع التغييرا ت وتدفعها إلى خادوم ‪ git‬بعد كل تعديل‪:‬‬

‫‪git commit -a‬‬


‫‪git push origin master‬‬

‫نتدار المستتودعا ت بتعتتديل الملتف ‪conf/gitolite.conf‬؛ الشتتسكل العتام لته هتو قيتود مفصتولة‬

‫بفراغتتتا ت نتحتتتددد ببستتتاطة قائمتتت صة بالمستتتتودعا ت ثتتتم بعتتتض قواعتتتد الوصتتتول؛ متتتا يلتتتي هتتتو المثتتتال‬

‫الفتراضي لهذا الملف‪:‬‬

‫‪repo‬‬ ‫‪gitolite-admin‬‬
‫‪RW+‬‬ ‫=‬ ‫‪admin‬‬
‫‪R‬‬ ‫=‬ ‫‪alice‬‬
‫‪repo‬‬ ‫‪project1‬‬
‫‪RW+‬‬ ‫=‬ ‫‪alice‬‬
‫‪RW‬‬ ‫=‬ ‫‪bob‬‬
‫‪R‬‬ ‫=‬ ‫‪denise‬‬

‫▲‬ ‫‪| 459‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫استخدام تخادومك‬

‫لستتتخدام الختتادوم النمننشتتأ حتتديصثا‪ ،‬يجتتب أن يستتتورد متتدير ‪ Gitolite‬مفاتيتتح المستتتخدمين‬

‫العمومية إلتتى مستتتودع ضتبط ‪ ، Gitolite‬ثتتم يمسكنهتتم الوصتول إلتتى أي مستتتودع لهتم حتق الوصتول‬

‫إليه عبر المر التي‪:‬‬

‫‪git clone git@$SERVER_IP:$PROJECT_NAME.git‬‬

‫أو إضافة مشروع في الخادوم عن بعد‪:‬‬

‫‪git remote add gitolite git@$SERVER_IP:$PROJECT_NAME.git‬‬

‫▲‬ ‫‪| 460‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫‪ .3‬نظام ‪Subversion‬‬
‫إن ‪ Subversion‬هتتو ظنظتتام إدارة إصتتدارا ت مفتتتوح المصتتدر؛ يمسكنتتك باستتتخدام ‪Subversion‬‬

‫أن نتس دجل تاريخ كل الملفتا ت المصتدرية والمستتندا ت؛ حيتث يتتدير الملفتتا ت والمجلتتدا ت متتع متترور الزمتن‪.‬‬

‫توضع شجرة من الملفا ت في مستودع مركزي‪ ،‬هذا المستودع يشتتبه كتثيصرا ختتادوم الملفتا ت العتتادي‪ ،‬عتدا‬

‫أظنه »يتذكر« كل تعديل جرى على الملفا ت والمجلدا ت‪.‬‬

‫ا‪ .‬التثبيت‬

‫للوصول إلى مستودع ‪ Subversion‬عبر بروتوكول ‪ ،HTTP‬يجب عليك تثبيت وضبط ختتادوم‬

‫ويب‪ ،‬نأثشب ن‬
‫ت عمل ‪ Subversion‬مع أباتشي؛ الرجاء العودة إلتى القستتم الختتاص بإعتتداد ختتادوم أباتشتتي‬

‫فتتتي الفصتتتل الحتتتادي عشتتتر لمزيتتتتد متتتن المعلومتتتا ت؛ للوصتتتول إلتتتى مستتتتودع ‪ Subversion‬باستتتتخدام‬

‫بروتوكول ‪ ،HTTPS‬فث دبت واضبط الشهادة الرقمية في خادوم أباتشي‪.‬‬

‫عليك تنفيذ المر التي في الطرفية لتثبيت ‪:Subversion‬‬

‫‪sudo apt-get install subversion libapache2-svn‬‬

‫ب‪ .‬ضبط الخادوم‬

‫يشرح هذا القسم كيفية إظنشاء مستودع ‪ ،Subversion‬والوصول إلى المشروع‪.‬‬

‫إنشاء مستودع ‪Subversion‬‬

‫يمسكن إظنشاء مستودع ‪ Subversion‬بتنفيذ المر التي في الطرفية‪:‬‬

‫‪svnadmin create /path/to/repos/project‬‬

‫▲‬ ‫‪| 461‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫استيراد الملفات‬

‫تستتتطيع استتتيراد الملفتتا ت إلتتى المستتتودع بعتتد أن نتن ش‬


‫شتتئه؛ أد ش‬
‫ختتل المتتر التتتي فتتي الطرفيتتة‬

‫لستيراد مجلد‪:‬‬

‫\ ‪svn import /path/to/import/directory‬‬


‫‪file:///path/to/repos/project‬‬

‫ج‪ .‬طرق الوصول‬

‫يمسكتتن الوصتتول إلتتى مستتتودعا ت ‪) Subversion‬الستتحب ]‪ ([checked out‬بطتترتق مختلفتتة‬

‫علتتى الجهتتاز المحلتتي أو عتتبر بروتوكتتول ت الشتتبسكة المختلفتتة؛ لسكتتن مسكتتان المستتتودع ) ‪repository‬‬

‫‪ (location‬هتتو دائصمتتا عنتتوان ‪URL‬؛ الجتتدول التتتي يحتتتوي علتتى أظنمتتاط ‪ URL‬المختلفتتة لمختلتتف‬

‫طرق الوصول‪.‬‬

‫الجدول ‪ :1-17‬طرق الوصول إلى ‪Subversion‬‬

‫طريقة الوصول‬ ‫النمط‬

‫الوصول المباشر إلى المستودع على القرص الصلب‪.‬‬ ‫‪file://‬‬

‫الوصول عبر بروتوكول ‪ WebDAV‬في خادوم أباتشي يعمل بوجود‬


‫‪http://‬‬
‫‪.Subversion‬‬

‫مثل النمط ‪ http://‬لسكن بتشفير ‪.SSL‬‬ ‫‪https://‬‬

‫الوصول عبر بروتوكول خاص إلى خادوم ‪.svnserve‬‬ ‫‪svn://‬‬

‫مثل ‪ svn://‬لسكن عبر ظنفق ‪.SSH‬‬ ‫‪svn+ssh://‬‬

‫▲‬ ‫‪| 462‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫سنرى ‪-‬في هذا القسم‪ -‬كيفية ضبط ‪ Subversion‬لسكل طرق الوصول الستتابقة؛ سنشتترح هنتتا‬

‫الساسيا ت‪ ،‬رجاصء نعد إلى كتاب »‪ «SVN book‬لتفاصيل استخدام متقدمة‪.‬‬

‫الوصول المباشر إلى المستودع‬

‫هذه هي أبسط طرق الوصول؛ ل تحتاج إلى أي خادوم ‪ Subversion‬يعمتتل؛ نتستتتخندم هتتذه‬

‫الطريقة للوصول إلى ‪ Subversion‬من ظنفس الجهاز؛ شسكل المر النمدنخل في سطر الوامر هو‪:‬‬

‫‪svn co file:///path/to/repos/project‬‬

‫أو‪:‬‬

‫‪svn co file://localhost/path/to/repos/project‬‬

‫ملحظة‪ :‬إن لم تحتتدد استم المضتيف‪ ،‬فهنالتتك ثلث خطتوط مائلتتة )‪ (///‬حيتث اثنتتين منهتا للتتبروتوكول بالضتتافة‬
‫إلى الخط المائل في أول المسار؛ إذا حدد ت اسم المضيف‪ ،‬فسيسكون هنالك خطين مائلين فقط‪.‬‬

‫تعتمتتتد أذوظنتتتا ت المستتتتودع علتتتى أذوظنتتتا ت ظنظتتتام الملفتتتا ت؛ إذا امتلتتتك المستتتتخدم إذن القتتتراءة‬

‫والسكتابة‪ ،‬فيمسكنه السحب من المستودع أو اليداع إليه‪.‬‬

‫الوصول عبر بروتوكول ‪(http://) WebDAV‬‬

‫يجتتب عليتتك ضتتبط ختتادوم أباتشتتي للوصتتول إلتتى مستتتودع ‪ Subversion‬عتتبر بروتوكتتول‬

‫‪WebDAV‬؛ أضف السطر التية بين العنصرين > ‪ <VirtualHost‬و >‪ </VirtualHost‬فتي ملتف‬

‫▲‬ ‫‪| 463‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫‪/etc/apache2/sites-available/default‬؛ أو ملف ‪ VirtualHost‬آخر‪:‬‬

‫>‪<Location /svn‬‬
‫‪DAV svn‬‬
‫‪SVNPath /home/svn‬‬
‫‪AuthType Basic‬‬
‫"‪AuthName "Your repository name‬‬
‫‪AuthUserFile /etc/subversion/passwd‬‬
‫‪Require valid-user‬‬
‫>‪</Location‬‬

‫ملحظظظة‪ :‬يفتتترض الضتتبط الستتابق أن مستتتودعا ت ‪ Subversion‬موجتتودةة فتتي مجلتتد ‪ /home/svn‬باستتتخدام‬


‫المر ‪svnadmin‬؛ ويملك مستخدم ‪ HTTP‬امتيازا ت وصول كافية على تلك الملفا ت‪ ،‬ويمسكن الوصول إليها عبر‬
‫الوصلة ‪.http://hostname/svn/repos_name‬‬

‫التغيير السابق في ضبط أباتشي يتطلب إعادة تحميل الخدمة‪ ،‬وذلك بالمر التي‪:‬‬

‫‪sudo service apache2 reload‬‬

‫لستتتتتيراد أو إيتتتتداع ملفتتتتا ت إلتتتتى مستتتتتودع ‪ Subversion‬عتتتتبر ‪ ،HTTP‬فيجتتتتب أن يسكتتتتون‬

‫المستتتتودع مملوصكتتتا متتتن مستتتتخدم ‪HTTP‬؛ يسكتتتون مستتتتخدم ‪ HTTP‬عتتتادصة فتتتي أظنظمتتتة أوبنتتتتو هتتتو‬

‫‪www-data‬؛ أد ش‬
‫خل المر التي في الطرفية لتغيير ملسكية ملفا ت المستودع‪:‬‬

‫‪sudo chown -R www-data:www-data /path/to/repos‬‬

‫ملحظة‪ :‬بتغيير ملسكية المستودع إلتتى ‪ ،www-data‬فلتتن تتمسكتتن متن استتيراد أو إيتتداع الملفتا ت فتي المستتودع‬
‫بالمر ‪ svn import file:///‬عبر أي مستخدم عدا المستخدم ‪.www-data‬‬

‫▲‬ ‫‪| 464‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫عليك الن إظنشاء الملف ‪ /etc/subversion/passwd‬الذي يحتوي معلوما ت استيثاق المستخدم؛‬

‫ظندفذ المر التي في الطرفية لظنشاء الملف )الذي سنينششئ الملف ويضيف أول مستخدم(‪:‬‬

‫‪sudo htpasswd -c /etc/subversion/passwd user_name‬‬

‫لضتتافة مستتتخدمين آخريتتن‪ ،‬احتتذف الخيتتار ‪ ،-c‬حيتتث يستتتبدل هتتذا الخيتتار الملتتنف القتتديم؛‬

‫واستخدم الشسكل التي عو ص‬


‫ضا عنه‪:‬‬

‫‪sudo htpasswd /etc/subversion/passwd user_name‬‬

‫س نيضتتاف المستتخدم بعتد إدخالتتك لسكلمتتة المتترور بنجتاح؛ يمسكنتتك الن الوصتول إلتى المستتودع‬

‫بتنفيذ المر التي‪:‬‬

‫‪svn co http://servername/svn‬‬

‫تحظظذير‪ :‬ستت نتنقل كلمتتة المتترور كنتتص واضتتح‪ ،‬إذا كنتتت قل صقتتا علتتى التجستتس علتتى كلمتتة المتترور‪ ،‬فمتتن المستحستتن‬
‫استخدام تشفير ‪ ،SSL‬اقرأ القسم التي للتفاصيل‪.‬‬

‫الوصول إلى بروتوكول ‪ WebDAV‬عبر اتصال ‪ SSL‬مشفر )‪(https://‬‬

‫الوصتتتول إلتتتى مستتتتودع ‪ Subversion‬عتتتبر بروتوكتتتول ‪ WebDAV‬متتتع تشتتتفير ‪ SSL‬يشتتتبه‬

‫كتتثيصرا الوصتتول إلتتى ‪ http://‬عتتدا أظنتته عليتتك تثتتبيت وضتتبط الشتتهادة الرقميتتة فتتي ختتادوم أباتشتتي؛‬

‫أضتتتتتتتف الضتتتتتتتبط الستتتتتتتابق إلتتتتتتتى ملتتتتتتتف ‪/etc/apache2/sites-available/default-ssl.conf‬‬

‫لستخدام ‪ SSL‬مع ‪Subversion‬؛ راجتع الفصتل الحتادي عشتر للمزيتد متن المعلومتا ت حتول ض بط‬

‫أباتشي مع ‪.SSL‬‬

‫▲‬ ‫‪| 465‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫يمسكنك تثبيت شهادة رقمية نمصند نرة متتن ستلطة توقيتتع الشتتهادا ت؛ أو يمسكنتتك تثتتبيت شتتهادتك‬

‫الموقعة ذاتصيا‪.‬‬

‫تفترض هذه الخطوة أظنك ثبتت وضبطت شهادصة رقمي صة في خادوم أباتشي؛ راجع الوامر في‬

‫القستتتم الستتتابق للوصتتتول إلتتتى مستتتتودع ‪ ،Subversion‬حيتتتث أنن الخطتتتوا ت متماثلتتتة تماصمتتتا عتتتدا‬

‫البروتوكول‪ ،‬حيث عليك استخدام ‪ https://‬للوصول إلى مستودع ‪.Subversion‬‬

‫الوصول عبر بروتوكول تخاص‬

‫يمسكنك ضبط التحسكتتم بالوصتول بعتد إظنشتاء مستتودع ‪Subversion‬؛ تستتطيع تعتديل الملتف‬

‫‪ /path/to/repos/project/conf/svnserve.conf‬لضتتتتتبط التحسكتتتتتم بالوصتتتتتول؛ علتتتتتى ستتتتتبيل‬

‫المثال‪ ،‬يمسكنك إزالة التعليق عن السطر التية في ملف الضبط لضبط الستيثاق‪:‬‬

‫]‪# [general‬‬
‫‪# password-db = passwd‬‬

‫بعتتتد إزالتتتة التعليتتتق عتتتن الستتتطرين الستتتابقين‪ ،‬يمسكنتتتك إدارة قائمتتتة المستتتتخدمين فتتتي ملتتتف‬

‫‪ ،passwd‬لذلك عددل ملف ‪ passwd‬في ظنفس المجلد وأضف مستخدصما جديصدا كما يلي‪:‬‬

‫‪username = password‬‬

‫▲‬ ‫‪| 466‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫للوصول إلى ‪ Subversion‬عبر التتبروتوكول الختتاص ‪svn://‬؛ متتن الجهتتاز ظنفستته أو متتن جهتتاز‬

‫آخر‪ ،‬تستطيع تشغيل ‪ svnserver‬بالمر ‪svnserve‬؛ الذي يسكون شسكله العام كما يلي‪:‬‬

‫‪svnserve -d --foreground -r /path/to/repos‬‬


‫‪# -d -- daemon mode‬‬
‫)‪# --foreground -- run in foreground (useful for debugging‬‬
‫‪# -r -- root of directory to serve‬‬

‫سيبدأ ‪ Subversion‬بالستماع إلى المنفذ الفتراضي )‪ (3690‬بعد تنفيذ المر السابق؛ عليك‬

‫تنفيذ المر التي من الطرفية للوصول إلى مستودع البرظنامج‪:‬‬

‫‪svn co svn://hostname/project project --username user_name‬‬

‫وبناصء على إعدادا ت الخادوم‪ ،‬قد نيطنلب منك توفير كلمة مرور؛ وبعد أن تستوثق‪ ،‬فسنيسحب‬

‫السكود من مستتودع ‪ .Subversion‬ولمزامنتة مستتودع المشتروع م ع ظنستخة محليتة‪ ،‬يمسكنتك تنفيتذ‬

‫المر الفرعي ‪update‬؛ الشسكل العام للمر النمدنخل إلى الطرفية هو كما يلي‪:‬‬

‫‪cd project_dir; svn update‬‬

‫للمزيد من التفاصيل حول استخدام كل أمر فرعي من أوامر ‪ ،Subversion‬يمسكنك الرجتتوع‬

‫إلى الدليل؛ على سبيل المثال‪ ،‬لتعلم المزيد عن المر ‪) co‬أي السحب ‪ ،(checkout‬رجاصء ظندفذ المر‬

‫التي من الطرفية‪:‬‬

‫‪svn co help‬‬

‫▲‬ ‫‪| 467‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫الوصول عبر البروتوكول الخاص مع تشفير ‪(svn+ssh://) SSL‬‬

‫طريقة ضبط وتشغيل الخادوم هي ظنفسها في طريقة ‪svn://‬؛ يفترض هذا القسم أظنك اتبعت‬

‫الخطوة السابقة وبدأ ت خادوم ‪ Subversion‬باستخدام ‪.svnserve‬‬

‫نيفتتنرض أي ص‬
‫ضتا أظنته لتديك ختادوم ‪ ssh‬ف ي ذاك الجهتاز ويستمح للتصتال ت القادمتتة؛ للتأكتد متن‬

‫ذلك‪ ،‬رجاصء جدرب تستجيل التدخول إلتى ذاك الحاس وب باستتخدام ‪ ،ssh‬إذا استتطعت التدخول فتإن‬

‫كل شيء على ما يرام؛ وإل فعليك ح د‬


‫ل المشسكلة قبل الكمال‪.‬‬

‫البروتوكول ‪ svn+ssh://‬نيستخندم للوصول إلتتى مستتتودع ‪ Subversion‬باستتتخدام تشتتفير‬

‫‪ SSL‬؛ البياظنا ت المنقولة في هذه الطريقة مشفرة‪ ،‬وللوصول إلتى مستتودع المشتتروع )للستحب علتى‬

‫سبيل المثال(؛ فعليك استخدام الصيغة التية‪:‬‬

‫‪svn co svn+ssh://hostname/var/svn/repos/project‬‬

‫ملحظظظظظظة‪ :‬عليتتتتتك تحديتتتتتد مستتتتتار كامتتتتتل ‪ /path/to/repos/project‬للوصتتتتتول إلتتتتتى مستتتتتتودع ‪Subversion‬‬


‫باستخدام طريقة الوصول هذه‪.‬‬

‫قتتد نتستتأل عتتن كلمتتة المتترور اعتمتتا صدا علتتى ضتتبط الختتادوم؛ إذ عليتتك إدختتال كلمتتة المتترور التتتي‬

‫تستخدمها للوصول عبر ‪ ssh‬؛ وبعد أن يستوثق منتك الختتادوم‪ ،‬فيمسكتتن ستحب السكتود متتن مستتودع‬

‫‪.Subversion‬‬

‫▲‬ ‫‪| 468‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫‪ .4‬نظام ‪CVS‬‬
‫إن ‪ CVS‬هو خادوم تحسكم بالصدارا ت؛ تستطيع استخدامه لتسجيل تاريخ ملفا ت المصدر‪.‬‬

‫ا‪ .‬التثبيت‬

‫ظندفذ المر التي في الطرفية لتثبيت ‪:CVS‬‬

‫‪sudo apt-get install cvs‬‬

‫بعد تثبيت ‪ ،cvs‬يجب عليتتك تثتتبيت ‪ xinetd‬لتشتتغيل أو إيقتتاف ختتادوم ‪cvs‬؛ وذلتتك بإدختتال‬

‫المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install xinetd‬‬

‫ب‪ .‬الضبط‬

‫يء مستتتتودصعا تلقائصيتتتا؛ يقبتتتع المستتتتودع افتراضتتتييا فتتتي مجلتتتد‬


‫بعتتتد أن تثبتتتت ‪ ،cvs‬فتتتإظنه ستتتنيه د‬

‫‪/srv/cvs‬؛ ويمسكنك تغيير هذا المسار بتنفيذ المر التي‪:‬‬

‫‪cvs -d /your/new/cvs/repo init‬‬

‫▲‬ ‫‪| 469‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫تستطيع ضبط ‪ xinetd‬لبدء خادوم ‪ CVS‬بعد أن نيضتتنبط المستتتودع البتتدائي؛ يمسكنتك ظنستتخ‬

‫السطر التية إلى ملف ‪:/etc/xinetd.d/cvspserver‬‬

‫‪service cvspserver‬‬
‫{‬
‫‪port = 2401‬‬
‫‪socket_type = stream‬‬
‫‪protocol = tcp‬‬
‫‪user = root‬‬
‫‪wait = no‬‬
‫‪type = UNLISTED‬‬
‫‪server = /usr/bin/cvs‬‬
‫‪server_args = -f --allow-root /srv/cvs pserver‬‬
‫‪disable = no‬‬
‫}‬

‫ملحظة‪ :‬تأكد أن تعددل المستودع إذا غير ت مجلد المستودع الفتراضي )‪.(/srv/cvs‬‬

‫بعد أن تضبط ‪xinetd‬؛ يمسكنك بدء خادوم ‪ CVS‬بإدخال المر التي‪:‬‬

‫‪sudo service xinetd restart‬‬

‫يمسكنك التأكد من عمل خادوم ‪ CVS‬بإدخال المر التي‪:‬‬

‫‪sudo netstat -tap | grep cvs‬‬

‫ ت شبيهصة بالمخرجا ت التية بعد تنفيذ المر السابق‪:‬‬


‫يجب أن ترى مخرجا ت‬

‫‪tcp‬‬ ‫‪0‬‬ ‫‪0 *:cvspserver‬‬ ‫‪*:* LISTEN‬‬

‫▲‬ ‫‪| 470‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫من هنا يمسكنك المتابعة في إضافة المستخدمين والمشاريع الجديدة وإدارة خادوم ‪.CVS‬‬

‫تحذير‪ :‬يسمح ‪ CVS‬للمستخدم بإضافة مستخدمين بشسكل مستقل عن ظنظتتام التشتتغيل؛ وربمتتا أستتهل طريقتتة هتتي‬
‫استخدام مستخدمي ليننسكس لخادوم ‪ ،CVS‬على الرغم من أن لها مساوئ أمنية؛ راجع دليل ‪ CVS‬للتفاصيل‪.‬‬

‫ج‪ .‬إضاافة مشاريع‬

‫يشتترح هتتذا القستتم كيفيتتة إضتتافة مشتتاريع جديتتدة إلتتى مستتتودع ‪CVS‬؛ أظنششتتئ مجلتتصدا وأضتتف‬

‫المستندا ت والملفا ت المصدرية إليه؛ ثم ظندفذ المر التي لضافة هذا المشروع إلى مستودع ‪:CVS‬‬

‫‪cd your/project‬‬
‫\ ‪cvs -d :pserver:username@hostname.com:/srv/cvs import -m‬‬
‫‪"Importing my project to CVS repository" . new_project start‬‬

‫تنتتتويه‪ :‬يمسكتتتن استتتتخدام متغيتتتر البيئتتتة ‪ CVSROOT‬لتخزيتتتن المجلتتتد الجتتتذر لختتتادوم ‪CVS‬؛‬

‫يمسكنتتك تجنتتب استتتخدام الخيتتار ‪ -d‬فتتي أمتتر ‪ cvs‬الستتابق بعتتد أن »نتصتتددر« )‪ (export‬متغيتتر البيئتتة‬

‫‪.CVSROOT‬‬

‫السلستتتتتتلة النصتتتتتتية ‪ new_project‬هتتتتتتي وستتتتتتم »‪ ،«vendor‬و ‪ start‬هتتتتتتي وستتتتتتم »‪،«release‬‬

‫ل يخدمان أي هدف في هذا السياق‪ ،‬لسكن ولما كان خادوم ‪ CVS‬يتطلب وجودهما؛ فيجب أن تضعهما‪.‬‬

‫تحظظظذير‪ :‬عنتتتدما تضتتتيف مشتتتروصعا جديتتتصدا‪ ،‬فيجتتتب أن يملتتتك مستتتتخدم ‪ CVS‬إذن الوصتتتول إلتتتى مستتتتودع ‪CVS‬‬
‫)‪(/srv/cvs‬؛ تملتتك المجموعتتة ‪ src‬افتراضتتصيا إذن السكتابتتة إلتتى مستتتودع ‪CVS‬؛ لتتذلك تستتتطيع إضتتافة المستتتخدم‬
‫إلى هذه المجموعة‪ ،‬ثم سيستطيع إضافة وإدارة المشاريع في مستودع ‪.CVS‬‬

‫▲‬ ‫‪| 471‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫أظنظمة التحسكم بالصدارا ت‬

‫‪ .5‬مصادر‬
‫صفحة ‪ Bazaar‬الرئيسية‪.‬‬ ‫•‬

‫‪.Launchpad‬‬ ‫•‬

‫صفحة ‪ Git‬الرئيسية‪.‬‬ ‫•‬

‫صفحة مشروع ‪.Gitolite‬‬ ‫•‬

‫صفحة ‪ Subversion‬الرئيسية‪.‬‬ ‫•‬

‫كتاب ‪.Subversion‬‬ ‫•‬

‫دليل ‪.CVS‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪.«Easy Bazaar‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪.«Subversion‬‬ ‫•‬

‫▲‬ ‫‪| 472‬‬


‫تسامبا‬
‫‪18‬‬

‫▲‬ ‫‪| 473‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫تتتتألف شتتبسكا ت الحواستتيب عتتاد صة متتن خليتتط متتن أظنظمتتة التشتتغيل‪ ،‬وعلتتى الرغتتم متتن أن شتتبسكة‬

‫مبنية كام صل من حواسيب بأظنظمة خادوم وسطح مسكتب أوبنتو يمسكن أن تسكون ذا ت فائتتدة عظيمتتة؛‬

‫إ دل أن بعض بيئتتا ت الشتتبسكة يجتتب أن تحتتتوي علتتى أظنظمتتة أوبنتتتو ومايسكروستتوفت® وينتتدوز® تعمتتل‬

‫ستتوي صة بتنتتاغم؛ ستتيقدم هتتذا الجتتزء متتن السكتتتاب المبتتادئ الساستتية والدوا ت المستتتخدم فتتي ضتتبط‬

‫خادوم أوبنتو لمشاركة موارد الشبسكة مع حواسيب ويندوز‪.‬‬

‫‪ .1‬مقدمة‬
‫يتطلب التواصل الشبسكي الناجح بين ختتادوم أوبنتتتو وعملء وينتتدوز تتتوفير ودمتتج الختتدما ت‬

‫الشتتتائعة لبيئتتتا ت وينتتتدوز؛ تستتتاعد مثتتتل هتتتذه الختتتدما ت فتتتي مشتتتاركة البياظنتتتا ت والمعلومتتتا ت عتتتن‬

‫الحواستتتيب والمستتتتخدمين الموجتتتودين فتتتي الشتتتبسكة‪ ،‬ويمسكتتتن تصتتتنيفها تحتتتت ثلثتتتة تصتتتنيفا ت‬

‫للوظائف التي تؤديها‪:‬‬

‫ختتتتتدما ت مشتتتتتاركة الملفتتتتتا ت والطابعتتتتتا ت‪ .‬استتتتتتخدام بروتوكتتتتتول »‪Server Message‬‬ ‫•‬

‫‪) «Block‬اختصتتتاصرا ‪ (SMB‬لتستتتهيل مشتتتاركة الملفتتتا ت والمجلتتتدا ت والقتتتراص ومشتتتاركة‬

‫الطابعا ت عبر الشبسكة‪.‬‬

‫خدما ت الدليل )‪ .(Directory‬مشاركة المعلوما ت الحيوية عتتن الحواستتيب ومستتتخدمي‬ ‫•‬

‫الشبسكة باستخدام تقنيا ت مثل ‪ LDAP‬و ®‪.Microsoft Active Directory‬‬

‫الستيثاق والوصول‪ .‬التحقق من هوية حاسوب أو مستخدم للشبسكة وتحديد المعلوما ت‬ ‫•‬

‫التتتي نيصتتنرح للحاستتوب أو المستتتخدم بالوصتتول إليهتتا عتتبر تقنيتتا ت مثتتل أذوظنتتا ت الملفتتا ت‪،‬‬

‫وسياسا ت المجموعا ت‪ ،‬وخدمة الستيثاق ‪.Kerberos‬‬

‫▲‬ ‫‪| 474‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫لحسن الحظ‪ ،‬يمسكن لخادوم أوبنتو توفير هذه الخدما ت إلتتى عملء وينتتدوز ومشتتاركة متتوارد‬

‫الشبسكة معهم؛ واحد من أهم البرمجيا ت التي يتضمنها ظنظام أوبنتو للتعامل الشبسكي مع ويندوز هو‬

‫مجموعة أدوا ت وتطبيقا ت خادوم ‪ SMB‬النمسمى سامبا‪.‬‬

‫سيقدم هذا القسم من السكتاب بعض حال ت استخدام سامبا الشائعة‪ ،‬وطريقتتة تثتبيت وض بط‬

‫ل إضافيةة يمسكن العثور عليها في موقع سامبا‪.‬‬


‫الحزم الضرورية؛ تفاصي ة‬

‫▲‬ ‫‪| 475‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ .2‬خادوم الملفات‬
‫أحتتد أشتتهر الطتترق للتواصتتل الشتتبسكي بيتتن أوبنتتتو ووينتتدوز هتتو ضتتبط ستتامبا كختتادوم ملفتتا ت؛‬

‫يشرح هذا القسم طريقة ضبط خادوم سامبا لمشاركة الملفا ت مع عملء ويندوز‪.‬‬

‫سنيض نبط الخادوم لمشاركة الملفا ت مع أي عميل علتتى الشتتبسكة دون طلتتب كلمتتة متترور منتته؛ إذا‬

‫كاظنت بيئتك تتطلب متحسكما ت بالوصول أكثر تقييصدا ‪ ،‬فراجع القسم »تأمين خادوم سامبا لتختتديم‬

‫الملفا ت والطباعة«‪.‬‬

‫ا‪ .‬التثبيت‬

‫أول خطوة هي تثبيت حزمة ‪samba‬؛ وذلك بإدخال المر التي من الطرفية‪:‬‬

‫‪sudo apt-get install samba‬‬

‫هذا كل ما عليك فعله! يجب أن تسكون الن جاهصزا لضبط سامبا لمشاركة الملفا ت‪.‬‬

‫ب‪ .‬الضبط‬

‫ملتتف ضتتبط ستتامبا الرئيستتي موجتتوةد فتتي ‪/etc/samba/smb.conf‬؛ توجتتد كميتتةة كتتبيرةة متتن‬

‫التعليقا ت في ملف الضبط لتوثيق مختلف تعليما ت الضبط‪.‬‬

‫ملحظظظظة‪ :‬ل نتضتتتنمن جميتتتع الخيتتتارا ت المتتتتوفرة فتتتي ملتتتف الضتتتبط الفتراضتتتي؛ راجتتتع صتتتفحة التتتدليل للملتتتف‬
‫‪ smb.conf‬أو مجموعة »‪.«Samba HOWTO‬‬

‫▲‬ ‫‪| 476‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫أوصل‪ ،‬عددل الزواج المفتاح‪/‬القيمة في القسم ]‪ [global‬من ملف ‪:/etc/samba/smb.conf‬‬

‫‪workgroup = EXAMPLE‬‬
‫‪...‬‬
‫‪security = user‬‬

‫المعامتتل ‪ security‬موجتتوةد فتتي أستتفل قستتم ]‪ ،[global‬ويوجتتد قبلتته تعليتتق افتراضتتصيا؛ غديتتر‬

‫أي ص‬
‫ضا القيمة ‪ EXAMPLE‬إلى قيمة تلئم بيئتك‪.‬‬

‫أظنششئ قسصما جديتت صدا فتي ظنهايتتة الملتتف ‪ -‬أو أزل التعليتق عتن أحتد المثلتة‪ -‬للمجلتد التذي تريتتد أن‬

‫تشاركه‪:‬‬

‫]‪[share‬‬
‫‪comment = Ubuntu File Server Share‬‬
‫‪path = /srv/samba/share‬‬
‫‪browsable = yes‬‬
‫‪guest ok = yes‬‬
‫‪read only = no‬‬
‫‪create mask = 0755‬‬

‫‪ :comment‬وصف قصير عن المشاركة‪ ،‬عددله ليناسب احتياجاتك‪.‬‬ ‫•‬

‫‪ :path‬مسار المجلد الذي تريد مشاركته؛ يستتخدم هتذا المثتال ‪/srv/samba/sharename‬‬ ‫•‬

‫لظنتته وفصقتتا لمعيتتار هيسكلتتة ظنظتتام الملفتتا ت )‪ Filesystem Hierarchy Standard‬اختصتتاصرا‬

‫‪ ،(FHS‬فإن ‪ /srv‬هو مسكان تخزين البياظنتا ت التتي ستنتخندم؛ ويمسكتن )تقنصيتا( أن تسكتون مشتتاركا ت‬

‫سامبا في أي مسكان في ظنظتتام الملفتا ت لطالمتتا كتتاظنت الذوظنتا ت صتحيحصة‪ ،‬لسكتن اللتتزام بالمعتتايير‬

‫أمةر حسن‪.‬‬

‫▲‬ ‫‪| 477‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ :browsable‬يف دعل إمسكاظنية تصفح عملء ويندوز للمجلد باستخدام »مستسكشف الملفا ت«‪.‬‬ ‫•‬

‫‪ :guest ok‬يسمح للعملء بالتصال إلى المشاركة دون توفير كلمة مرور‪.‬‬ ‫•‬

‫‪ :read only‬تحديتتد إذا متتا كتتاظنت المشتتاركة للقتتراءة فقتتط أم كتتان إذن السكتابتتة معطصيتتا؛‬ ‫•‬

‫نيعطى إذن السكتابة فقط عندما تسكتتون القيمتتة هتتي ‪) no‬كمتتا هتتو الحتتال فتتي هتتذا المثتتال( إذا‬

‫كاظنت القيمة ‪ ،yes‬فإن الوصول للمشاركة سيسكون للقراءة فقط‪.‬‬

‫‪ :create mask‬تحديد أذوظنا ت الملفا ت الجديدة عندما نتننشأ‪.‬‬ ‫•‬

‫ضشب نط سامبا‪ ،‬فيجب إظنشاء المجلد وتغيير الذوظنا ت؛ وذلك بإدخال المر التي من الطرفية‪:‬‬
‫بعد أن ن‬

‫‪sudo mkdir -p /srv/samba/share‬‬


‫‪sudo chown nobody.nogroup /srv/samba/share/‬‬

‫ملحظة‪ :‬الخيار ‪ -p‬ينخشبر ‪ mkdir‬بأن نينششئ كامل شجرة المجلد إن لم تسكن موجودصة‪.‬‬

‫في النهاية‪ ،‬أعد تشغيل خدما ت ‪ samba‬لتفعيل الضبط الجديد‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫تحذير‪ :‬يسمح الضبط السابق بالوصول لي مستخدم في الشبسكة المحلية‪ ،‬لضبط أكثر أماصظنا راجع القسم »تتتأمين‬
‫خادوم سامبا لتخديم الملفا ت والطباعة«‪.‬‬

‫▲‬ ‫‪| 478‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫تستتتطيع الن متتن عميتتل وينتتدوز أن تسكتتون قتتادصرا علتتى تصتتفح ختتادوم أوبنتتتو للملفتتا ت ورؤيتتة‬

‫مشتتاركة المجلتتد؛ إذا لتتم تظهتتر المشتتاركة عنتتد عميلتتك تلقائصيتتا‪ ،‬فحتتاول أن تصتتل إلتتى الختتادوم عتتبر‬

‫عنوان ‪ IP‬الخاص به؛ مثصل‪ \\192.168.1.1 ،‬في ظنافذة مستسكشف الملفا ت‪ ،‬حاول إظنشتتاء مجلتتد متتن‬

‫ويندوز للتحقق من أن كل شيء يعمل على ما يرام‪.‬‬

‫لمشتتتاركة مجلتتتدا ت إضتتتافية‪ ،‬فأظنششتتتئ ببستتتاطة أقستتتام ]‪ [dir‬فتتتي ‪/etc/samba/smb.conf‬‬

‫وأعد تشغيل خدمة سامبا؛ عليك أن تتأكد أن المجلد الذي تريد مشاركته موجتتود فعصل‪ ،‬والذوظنتتا ت‬

‫النمعطاة له صحيحة‪.‬‬

‫ملحظظظة‪ :‬المشتتاركة النمستتماة »] ‪ «[share‬والمستتار ‪ /srv/samba/share‬همتتا مجتترد مثتتالين؛ عتتددل استتم ومستتار‬
‫المشتتاركة لملئمتتة بيئتتتك؛ فسكتترة جيتتدة هتتي تستتمية استتم المشتتاركة باستتم المجلتتد فتتي ظنظتتام الملفتتا ت؛ مثتتال آختتر‬
‫سيسكون مشاركصة باسم ]‪ [qa‬بمسار ‪./srv/samba/qa‬‬

‫ج‪ .‬مصادر‬

‫كتاب »‪ «Using Samba‬من ‪ O'Reilly‬هو مصدر جيد للمعلوما ت‪.‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪ «Samba‬فيها بعض المعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 479‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ .3‬خادوم تسامبا للطباعة‬


‫استتخدام شتائع آختر لختادوم ستامبا ه و ضتبطه لمشتاركة الطابعتا ت المثبتتة إمتا محلصيتا أو عتبر‬

‫الشبسكة على خادوم أوبنتو؛ وبآليتتة شتتبيه تة بالليتتة فتتي قستم »ختتادوم ملفتتا ت ستامبا«‪ ،‬سيضتبط هتتذا‬

‫القسم سامبا للسماح لي عميتتل فتتي الشتتبسكة المحليتتة باستتتخدام الطابعتتا ت المثبتتتة دون طلتتب استتم‬

‫مستخدم وكلمة مرور‪.‬‬

‫لضبط أكثر أماصظنا‪ ،‬راجع القسم التي »تأمين خادوم سامبا لتخديم الملفا ت والطباعة«‪.‬‬

‫ا‪ .‬التثبيت‬

‫قبتتل تثتتبيت وضتتبط ستتامبا‪ ،‬متتن الفضتتل أن يسكتتون لتتديك تثتتبيت ‪ CUPS‬يعمتتل جيتتصدا‪ ،‬راجتتع‬

‫القسم »خادوم الطباعة ‪ «CUPS‬في الفصل الرابع عشر لمزيتد من المعلوما ت‪.‬‬

‫أد ش‬
‫خل ما يلي في الطرفية لتثبيت حزمة ‪:samba‬‬

‫‪sudo apt-get install samba‬‬

‫ب‪ .‬الضبط‬

‫بعتتد تثتتبيت ستتامبا‪ ،‬عتتددل الملتتف ‪ /etc/samba/smb.conf‬مغديتتصرا الخاصتتية ‪workgroup‬‬

‫إلى القيمة الملئمة لشبسكتك‪ ،‬وعددل قيمة ‪ security‬إلى ‪:user‬‬

‫‪workgroup = EXAMPLE‬‬
‫‪...‬‬
‫‪security = user‬‬

‫▲‬ ‫‪| 480‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫عددل قيمة الخيار ‪ guest ok‬إلى ‪ yes‬في قسم ]‪:[printers‬‬

‫‪browsable = yes‬‬
‫‪guest ok = yes‬‬

‫أعد تشغيل سامبا بعد إتمام تعديل ملف ‪:smb.conf‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫سيشارك ضبط سامبا الفتراضي كل الطابعا ت المثبتة‪ ،‬كل ما عليك فعله هتتو تثتتبيت الطابعتتة‬

‫محلصيا على عملء ويندوز‪.‬‬

‫ج‪ .‬مصادر‬

‫راجع موقع ‪ CUPS‬لمزيد من المعلوما ت حول ضبط ‪.CUPS‬‬ ‫•‬

‫▲‬ ‫‪| 481‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ .4‬تأمين خادوم تسامبا لتخديم الملفات والطباعة‬

‫ا‪ .‬أنماط حماية سامبا‬

‫هنالتتتتك مستتتتتويان أمنيتتتتان متتتتتوفران لتتتبروتوكول الشتتتتبسكة »ظنظتتتتام ملفتتتتا ت الظنتتتتترظنت الشتتتتائع«‬

‫) ‪ Common Internet Filesystem‬اختصاصرا ‪ (CIFS‬هما ‪ user-level‬و ‪share-level‬؛ ظنمتتط‬

‫الحمايتتة المستتتخدم فتتي ستتامبا يستتمح بمروظنتتة زائتتدة‪ ،‬متتوفصرا أربتتع طتترق لستتتخدام الحمايتتة متتن‬

‫مستوى ‪ user-level‬وطريقة لستخدام ‪:share-level‬‬

‫النمط ‪ :security=user‬يتطلب من العملء توفير اسم مستخدم وكلمتتة متترور للتصتتال‬ ‫•‬

‫إلتتى المشتتاركا ت؛ حستتابا ت المستتتخدمين فتتي ستتامبا منفصتتلة عتتن حستتابا ت مستتتخدمي‬

‫النظام‪ ،‬لسكتن الحزمتة ‪ libpam-smbpass‬ستنتزامن مستتتخدمي النظتتام وكلمتتا ت مرورهتتم‬

‫مع قاعدة بياظنا ت مستخدمي سامبا‪.‬‬

‫النمط ‪ :security=domain‬هذا النمط يستمح لختادوم ستامبا بتأن نيظهتر لعملء وينتدوز‬ ‫•‬

‫كتتتتالمتحسكم الرئيستتتتي بالنطتتتتاق ) ‪ Primary Domain Controller‬اختصتتتتاصرا ‪،(PDC‬‬

‫أو متحسكتتم الحتيتتاطي بالنطتتاق )‪ Backup Domain Controller‬اختصتتاصرا ‪،(BDC‬‬

‫أو ختتادوم عضتتو فتتي النطتتاق ) ‪ Domain Member Server‬اختصتتاصرا ‪ ،(DMS‬راجتتع‬

‫القسم »استخدام سامبا كمتحسكم بالنطاق« للمزيد من المعلوما ت‪.‬‬

‫النمتتتتتتط ‪ :security=ADS‬الستتتتتتماح لختتتتتتادوم ستتتتتتامبا بالظنضتتتتتتمام إلتتتتتتى ظنطتتتتتتاق ‪Active‬‬ ‫•‬

‫‪ Directory‬كعضو أصلي )‪(native member‬؛ راجع القستتم »دمتتج ستتامبا متع ‪Active‬‬

‫‪ «Directory‬للتفاصيل‪.‬‬

‫▲‬ ‫‪| 482‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫النمط ‪ :security=server‬هذا النمط نتتت شرك قبتتل أن يتمسكتتن ستتامبا متتن أن يصتتبح خادوصمتتا‬ ‫•‬

‫عضتت صوا‪ ،‬وبستتبب بعتتض المشتتاكل المنيتتة‪ ،‬فل يجتتب أن نيستتتخندم؛ راجتتع قستتم »‪Server‬‬

‫‪ «Security‬من دليل سامبا لمزيتد من التفاصيل‪.‬‬

‫النمتتط ‪ :security=share‬يستتمح لجميتتع العملء بالتصتتال إلتتى المشتتاركا ت دون تتتوفير‬ ‫•‬

‫اسم مستخدم وكلمة مرور‪.‬‬

‫يعتمد اختيارك لنمط الحماية بالبيئة التي تعمل فيها وما الذي تريد من خادوم سامبا أن نينجزه‪.‬‬

‫النمط ‪Security = User‬‬

‫سيعيد هذا القسم ضبط خادوم سامبا لمشاركة الملفا ت والطباعة من القسمين السابقين‪ ،‬كي‬

‫يتطلب الستيثاق‪.‬‬

‫أوصل‪ ،‬ثدبت الحزمة ‪ libpam-smbpass‬التي س تزامن مستتخدمي النظتام إلتى قاعتدة بياظنتا ت‬

‫مستخدمي سامبا‪:‬‬

‫‪sudo apt-get install libpam-smbpass‬‬

‫ملحظظظة‪ :‬لتتو اختتتر ت مهمتتة »‪ «Samba Server‬أثنتتاء التثتتبيت‪ ،‬فستتتسكون الحزمتتة ‪ libpam-smbpass‬مثنبتتتصة‬
‫مسبصقا‪.‬‬

‫▲‬ ‫‪| 483‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫عددل الملف ‪ ،/etc/samba/smb.conf‬وعددل ما يلي في قسم ]‪:[share‬‬

‫‪guest ok = no‬‬

‫في النهاية‪ ،‬أعد تشغيل سامبا لسكي تأخذ العدادا ت الجديدة مفعولها‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫سنيط نلب منك الن إدخال اسم مستخدم وكلمتتة متترور عنتتد التصتتال إلتتى المجلتتدا ت المشتتاركة‬

‫أو الطابعا ت‪.‬‬

‫ملحظة‪ :‬إذا اختر ت ربط قرص شبسكي للمشاركة‪ ،‬فعليك تفعيل الحقتل » ‪«Reconnect at Logon‬؛ ممتا يجعلته‬
‫يطلب اسم المستخدم وكلمة المرور مرصة واحدصة فقط‪ ،‬على القل إلى أن نتغنير كلمة المرور‪.‬‬

‫ب‪ .‬تأمين المشاركة‬

‫هنالك ع ددة خيارا ت متوفرة لزيادة الحماية لمشاركا ت المجلدا ت المنفصلة؛ وباستخدام مثال‬

‫»]‪ ،«[share‬فسيشرح هذا القسم بعض الخيارا ت الشائعة‪.‬‬

‫▲‬ ‫‪| 484‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫المجموعات‬

‫نتعدرف المجموعا ت تشسكيلصة من الحواسيب أو المستخدمين الذي يملسكتون وص وصل متسكترصرا إلتى‬

‫مورد شبسكي معين؛ على سبيل المثال‪ ،‬إذا نعدرفت المجموعة ‪ qa‬وكاظنت تحتتوي علتى المستتتخدمين‬

‫‪ ،freda‬و ‪ ،danika‬و ‪rob‬؛ ومجموعة ثاظنية هي ‪ support‬تحتوي على المستتتخدمين ‪،danika‬‬

‫و ‪ ،jeremy‬و ‪vincent‬؛ و ن‬
‫ضشبط مورد شتبسكي معديتن للستماح بالوصتول إلتى المجموعتة ‪ ،qa‬والتذي‬

‫بدوره سيمنح المستخدمين ‪ ،freda‬و ‪ ،danika‬و ‪ rob‬وصوصل لسكن ليتتس ‪ jeremy‬أو ‪vincent‬؛‬

‫ولمتتتا كتتتان المستتتتخدم ‪ danika‬ينتمتتتي إلتتتى كلتتتي المجموعتتتتين ‪ qa‬و ‪support‬؛ فستتتيتمسكن متتتن‬

‫الوصول إلى الموارد التي نيس نمح لسكل المجموعتين بالوصول إليها‪ ،‬بينما كل المستخدمين البتتاقيين‬

‫سيقيدون بالموارد التي تسمح بوصول مجموعتهم إليها‪.‬‬

‫يبحتتتتث ستتتتامبا عتتتتن المجموعتتتتا ت فتتتتي النظتتتتام المحلتتتتي النمعنرفتتتتة فتتتتي ‪ /etc/group‬ليحتتتتدد‬

‫أي مستخدم ينتمي إلى أي مجموعة؛ للمزيد من المعلوما ت حول إضافة أو إزالة المستخدمين متتن‬

‫المجموعا ت‪ ،‬راجع القسم »إضافة وحذف المستخدمين« من الفصل التاسع‪.‬‬

‫عنتتد تعريتتف المجموعتتا ت فتتي ملتتف ضتتبط ستتامبا‪/etc/samba/smb.conf ،‬؛ فتتإن الصتتيغة‬

‫المتعارف عليها هي بدء اسم المجموعة بالرمز »@« ؛ على سبيل المثال‪ ،‬إذا أرد ت تعريف مجموعتتة‬

‫مستتماة ‪ sysadmin‬فتتي قستتم محتتدد متتن ملتتف ‪ ،/etc/samba/smb.conf‬فعليتتك إدختتال استتم‬

‫المجموعة ‪.@sysadmin‬‬

‫▲‬ ‫‪| 485‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫أذونات الملف‬

‫نتع درف أذوظنا ت الملف الحقوق المحددة التي يملسكها حاسوب أو مستتتخدم علتتى مجلتتد أو ملتتف‬

‫أو مجموعتتتتة ملفتتتتا ت؛ يمسكتتتتن تعريتتتتف هتتتتذه الذوظنتتتتا ت بتعتتتتديل الملتتتتف ‪/etc/samba/smb.conf‬‬

‫وتحديد الذوظنا ت لمشاركة ملف معدين‪.‬‬

‫ت مشتاركة ستامبا استمها ‪ share‬وأرد ت إعطتاء أذوظنتا ت »للقتراءة‬


‫علتى ستبيل المثتال‪ ،‬ل و نعنرفت ن‬

‫فقتتتتط« لمجموعتتتتة المستتتتتخدم ‪ qa‬؛ لسكنتتتتك تريتتتتد الستتتتماح بالسكتابتتتتة لمجموعتتتتة استتتتمها ‪sysadmin‬‬

‫ومستتتتخدم استتتمه ‪ ،vincent‬فعليتتتك تعتتتديل الملتتتف ‪ /etc/samba/smb.conf‬وإضتتتافة القيتتتود‬

‫التية تحت قيد ]‪:[share‬‬

‫‪read list = @qa‬‬


‫‪write list = @sysadmin, vincent‬‬

‫طريقتتة أختترى لضتتبط الذوظنتتا ت فتتي ستتامبا هتتي التصتتريح عتتن أذوظنتتا ت »إداريتتة« لمتتورد معديتتن‬

‫نمشتتا نرك؛ حيتتث يمسكتتن للمستتتخدمين التتذي يملسكتتون أذوظنتتا ت إداريتتة قتتراءة أو كتابتتة أو تعتتديل أديتتة‬

‫ن‬
‫ ت إدارية خاصة عليه‪.‬‬
‫معلوما ت موجودة في المورد الذي أعطي ذاك المستخدم أذوظنا ت‬

‫ ت إداريتة للمشتاركة ‪،share‬‬


‫علتى ستبيل المثتال‪ ،‬إذا أرد ت إعطتتاء المستتخدم ‪ melissa‬أذوظنتا ت‬

‫فعليك تعديل الملف ‪ /etc/samba/smb.conf‬وإضافة السطر التية تحت القيد ]‪:[share‬‬

‫‪admin users = melissa‬‬

‫▲‬ ‫‪| 486‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫بعد تعديل الملف ‪ ،/etc/samba/smb.conf‬أعد تشغيل سامبا كي تأخذ التعديل ت مجراها‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫ملحظة‪ :‬لسكي تعمل » ‪ «read list‬و »‪ ،«write list‬ل يجب أن يسكون ظنمط حماية المستخدم في سامبا مضبوصطا‬
‫إلى ‪.security = share‬‬

‫ن‬
‫ضشبط سامبا الن ليحدد أدية مجموعا ت تملك الوصول إلى مجلد نمشانرك‪ ،‬يجتتب الن تحتتديث‬

‫أذوظنا ت ظنظام الملفا ت‪.‬‬

‫ظنظام أذوظنا ت ليننسكس التقليدي ل يتتترابط جيتتصدا متع قتتوائم التحسكتتم بالوصتول فتتي وينتتدوز ‪NT‬‬

‫) ‪ Windows NT Access Control Lists‬اختصتتتاصرا ‪(ACLs‬؛ لحستتتن الحتتتظ‪ ،‬توجتتتد ‪POSIX‬‬

‫‪ ACLs‬في خواديم أوبنتو موفرصة تحسكصما أفضل؛ على سبيل المثال‪ ،‬للسماح باستخدام ‪ ACLs‬علتتى‬

‫‪ /srv‬بنظام ملفا ت ‪ ،EXT3‬فعددل الملف ‪ /etc/fstab‬وأضف الخيار ‪ acl‬كما يلي‪:‬‬

‫‪UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv ext3‬‬


‫‪noatime,relatime,acl 0‬‬ ‫‪1‬‬

‫ثم أعد وصل القسم‪:‬‬

‫‪sudo mount -v -o remount /srv‬‬

‫ملحظة‪ :‬تفترض الوام ر الستابقة أن ‪ /srv‬علتى قستتم مختلتف؛ إذا كتان ‪ ،/srv‬أو أي مستار آخ ر تختتار مشتاركته‪،‬‬
‫هو جزء من قسم الجذر ‪ ،/‬فربما عليك إعادة إقلع النظام‪.‬‬

‫▲‬ ‫‪| 487‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫لمطابقتتة ضتتبط ستتامبا‪ ،‬فستتنتعطى المجموعتتة ‪ sysadmin‬أذوظنتتا ت القتتراءة والسكتابتتة والتنفيتتذ‬

‫ي القراءة والتنفيذ؛ وستتنتمنلك الملفتتا ت متتن‬ ‫ن‬


‫إلى ‪ ،/srv/samba/share‬وسنتعطى المجموعة ‪ qa‬إذظن د‬
‫المستخدم ‪ .melissa‬أد ش‬
‫خل الوامر التية في الطرفية‪:‬‬

‫‪sudo chown -R melissa /srv/samba/share/‬‬


‫‪sudo chgrp -R sysadmin /srv/samba/share/‬‬
‫‪sudo setfacl -R -m g:qa:rx /srv/samba/share/‬‬

‫ملحظة‪ :‬المر ‪ setfacl‬السابق يعطي أذوظنا ت التنفيذ إلى جميع الملفا ت في المجلد ‪ ،/srv/samba/share‬ربما‬
‫يسكون أو ل يسكون هذا ما تريده‪.‬‬

‫الن متتن عميتتل وينتتدوز‪ ،‬يجتتب أن تلحتتظ تطتتبيق الذوظنتتا ت الجديتتدة للملتتف؛ راجتتع صتتفحا ت‬

‫دليل ‪ acl‬و ‪ setfacl‬لمزيد من المعلوما ت حول ‪.POSIX ACLs‬‬

‫ج‪ .‬ملف ضبط سامبا لبرمجية ‪AppArmor‬‬

‫يأتي أوبنتو مع وحدة الحماية ‪ ،AppArmor‬الذي يوفر تحسكصما مقديصدا للوصول؛ ملف الضبط‬

‫الفتراضتتتي الختتتاص ببرمجيتتتة ‪ AppArmor‬لخدمتتتة ستتتامبا يجتتتب أن يلئتتتم ضتتبطك‪ ،‬للمزيتتتد متتتن‬

‫التفاصيل حول استخدام ‪ AppArmor‬راجع »الفصل التاسع ‪ -‬الحماية«‪.‬‬

‫هنالتتتك ملفتتتا ت ضتتتبط افتراضتتتية لسكلتتتي ‪ /usr/sbin/smbd‬و ‪) /usr/sbin/nmbd‬الملفتتتا ت‬

‫الثنائية لعفريت سامبا( كجزتء من حزمتتة ‪apparmor-profiles‬؛ أد ش‬


‫ختل المتر التتي متن الطرفيتة‬

‫لتثبيت الحزمة‪:‬‬

‫‪sudo apt-get install apparmor-profiles apparmor-utils‬‬

‫▲‬ ‫‪| 488‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫افتراضتتصيا‪ ،‬تسكتتون ملفتتا ت الضتتبط لعفريتتتي ‪ smbd‬و ‪ nmbd‬فتتي وضتتع »البنتتاء« ممتتا يستتمح‬

‫لخدمة سامبا بالعمل دون تعديل ملف الضبط‪ ،‬وسنتسنجل الخطاء فقط؛ لجعل ملف ضتتبط ‪smbd‬‬

‫في وضع »الجبار«‪ ،‬ولسكي يعمل سامبا كما يجب‪ ،‬فيجب أن نيعندل ملف الضبط لتضتمين المجلتدا ت‬

‫التي تمت مشاركتها‪.‬‬

‫عددل ملف ‪ /etc/apparmor.d/usr.sbin.smbd‬مضيصفا معلوما ت ]‪:[share‬‬

‫‪/srv/samba/share/ r,‬‬
‫‪/srv/samba/share/** rwkix,‬‬

‫ضع الملف في وضع »الجبار« وأعد تحميله‪:‬‬

‫‪sudo aa-enforce /usr/sbin/smbd‬‬


‫‪cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r‬‬

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

‫‪ smbd‬يملك الن حق الوصول إلى الملفا ت والمجلتدا ت المضتبوطة فقتط؛ تأكتد متن إضتافة القيتود‬

‫لسكل مجلد تضبط مشاركته في سامبا؛ وستسجل أي ص‬


‫ضا أدية أخطاء إلى ‪./var/log/syslog‬‬

‫د‪ .‬مصادر‬

‫ص للحماية‪.‬‬‫الفصل الثامن عشر من »‪ «Samba HOWTO Collection‬مخص ة‬ ‫•‬

‫للمزيد من المعلوما ت حول ‪ Samba‬و ‪ ،ACLs‬راجع الصفحة »‪.«Samba ACLs‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة ويسكي أوبنتو »‪.«Samba‬‬ ‫•‬

‫▲‬ ‫‪| 489‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ .5‬اتستخدام تسامبا كمتحكم في النطاق‬


‫علتتى الرغتتتم متتتن أن ستتامبا ل يمسكتتن أن يسكتتتون ‪Active Directory Primary Domain‬‬

‫‪ ،(PDC) Controller‬لسكتتن يمسكتتن أن نيضتتنبط ختتادوم ستتامبا ليظهتتر كمتحسكتتم متتن ظنمتتط ‪Windows‬‬

‫‪ NT4‬؛ ميزة لهذا الضبط هي قابلية جعل تصاريح المستتتخدمين والحواستيب مركزيتتة؛ يمسكتتن أي ص‬
‫ضتتا‬

‫أن نيستخدم سامبا عددة أظنواع من السند الخلفي )‪ (backends‬لتخزين بياظنا ت المستخدم‪.‬‬

‫ا‪ .‬متحكم رئيسي بالنطاق‬

‫يشتترح هتتذا القستتم طريقتتة ضتتبط ستتامبا ليعمتتل كمتحسكتتم رئيستتي بالنطتتاق ) ‪ (PDC‬باستتتخدام‬

‫السند الخلفي الفتراضي ‪.smbpasswd‬‬

‫أوصل‪ ،‬ثدبت سامبا و ‪ libpam-smbpass‬لمزامنة حسابا ت المستخدمين؛ وذلتك بإدختتال المتر‬

‫التي في الطرفية‪:‬‬

‫‪sudo apt-get install samba libpam-smbpass‬‬

‫ثتتتم اضتتتبط ستتتامبا بتعتتتديل الملتتتف ‪/etc/samba/smb.conf‬؛ حيتتتث يجتتتب أن نيضتتتنبط ظنمتتتط‬

‫‪ security‬إلى ‪user‬؛ ويجب أن تتعلق ‪ workgroup‬بمنظمتك‪:‬‬

‫‪workgroup = EXAMPLE‬‬
‫‪...‬‬
‫‪security = user‬‬

‫▲‬ ‫‪| 490‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫فتتي قستتم »‪ «Domains‬المحتتاط بتعليقتتا ت‪ ،‬أضتتف أو أزل التعليتتق عنمتتا يلتتي )نقدستتم آختتر ستتطر‬

‫إلى قسمين ليتسع في عرض الصفحة(‪:‬‬

‫‪domain logons = yes‬‬


‫‪logon path = \\%N\%U\profile‬‬
‫‪logon drive = H:‬‬
‫‪logon home = \\%N\%U‬‬
‫‪logon script = logon.cmd‬‬
‫‪add machine script = sudo /usr/sbin/useradd -N -g machines -c‬‬
‫‪↪ Machine -d /var/lib/samba -s /bin/false %u‬‬

‫ملحظة‪ :‬إذا أرد ت عدم استخدام »‪ «Roamin Profiles‬فاترك الخيتتارين »‪ «logon home‬و » ‪«logon path‬‬
‫مسبونقين بتعليق‪.‬‬

‫‪ :domain logons‬يتتتتوفر خدمتتتتة ‪ netlogon‬ممتتتتا يجعتتتتل ستتتتامبا يتصتتتترف كمتحسكتتتتم‬ ‫•‬

‫بالنطاق‪.‬‬

‫‪ :logon path‬يضتتع ملتتف ‪ profile‬الختتاص بوينتتدوز فتتي مجلتتد المنتتزل للمستتتخدم؛ متتن‬ ‫•‬

‫الممسكن ضبط مشاركة ]‪ [profiles‬ووضع كل ملفا ت ‪ profile‬في مجلد واحد‪.‬‬

‫‪ :logon home‬تحديد مسكان مجلد المنزل‪.‬‬ ‫•‬

‫‪ :logon script‬تحديد السسكربت التتذي نيشتتنغل محلصيتتا بعتتد أن نيستدجل المستتتخدم دختتوله؛‬ ‫•‬

‫يجب أن يوضع السسكربت في مشاركة ]‪.[netlogon‬‬

‫‪ :add machine script‬الستتسكربت التتذي نينششتتئ تلقائصيتتا الحستتاب ‪Machine Trust‬‬ ‫•‬

‫الضروري لسكي تنضم محطة العمل )‪ (workstation‬إلى النطاق‪.‬‬

‫▲‬ ‫‪| 491‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫ن‬
‫فتتي هتتذا المثتتال‪ ،‬أظنششتتئت المجموعتتة ‪ machines‬بتتالداة ‪addgroup‬؛ راجتتع الفصتتل التاستتع‬

‫قسم »إضافة وحذف المستخدمين« لمزيتد من التفاصيل‪.‬‬

‫أزل التعليق عن مشاركة ]‪ [homes‬للسماح بربط ‪:logon home‬‬

‫]‪[homes‬‬
‫‪comment = Home Directories‬‬
‫‪browseable = no‬‬
‫‪read only = no‬‬
‫‪create mask = 0700‬‬
‫‪directory mask = 0700‬‬
‫‪valid users = %S‬‬

‫بعد أن نيضتتنبط كمتحسكتتم بالنطتتاق‪ ،‬يجتتب أن نتضتتنبط الن المشتتاركة ]‪ ،[netlogon‬أزل التعليتتق‬

‫عما يلي لتفعيل تلك المشاركة‪:‬‬

‫]‪[netlogon‬‬
‫‪comment = Network Logon Service‬‬
‫‪path = /srv/samba/netlogon‬‬
‫‪guest ok = yes‬‬
‫‪read only = yes‬‬
‫‪share modes = no‬‬

‫ملحظة‪ :‬مسار مشاركة ‪ netlogon‬الفتراضي هو ‪/home/samba/netlogon‬؛ لسكن وفصقتتا لمعيتتار هيسكلتتة ظنظتتام‬
‫الملفا ت )‪ ،(FHS‬إن ‪ /srv‬هو المسار الصحيح للبياظنا ت الموفرة من الخادوم‪.‬‬

‫▲‬ ‫‪| 492‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫أظنششئ الن مجلد ‪ netlogon‬وملف سسكربت ‪ logon.cmd‬فار ص‬


‫غا )حالصيا(‪:‬‬

‫‪sudo mkdir -p /srv/samba/netlogon‬‬


‫‪sudo touch /srv/samba/netlogon/logon.cmd‬‬

‫يمسكنتتتك إدختتتال أوامتتتر ستتتسكربت ‪ Windows Logon‬فتتتي ملتتتف ‪ logon.cmd‬لتخصتتتيص‬

‫بيئة العميل‪.‬‬

‫أعد تشغيل سامبا لتفعيل المتحسكم بالنطاق الجديد‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫في النهاية‪ ،‬هنالك بعض الوامر الضافية لضبط الحقوق الملئمة‪.‬‬

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

‫نترنبتتط مجموعتتة فتتي النظتتام إلتتى مجموعتتة ‪Windows Domain Admins‬؛ أد ش‬


‫ختتل المتتر التتتي‬

‫الذي يستخدم الداة ‪:net‬‬

‫\ "‪sudo net groupmap add ntgroup="Domain Admins‬‬


‫‪unixgroup=sysadmin rid=512 type=d‬‬

‫ملحظظظة‪ :‬عتتددل ‪ sysadmin‬إلتتى المجموعتتة التتتي تفضتتلها؛ وأي ص‬


‫ضتتا يجتتب أن يسكتتون المستتتخدم التتذي ينضتتم إلتتى‬
‫النطاق عضصوا في المجموعة ‪ sysadmin‬ومجموعة النظام ‪ ،admin‬التي تسمح باستخدام ‪.sudo‬‬

‫▲‬ ‫‪| 493‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫إذا لتتتم يحصتتتل المستتتتخدم علتتتى تصتتتاريح ستتتامبا بعتتتد؛ فيمسكنتتتك إضتتتافتها باستتتتخدام الداة‬

‫‪ ،smbpasswd‬ل تننس تعديل اسم ‪ sysadmin‬ليلئم ظنظامك‪:‬‬

‫‪sudo smbpasswd -a sysadmin‬‬

‫ضا‪ ،‬يجتتب أن تسكتتون الحقتوق المعطتتاة إلتتى مجموعتة ‪ Domain Admins‬نمحتنددصة للستماح‬
‫أي ص‬

‫لضافة ‪ ) machine script‬والوظائف الدارية الخرى( بأن تعمل؛ ويمسكن فعل ذلك بالمر‪:‬‬

‫\ "‪net rpc rights grant -U sysadmin "EXAMPLE\Domain Admins‬‬


‫\ ‪SeMachineAccountPrivilege SePrintOperatorPrivilege‬‬
‫\ ‪SeAddUsersPrivilege SeDiskOperatorPrivilege‬‬
‫‪SeRemoteShutdownPrivilege‬‬

‫يجب أن تسكون الن قادصرا على ضم عملء ويندوز إلى النطتاق بنفتس الطريقتة التتي ينضتمون‬

‫فيها إلى ظنطاق ‪ NT4‬يعمل على خادوم ويندوز‪.‬‬

‫ب‪ .‬متحكم احتياطي بالنطاق‬

‫بوجود متحسكتتم رئيستتي بالنطتتاق )‪ (PDC‬فتتي الشتتبسكة‪ ،‬فمتتن الفضتتل وجتتود متحسكتتم احتيتتاطي‬

‫بالنطاق )‪ (BDC‬أي ص‬
‫ضا؛ مما يسمح باستيثاق العملء في حال أصبح المتحسكم الرئيسي غير متوفتر‪.‬‬

‫عندما تضبط سامبا كمتحسكم احتياطي‪ ،‬فستحتاج إلى آليتة لمزامنتتة معلومتا ت الحستتابا ت متع‬

‫المتحسكتتم الرئيستتي؛ هنالتتك عتتددة طتترق لفعتتل ذلتتك تتضتتمن ‪ ،scp‬أو ‪ ،rsync‬أو باستتتخدام ‪LDAP‬‬

‫كسند ‪ passdb‬خلفي‪.‬‬

‫▲‬ ‫‪| 494‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫استتتخدام ‪ LDAP‬هتتو أكتتثر الطتترق مروظنتتصة لمزامنتتة معلومتتا ت الحستتابا ت‪ ،‬لن كل المتحسكنميتتن‬

‫بالنطاق يستخدمان ظنفس المعلوما ت في الوقت الحقيقي؛ لسكتن إعتداد ختادوم ‪ LDAP‬هتو أمتةر زائتد‬

‫التعقيد لشبسكة تحتوي عدصدا قليصل من حسابا ت المستخدمين والحواسيب؛ راجع القسم »استتتخدام‬

‫سامبا مع ‪ «LDAP‬للتفاصيل‪.‬‬

‫أوصل‪ ،‬ثدبت ‪ samba‬و ‪ ،libpam-smbpass‬وذلك بإدخال المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install samba libpam-smbpass‬‬

‫عددل الن ملف ‪ /etc/samba/smb.conf‬وأزل التعليق عدما يلي في قسم ]‪:[global‬‬

‫‪workgroup = EXAMPLE‬‬
‫‪...‬‬
‫‪security = user‬‬

‫في قسم ‪ Domains‬المحاط بتعليق‪ ،‬أضف أو أزل التعليق عن‪:‬‬

‫‪domain logons = yes‬‬


‫‪domain master = no‬‬

‫تأكد أن المستخدم لديه الحقوق لقراءة الملفا ت فتتي ‪/var/lib/samba‬؛ علتتى ستتبيل المثتتال‪،‬‬

‫للسماح لمجموعة ‪ admin‬بنقل الملفا ت عبر ‪ ،scp‬فأد ش‬


‫خل المر‪:‬‬

‫‪sudo chgrp -R admin /var/lib/samba‬‬

‫▲‬ ‫‪| 495‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫ثم‪ ،‬زامن حسابا ت المستخدمين‪ ،‬باستخدام ‪ scp‬لنسخ مجلد ‪ /var/lib/samba‬من ‪:PDC‬‬

‫‪sudo scp -r username@pdc:/var/lib/samba /var/lib‬‬

‫ملحظة‪ :‬استبدل ‪ username‬باسم مستخدم صالح‪ ،‬و ‪ pdc‬باسم ‪ PDC‬أو عنوان ‪ IP‬له‪.‬‬

‫ثم في النهاية‪ ،‬أشعد تشغيل سامبا‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫يمسكنك اختبار عمل متحسكم النطاق الحتياطي بإيقاف عفريتتت ستتامبا فتتي ‪ ،PDC‬ثتتم محاولتتة‬

‫تسجيل الدخول من عميل ويندوز موجود في النطاق‪.‬‬

‫شتتيء آختتر لتبقيتته فتتي بالتتك أنظنتته إذا ن‬


‫ضتتشبط الخيتتار ‪ logon home‬إلتتى مجلتتد فتتي ‪ ،PDC‬فتتإذا‬

‫أصبح ‪ PDC‬غير متوف تر‪ ،‬فإن الوصول إلتتى قتترص المنتزل للمستتتخدم سيصتبح متعتتذصرا؛ لهتذا الستتبب‬

‫من الفضل ضبط ‪ logon home‬ليقبع في خادوم ملفا ت منفصل عن ‪ PDC‬و ‪.BDC‬‬

‫ج‪ .‬مصادر‬

‫الفصل الرابع والفصل الخامس من » ‪ «Samba HOWTO Collection‬يشرحان طريقة‬ ‫•‬

‫ضبط خادوم سامبا ليسكون متحسكصما رئيسصيا واحتياطصيا بالنطاق على التوالي وبالترتيب‪.‬‬

‫▲‬ ‫‪| 496‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫‪ .6‬دمج تسامبا مع ‪Active Directory‬‬

‫ا‪ .‬الوصول إلى مشاركة سامبا‬

‫استخدام آخر لخدمة سامبا هو الظندماج مع شتتبسكة وينتتدوز موجتتودة مستتبصقا‪ ،‬وبعتتد أن يصتتبح‬

‫سامبا جزصءا من ظنطاق ‪ ،Active Directory‬فيمسكن لخدمة سامبا توفير خدما ت مشاركة الملفا ت‬

‫والطباعة إلى مستخدمي ‪.AD‬‬

‫أبستتتتط طريقتتتتة للظنضتتتتمام إلتتتتى ظنطتتتتاق ‪ AD‬هتتتتي استتتتتخدام ‪Likewise-open‬؛ لرشتتتتادا ت‬

‫تفصيلية‪ ،‬اظنظر إلى » ‪.«Likewise Open Installation and Administration Guide‬‬

‫بعد أن يصبح جزصءا في ظنطاق ‪Active Directory‬؛ أد ش‬


‫خل المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install samba smbfs smbclient‬‬

‫ثم عددل الملف ‪ /etc/samba/smb.conf‬نمغديصرا‪:‬‬

‫‪workgroup = EXAMPLE‬‬
‫‪...‬‬
‫‪security = ads‬‬
‫‪realm = EXAMPLE.COM‬‬
‫‪...‬‬
‫‪idmap backend = lwopen‬‬
‫‪idmap uid = 50-9999999999‬‬
‫‪idmap gid = 50-9999999999‬‬

‫أعد تشغيل سامبا لتأخذ التعديل ت الجديدة تأثيرها‪:‬‬

‫‪sudo restart smbd‬‬


‫‪sudo restart nmbd‬‬

‫▲‬ ‫‪| 497‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫يجب أن تسكون الن قادصرا على الوصول إلى أي من مشتتاركا ت ستتامبا متتن عميتتل ‪Windows‬؛‬

‫لسكتتن للتأكتتد متتن إعطتتاء مستتتخدمي أو مجموعتتا ت ‪ AD‬الملئمتتة الوصتول إلتتى مجلتتد مشتتترك؛ راجتتع‬

‫القسم »تأمين خادوم سامبا لتخديم الملفا ت والطباعة« لمزيتد من التفاصيل‪.‬‬

‫ب‪ .‬الوصول إلى مشاركة ويندوز‬

‫بعتتد أن أصتتبح ختتادوم ستتامبا جتتزصءا متتن ظنطتتاق ‪ Active Directory‬فتستتتطيع الوصتول إلتتى‬

‫أدية مشاركا ت من خادوم ويندوز‪:‬‬

‫أد ش‬
‫خل المر التي في الطرفية لوصل مشاركة من ويندوز‪:‬‬

‫‪mount.cifs //fs01.example.com/share mount_point‬‬

‫متتن الممسكتتن الوصتتول إلتتى مشتتاركا ت علتتى حواستتيب ليستتت جتتزصءا متتن ظنطتتاق ‪ ،AD‬لسكتتن يجتتب‬

‫توفير اسم مستخدم وكلمة مرور للوصول إليها‪.‬‬

‫لوصل مشاركة مجلد أثناء القلع‪ ،‬أضف قيصدا في ملف ‪/etc/fstab‬؛ على سبيل المثال‪:‬‬

‫‪//192.168.0.5/share /mnt/windows cifs‬‬


‫‪auto,username=steve,password=secret,rw 0‬‬ ‫‪0‬‬

‫طريقة أخترى لنستخ الملفتا ت متن ختادوم وينتدوز هتي استتخدام الداة ‪smbclient‬؛ فلعترض‬

‫الملفا ت في مشاركة ويندوز‪:‬‬

‫"‪smbclient //fs01.example.com/share -k -c "ls‬‬

‫▲‬ ‫‪| 498‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫سامبا‬

‫لنسخ ملف من مشاركة‪ ،‬اكتب المر‪:‬‬

‫"‪smbclient //fs01.example.com/share -k -c "get file.txt‬‬

‫المر السابق سينسخ الملف ‪ file.txt‬إلى مجلد العمل الحالي‪.‬‬

‫ولنسخ ملف إلى المشاركة‪:‬‬

‫"‪smbclient //fs01.example.com/share -k -c "put /etc/hosts hosts‬‬

‫المر السابق سينسخ الملف ‪ /etc/hosts‬إلى ‪.//fs01.example.com/share/hosts‬‬

‫الخيار ‪ -c‬النمستخ ندم في الوامتتر الستتابقة يستتمح لتتك بتنفيتتذ أمتتر ‪ smbclient‬مباشتترصة؛ وهتتذا‬

‫يفيد في كتابة الستسكربتا ت والعمليتا ت البستيطة علتى الملفتا ت؛ للتدخول إلتى شمنحتث ‪smb: \>‎‬؛ مثتل‬

‫محث ‪ FTP‬حيث نتننفذ أوامر لمعالجة الملفا ت العادية والمجلدا ت‪ ،‬فندفذ المر‪:‬‬

‫‪smbclient //fs01.example.com/share -k‬‬

‫ملحظتتتتتتتتتتتتتتتتتتتتتتة‪ :‬استتتتتتتتتتتتتتتتتتتتتتتبدل كتتتتتتتتتتتتتتتتتتتتتتل أمتتتتتتتتتتتتتتتتتتتتتتاكن ورود ‪ ،fs01.example.com‬و ‪،//192.168.0.5/share‬‬


‫و ‪ username=steve,password=secret‬و ‪ file.txt‬بعنتتتوان ‪ IP‬للختتتادوم‪ ،‬واستتتم المشتتتاركة‪ ،‬واستتتم الملتتتف‪،‬‬
‫واسم المستخدم الحقيقي وكلمة مروره بالقيم الملئمة‪.‬‬

‫ج‪ .‬مصادر‬

‫ ت إضافية للمر ‪ ،smbclient‬راجع صفحة الدليل ‪.man smbclient‬‬


‫لخيارا ت‬ ‫•‬

‫صفحة دليل ‪ man mount.cifs‬هي أي ص‬


‫ضا مرجع مفيد لمعلوما ت تفصيلية‪.‬‬ ‫•‬

‫▲‬ ‫‪| 499‬‬


‫النسخ التحتياطي‬
‫‪19‬‬

‫▲‬ ‫|‬ ‫‪500‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫هنالتتتك عتتتددة طتتترق لنستتتخ تثتتتبيت أوبنتتتتو احتياط صيتتتا؛ أهتتتم متتتا هنالتتتك بالنستتتبة إلتتتى النستتتخ‬

‫الحتياطية هو تطوير »خطة ظنسخ احتياطي« تحتوي على ماذا سنيننسخ احتياطييا‪ ،‬وأين سنيننسخ‪،‬‬

‫وكيف سنيسترنجع‪.‬‬

‫ستشرح القسام التية طرصقا مختلفة لظنجاز هذه المهام‪.‬‬

‫‪ .1‬تسكربتات ششل‬
‫إحتتدى أبستتط الطتترق لنستتخ ظنظتتام احتياطييتتا هتتي استتتخدام »ستتسكربت ششتتل« ) ‪(shell script‬؛‬

‫علتتى ستتبيل المثتتال‪ ،‬يمسكتتن أن نيستتتخندم ستتسكربت لضتتبط أديتتة مجلتتدا ت يجتتب أن نتننستتخ احتياطييتتا‪،‬‬

‫ونتمتتنرر هتتذه المجلتتدا ت كوستتائط إلتتى الداة ‪ ،tar‬التتتي سنتنششتتئ ملتتف أرشتتيف؛ ويمسكتتن أن نيننقتتل ذاك‬

‫الملف أو ينننسخ إلى مسكاتن آخر؛ ويمسكن أن نيننشأ أي ص‬


‫ضا الرشيف في ظنظام بعيد عبر ‪.NFS‬‬

‫الداة ‪ tar‬نتنششتتئ ملتتف أرشتتيف واحتتد متتن عتتددة ملفتتا ت أو مجلتتدا ت؛ يمسكتتن أي ص‬
‫ضتتا للداة ‪tar‬‬

‫تمرير الملفا ت عبر أدوا ت ضغط‪ ،‬وهذا سيؤدي بدوره إلى تقليل حجم ملف الرشيف‪.‬‬

‫▲‬ ‫|‬ ‫‪501‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫النسخ الحتياطي‬

‫ سكربت ش‬.‫ا‬
‫شل بسيط‬

‫ موصتول عتن بعتتد؛‬NFS ‫ لظنشاء ملف أرشتيف فتي ظنظتتام ملفتا ت‬tar ‫السسكربت التي يستخدم‬

:‫نيحندد اسم الرشيف باستخدام أدوا ت إضافية تعمل من سطر الوامر‬

#!/bin/sh
####################################
#
# Backup to NFS mount script.
#
####################################

# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"

# Where to backup to.


dest="/mnt/backup"

# Create archive filename.


day=$(date +%A)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# Print start status message.


echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# Backup the files using tar.


tar czf $dest/$archive_file $backup_files
# Print end status message.
echo
echo "Backup finished"
date

# Long listing of files in $dest to check file sizes.


ls -lh $dest

▲ | 502
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫‪ :$backup_files‬متغيتتر يحتتتوي علتتى قائمتتة بأديتتة مجلتتدا ت تتتود أن تنستتخها احتياطييتتا؛‬ ‫•‬

‫يجب تعديل هذه القائمة لتناسب احتياجاتك‪.‬‬

‫‪ :$day‬متغيتتتر يحتتتتوي علتتتى استتتم اليتتتوم متتتن الستتتبوع )مثتتتل ‪ ،Monday‬أو ‪،Tuesday‬‬ ‫•‬

‫أو ‪... Wednesday‬إلخ‪(.‬؛ وسنيستخ ندم لظنشاء ملف أرشيف لسكتتل يتتوم متتن الستتبوع‪ ،‬ممتتا‬

‫يعطي تاري صخا للنسخ الحتياطي هو سبعة أيام؛ هنالك طتترةق أختترى للقيتتام بتتذلك بمتتا فيهتتا‬

‫استخدام الداة ‪.date‬‬

‫‪ :$hostname‬متغير يحتوي على السم القصير للمضيف؛ استتخدام استم المضتيف فتي استم‬ ‫•‬

‫ملف الرشيف نيمدسكنك من وضع ملفا ت الرشيف اليومية من عددة خواديم في ظنفس المجلد‪.‬‬

‫‪ :$archive_file‬السم السكامل لملف الرشيف‪.‬‬ ‫•‬

‫‪ :$dest‬الوجهة التي سنيخ نزن فيها ملف الرشتتيف؛ يجتتب أن يسكتتون المجلتتد موجتتوصدا وفتتي‬ ‫•‬

‫هذه الحالة موصوصل قبل تنفيذ أمر النستتخ الحتيتتاطي؛ راجتتع قستتم »ظنظتتام ملفتتا ت الشتتبسكة‬

‫)‪ «(NFS‬لمزيتد من التفاصيل عن استخدام ‪.NFS‬‬

‫‪ :status messages‬الرسائل الختيارية التي سنتطنبع إلى الطرفية باستخدام المر ‪.echo‬‬ ‫•‬

‫▲‬ ‫‪| 503‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫‪ :tar czf $dest/$archive_file $backup_files‬أمر ‪ tar‬النمستخندم لظنشاء ملف الرشيف‪.‬‬

‫الخيار ‪ :c‬إظنشاء أرشيف‪.‬‬ ‫•‬

‫الخيار ‪ :z‬تمرير الملف الناتج عبر الداة ‪ gzip‬لضغط الرشيف‪.‬‬ ‫•‬

‫الخيار ‪ :f‬الخراج إلى ملف أرشيف؛ عتدا ذلتك‪ ،‬سنيرشستل المتر ‪ tar‬مخرجتتاته إلتى‬ ‫•‬

‫مجرى الخرج القياسي‪.‬‬

‫‪ :ls -lh $dest‬عبتتارة اختياريتتة تطبتتع قائمتتة تفصتتيلية )‪ (-l‬بتنستتيق ستتهل القتتراءة للبشتتر‬ ‫•‬

‫)‪ (-h‬لمحتويا ت مجلد الهدف‪ ،‬هذا المر مفي ةد للتحقق السريع من الحجم التخزينتتي لملتتف‬

‫الرشيف؛ هذا التحقق ليس بديصل عن اختبار ملف الرشيف ظنفسه!‬

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

‫يمسكن تضمينها في مثل هسكذا سسكربت‪ ،‬راجع قسم »مصادر« في هتتذا الفصتتل للحصتتول علتتى روابتتط‬

‫نتودفر معلوما ت تفصيلية عن كتابة سسكربتا ت ششل‪.‬‬

‫ب‪ .‬تنفيذ السكربت‬

‫التنفيذ من الطرافية‬

‫أبسط طريقة لتنفيذ سسكربت النسخ الحتياطي السابق هي ظنسخ ولصق محتويتتاته فتتي ملتتف‬

‫باسم ‪ backup.sh‬على سبيل المثال‪ ،‬ثم تنفيذ ما يلي من الطرفية‪:‬‬

‫‪sudo bash backup.sh‬‬

‫هذه طريقة رائعة لختبار أن كل شيء يعمل على ما يرام في السسكربت‪.‬‬

‫▲‬ ‫‪| 504‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫التنفيذ عبر المهام المجدولة )‪(cron‬‬

‫يمسكن استخدام الداة ‪ cron‬لتمتة تنفيذ السسكربت‪ ،‬يسمح عفريت ‪ cron‬بتنفيذ السسكربتا ت‬

‫أو الوامر في أوقا ت وتواريخ محددة مسبصقا‪.‬‬

‫نيضنبط ‪ cron‬عبر قيود في ملف ‪crontab‬؛ تنقسم ملفا ت ‪ crontab‬إلى حقول‪:‬‬

‫‪# m h dom mon dow‬‬ ‫‪command‬‬

‫الحقل ‪ :m‬الدقيقة التي سنيننفذ عندها المر؛ تتراوح القيمة بين ‪ 0‬و ‪.59‬‬ ‫•‬

‫الحقل ‪ :h‬الساعة التي سنيننفذ عندها المر؛ تتراوح القيمة بين ‪ 0‬و ‪.23‬‬ ‫•‬

‫الحقل ‪ :dom‬يوم الشهر الذي سينننفذ عنده السسكربت‪.‬‬ ‫•‬

‫الحقل ‪ :mon‬الشهر الذي سنيننفذ عنده السسكربت‪ ،‬بين ‪ 1‬و ‪.12‬‬ ‫•‬

‫الحقل ‪ :dow‬يوم السبوع الذي سنيننفذ عنده المر‪ ،‬تتراوح قيمته بين ‪ 0‬و ‪7‬؛ حيث يمسكن‬ ‫•‬

‫تحديد يوم الحد باستخدام ‪ 0‬أو ‪ ،7‬حيث يجوز استخدام كل القيمتين‪.‬‬

‫الحقل ‪ :command‬المر الذي سنيننفذ‪.‬‬ ‫•‬

‫يجب استخدام المر ‪ crontab -e‬لضتتافة أو تعتتديل المتتدخل ت فتتي ملتتف ‪crontab‬؛ أي ص‬
‫ضتتا‬

‫يجب عرض محتويا ت الملف ‪ crontab‬باستخدام المر ‪.crontab -l‬‬

‫▲‬ ‫|‬ ‫‪505‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫أد ش‬
‫خل المر التي في الطرفية لتنفيذ سسكربت ‪ backup.sh‬السابق باستخدام ‪:cron‬‬

‫‪sudo crontab -e‬‬

‫ملحظة‪ :‬استخدام ‪ sudo‬مع المر ‪ crontab -e‬سنيعددل جدول المهام للمستخدم الجذر؛ هذا ضتترور ة‬
‫ي إذا كنتتت‬
‫تنسخ مجلدا ت احتياطصيا ل يملك وصوصل إليها عدا المستخدم الجذر‪.‬‬

‫أضف القيد التي إلى ملف ‪:crontab‬‬

‫‪# m h dom mon dow command‬‬


‫‪0 0 * * * bash /usr/local/bin/backup.sh‬‬

‫يجب أن نيننفذ سسكربت ‪ backup.sh‬كل يوم في تمام الساعة‪. 12:00 AM‬‬

‫ملحظة‪ :‬يجب ظنسخ سسكربت ‪ backup.sh‬إلى مجلتد ‪ /usr/local/bin‬لسكتي يعمتل القيتد الستابق عمصل ص حيصحا؛‬
‫يمسكن أن يقبع السسكربت في أي مسكان في ظنظام الملفا ت‪ ،‬وكل ما عليك فعله هتو تعتديل المستار المتذكور ف ي القيتد‬
‫أعله بما يلئم مسكان وجوده‪.‬‬

‫ج‪ .‬الستعادة من أرشيف‬

‫بعتتد إظنشتتاء الرشتتيف‪ ،‬فمتتن المهتتم تجربتتته؛ يمسكتتن أن نيجتتنرب الرشتتيف بعتترض قائمتتة بالملفتتا ت‬

‫التي يحتويها؛ لسكن أفضل طريقة للختبار هي استعادة ملف من الرشيف‪.‬‬

‫▲‬ ‫‪| 506‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫يمسكنك تنفيذ المر التي لعرض قائمة بمحتويا ت الرشيف‪:‬‬

‫‪tar -tzvf /mnt/backup/host-Monday.tgz‬‬

‫لستعادة ملف من الرشيف إلى مجلد مختلف‪ ،‬أد ش‬


‫خل المر‪:‬‬

‫‪tar -xzvf /mnt/backup/host-Monday.tgz -C /tmp etc/hosts‬‬

‫يتتوجه الخيتتار ‪ -C‬المتتر ‪ tar‬ليستتتخرج الملفتتا ت إلتتى مجلتتد محتتدد؛ حيتتث سيستتتخرج المتتر الستتابق‬

‫الملف ‪ /etc/hosts‬إلى ‪/tmp/etc/hosts‬؛ يعيد ‪ tar‬إظنشاء هيسكلة المجلدا ت التي تحتوي الملفا ت‪.‬‬

‫لحظ أي ص‬
‫ضا أن الشرطة المائلة ‪ /‬في أول المسار قد أزيلت من المسار النمستخنرج إليه‪.‬‬

‫لستعادة كل الملفا ت من الرشيف‪ ،‬أد ش‬


‫خل المرين‪:‬‬

‫‪cd /‬‬
‫‪sudo tar -xzvf /mnt/backup/host-Monday.tgz‬‬

‫ملحظة‪ :‬سيسكتب المر السابق فوق الملفا ت في ظنظام الملفا ت‪.‬‬

‫▲‬ ‫‪| 507‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫د‪ .‬مصادر‬

‫للمزيتتتتد متتتتن المعلومتتتتا ت حتتتتول كتابتتتتة ستتتتسكربتا ت الششتتتتل‪ ،‬راجتتتتع » ‪Advanced Bash-‬‬ ‫•‬

‫‪.«Scription Guide‬‬

‫كتتتتاب » ‪ «Teach Yourself Shell Programming in 24 Hours‬متتتتوفر علتتتى‬ ‫•‬

‫الظنترظنت‪ ،‬وهو مصدر ممتاز يشرح كتابة سسكربتا ت الششل‪.‬‬

‫صفحة الويسكي »‪ «CronHowto‬تحتوي على تفاصيل عن خيارا ت ‪ cron‬المتقدمة‪.‬‬ ‫•‬

‫راجع دليل ‪ GNU tar‬للمزيد من خيارا ت ‪.tar‬‬ ‫•‬

‫صفحة ويسكيبيديا »‪ «Bachup Rotation Scheme‬تحتوي علتتى معلومتا ت عتتن أظنمتتاط‬ ‫•‬

‫أخرى للنسخ الحتياطي‪.‬‬

‫ ت ستتطريةة أختترى‬
‫يستتتخدم ستتسكربت الششتتل الدانة ‪ tar‬لظنشتتاء الرشتتيف‪ ،‬لسكتتن هنالتتك أدوا ة‬ ‫•‬

‫يمسكن استعمالها‪ ،‬على سبيل المثال‪:‬‬

‫‪ :cpio‬نيستخندم لنسخ الملفا ت إلى ومن الرشيفا ت‪.‬‬ ‫•‬

‫‪ :dd‬جزء من حزمة ‪ ،coreutils‬الذي هو أداة منخفضة المستوى تستطيع ظنسخ البياظنا ت‬ ‫•‬

‫من صيغة لخرى‪.‬‬

‫‪ :rsnapshot‬أداة لختتتذ ‪ snapshot‬لنظتتتام الملفتتتا ت نتستتتتخندم لظنشتتتاء ظنستتتخ متتتن كامتتتل‬ ‫•‬

‫ظنظام الملفا ت‪.‬‬

‫‪ :rsync‬أداة مرظنة نتستخندم لظنشاء ظنسخ تراكمية من الملفا ت‪.‬‬ ‫•‬

‫وبالطبع‪ ،‬كتاب »سطر أوامر ليننسكس« يحتوي على شتتر ت‬


‫ح تفصتتيلي لغلبيتتة المواضتتيع التتتي‬ ‫•‬

‫ظناقشناها ها هنا‪.‬‬

‫▲‬ ‫‪| 508‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

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

‫ربما يسكفي هذا لخادوم ل تتغير البياظنا ت التي فيه كثيصرا؛ أما لو كان يملك الخادوم كميتتصة كتتبيرصة متتن‬

‫البياظنا ت‪ ،‬فيجب استخدام مخطط معقد للدورا ت‪.‬‬

‫ا‪ .‬دورة أرشيفات ‪NFS‬‬

‫سنع ددل في هذا القسم السسكربت السابق لتطبيق مخطط الجد‪-‬الب‪-‬البن )شهرصيا‪-‬أسبوعصيا‪-‬يومصيا(‪:‬‬

‫سنتننشأ ظنسخ احتياطية يومية من الحد إلى الجمعة‪.‬‬ ‫•‬

‫ستت نتأخذ ظنستتخة احتياطيتتة أستتبوعية فتتي يتتوم الستتبت ممتتا يمنحتتك أربتتع ظنستتخ احتياطيتتة‬ ‫•‬

‫أسبوعية في الشهر‪.‬‬

‫س نتأخذ ظنسخة احتياطية شهرية في أول كل شهر وتسكون التتدورة شتتهرين بنتتاصء إذا متتا كتتان‬ ‫•‬

‫رقم الشهر فردصيا أو زوجصيا‪.‬‬

‫▲‬ ‫‪| 509‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫النسخ الحتياطي‬

:‫هذا هو السسكربت‬

#!/bin/bash
####################################
#
# Backup to NFS mount script with
# grandfather-father-son rotation.
#
####################################

# What to backup.
backup_files="/home /var/spool/mail /etc /root /boot /opt"

# Where to backup to.


dest="/mnt/backup"

# Setup variables for the archive filename.


day=$(date +%A)
hostname=$(hostname -s)

# Find which week of the month 1-4 it is.


day_num=$(date +%d)
if (( $day_num <= 7 )); then
week_file="$hostname-week1.tgz"
elif (( $day_num > 7 && $day_num <= 14 )); then
week_file="$hostname-week2.tgz"
elif (( $day_num > 14 && $day_num <= 21 )); then
week_file="$hostname-week3.tgz"
elif (( $day_num > 21 && $day_num < 32 )); then
week_file="$hostname-week4.tgz"
fi

# Find if the Month is odd or even.


month_num=$(date +%m)
month=$(expr $month_num % 2)
if [ $month -eq 0 ]; then
month_file="$hostname-month2.tgz"
else
month_file="$hostname-month1.tgz"
fi

▲ | 510
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫‪# Create archive filename.‬‬


‫‪if [ $day_num == 1 ]; then‬‬
‫‪archive_file=$month_file‬‬
‫‪elif [ $day != "Saturday" ]; then‬‬
‫"‪archive_file="$hostname-$day.tgz‬‬
‫‪else‬‬
‫‪archive_file=$week_file‬‬
‫‪fi‬‬

‫‪# Print start status message.‬‬


‫"‪echo "Backing up $backup_files to $dest/$archive_file‬‬
‫‪date‬‬
‫‪echo‬‬

‫‪# Backup the files using tar.‬‬


‫‪tar czf $dest/$archive_file $backup_files‬‬

‫‪# Print end status message.‬‬


‫‪echo‬‬
‫"‪echo "Backup finished‬‬
‫‪date‬‬

‫‪# Long listing of files in $dest to check file sizes.‬‬


‫‪ls -lh $dest/‬‬

‫يمسكن تنفيذ هذا السسكربت بنفس آلية التنفيذ في القسم السابق »تنفيذ السسكربت«‪.‬‬

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

‫كارثة؛ في مثال سسكربت الششل؛ وسيط التخزين هو خادوم آخر يوفر مشاركة ‪NFS‬؛ فتتي مثتتل هتتذه‬

‫الحالتتة‪ ،‬لتتن يسكتتون خيتتاصرا عملصيتتا ظنقتتل ختتادوم ‪ NFS‬إلتتى موقتتع آختتر؛ لسكتتن بنتتاصء علتتى ستترعة التصتتال‬

‫يمسكنك ظنسخ ملف الرشيف عبر خط ‪ WAN‬إلى خادوم في مسكان آخر‪.‬‬

‫▲‬ ‫|‬ ‫‪511‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫خيار آخر هو ظنسخ ملف الرشيف على قترص ص لب ختارجي يمسكتن أن يؤختذ بعتد ذلتك ختارج‬

‫الموقتتتع؛ ولمتتتا كتتتاظنت أستتتعار القتتتراص الصتتتلبة الخارجيتتتة تستتتتمر بالظنخفتتتاض‪ ،‬فربمتتتا يسكتتتون ملئصمتتتا‬

‫استخدام قرصين صلبين لسكتل مستتوى متن مستتويا ت الرشتفة؛ هتذا سيستمح بوج ود قترص صتلب‬

‫خارجي موصول إلى خادوم النسخ الحتياطي‪ ،‬وآخر في مسكاتن بعيد‪.‬‬

‫ب‪ .‬محركات الشرطة الممغنطة‬

‫يمسكتتن استتتخدام شتتريط ممغنتتط )‪ (tape‬بتتدصل متتن مشتتاركة ‪ ،NFS‬نيستتدهل استتتخدام الشتترطة‬

‫الممغنطة دورا ت الرشيفا ت؛ ويجعل أخذ وسائط التخزين خارج الموقع أمصرا هيصنا‪.‬‬

‫القستتم الختتاص باستتم الملتتف فتتي الستتسكربت لتتن يسكتتون ضتترورصيا عنتتد استتتخدام الشتترطة‪ ،‬لن‬

‫البياظنا ت نترنسل مباشر صة إلى الشريط؛ هنالك حاجة لبعض الوامتر للتعتديل علتى الشترطة‪ ،‬يتتم ذلتك‬

‫باستخدام الداة ‪ ،mt‬التي نتستخندم للتحسكم بالشرطة الممغنطة وهي جزء من حزمة ‪.cpio‬‬

‫هذا هو سسكربت الششل المعندل لستخدام شريط ممغنط‪:‬‬

‫‪#!/bin/bash‬‬
‫‪####################################‬‬
‫‪#‬‬
‫‪# Backup to tape drive script.‬‬
‫‪#‬‬
‫‪####################################‬‬

‫‪# What to backup.‬‬


‫"‪backup_files="/home /var/spool/mail /etc /root /boot /opt‬‬

‫‪# Where to backup to.‬‬


‫"‪dest="/dev/st0‬‬

‫▲‬ ‫‪| 512‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫النسخ الحتياطي‬

# Print start status message.


echo "Backing up $backup_files to $dest"
date
echo

# Make sure the tape is rewound.


mt -f $dest rewind

# Backup the files using tar.


tar czf $dest $backup_files

# Rewind and eject the tape.


mt -f $dest rewoffl

# Print end status message.


echo
echo "Backup finished"
date

‫؛ استخدم مسار الجهاز الملئم لنظامك في‬/dev/st0 ‫ ممغنط هو‬SCSI ‫ اسم الجهاز الفتراضي لشريط‬:‫ملحظة‬
.‫السسكربت السابق‬

‫الستعادة من شريط ممغنط هتتي ظنفتس عمليتة الستتتعادة متتن ملتف؛ ببستتاطة أعتد نلتدف الشترط‬

‫ إلتى‬/etc/hosts ‫ لستتعادة ملتف‬،‫واستتخدم مستتار الجهتاز بتدصل متن مستتار ملتف؛ علتى س بيل المثتال‬

:/tmp/etc/hosts

mt -f /dev/st0 rewind
tar -xzf /dev/st0 -C /tmp etc/hosts

▲ | 513
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫‪ .3‬برنامج ‪Bacula‬‬
‫إن ‪ Bacula‬هتتتو برظنامتتتج للنستتتخ الحتيتتتاطي يستتتمح لتتتك بالنستتتخ والستتتتعادة والتحقتتتق متتتن‬

‫البياظنا ت عبر الشبسكة؛ هنالك عملء ‪ Bacula‬لليننسكس وويندوز وماك ‪OS X‬؛ مما يجعلته حيل متعتدد‬

‫المنصا ت للنسخ الحتياطي‪.‬‬

‫ا‪ .‬لمحة عن ‪Bacula‬‬

‫يتألف ‪ Bacula‬من عددة مسكوظنا ت وخدما ت نتستخندم لدارة أدية ملفا ت لنتننسخ وأماكن النسخ‪:‬‬

‫‪ :Bacula Director‬خدمتتتة تتحسكتتتم بجميتتتع عمليتتتا ت النستتتخ الحتيتتتاطي والستتتتعادة‬ ‫•‬

‫والتحقق والرشفة‪.‬‬

‫‪ :Bacula Console‬برظنامج يسمح بالتواصل مع ‪Director‬؛ هنالك ثلثة إصتتدارا ت متتن‬ ‫•‬

‫‪:Console‬‬

‫ظنسخة ظنصية تعتمد على سطر الوامر‪.‬‬ ‫•‬

‫واجهة رسومية متناغمة مع غنوم ونتستخدم ‪.GTK+‬‬ ‫•‬

‫واجهة رسومية تعتمد على ‪.wxWidgets‬‬ ‫•‬

‫‪ :Bacula File‬ونيعتتنرف أي ص‬
‫ضتتا بعميتتل ‪Bacula‬؛ نيثنبتتت هتتذا التطتتبيق علتتى الجهتتزة التتتي‬ ‫•‬

‫سنتننسخ احتياطصيا‪ ،‬وهو مسؤول عن البياظنا ت التي نتطنلب من ‪.Director‬‬

‫‪ :Bacula Storage‬التطتتبيق التتذي يجتتري عمليتتة تخزيتتن واستتتعادة البياظنتتا ت متتن وإلتتى‬ ‫•‬

‫الوسائط التخزينية‪.‬‬

‫▲‬ ‫‪| 514‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫‪ :Bacula Catalog‬مسؤول عن صياظنة فهارس الملفا ت وقواعد بياظنتا ت الحج وم لجميتع‬ ‫•‬

‫الملفتتا ت التتتي نظنشستنخت احتياطصيتتا‪ ،‬ممتتا نيم دسكتتن تحديتتد المسكتتان والستتتعادة الستتريعة للملفتتا ت‬

‫المؤرشتتتتفة؛ يتتتتدعم ‪ Catalog‬ثلثتتتتة محركتتتتا ت قواعتتتتد بياظنتتتتا ت مختلفتتتتة هتتتتي ‪MySQL‬‬

‫و ‪ PostgreSQL‬و ‪.SQLite‬‬

‫‪ :Bacula Monitor‬يستتتمح بمراقبتتتة عمتتتل ‪ ،Director‬وعفتتتاريت الملفتتتا ت والتخزيتتتن؛‬ ‫•‬

‫يتوفر ‪ Monitor‬حالصيا كتطبيق ‪ GTK+‬فقط‪.‬‬

‫يمسكن أن نتشنغل هذه الخدما ت والتطبيقتتا ت فتتي عتددة ختواديم وعملء‪ ،‬أو يمسكتتن تثبيتهتتا علتى‬

‫جهاز واحد إذا كاظنت ستأخذ ظنسخصة احتياطيصة لقرص واحد فقط‪.‬‬

‫▲‬ ‫|‬ ‫‪515‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫ب‪ .‬التثبيت‬

‫ملحظظظة‪ :‬إذا كنتتت تستتتخدم ‪ MySQL‬أو ‪ PostgreSQL‬كقاعتتدة بياظنتتا ت‪ ،‬فيجتتب أن تملتتك أوصل تلتتك الختتدما ت؛‬
‫إذ لن يثبتها ‪.Bacula‬‬

‫هنالك عددة حزم تحتوي على مختلف مسكوظنا ت ‪ ،Bacula‬أد ش‬


‫خل المر التي لتثبيت ‪:Bacula‬‬

‫‪sudo apt-get install bacula‬‬

‫نيستتتخدم التثتتبيت الفتراضتتي لحزمتتة ‪ bacula‬قاعتتدة بياظنتتا ت ‪ MySQL‬لتطتتبيق ‪Catalog‬؛‬

‫إذا أرد ت استتتتتتتخدام ‪ SQLite‬أو ‪ PostgreSQL‬لتطتتتتتتبيق ‪ ،Catalog‬فثدبتتتتتتت الحزمتتتتتتة ‪bacula-‬‬

‫‪ director-sqlite3‬أو ‪ bacula-director-pgsql‬على التوالي وبالترتيب‪.‬‬

‫س نتستتتأل أثنتتتاء التثتتتبيت عتتتن تتتتوفير تصتتتاريح لمتتتدير قاعتتتدة البياظنتتتا ت ومالتتتك قاعتتتدة بياظنتتتا ت‬

‫‪ bacula‬؛ سيحتاج مدير قاعدة البياظنا ت إلى امتلك الذوظنا ت الملئمة لظنشاء قاعدة بياظنا ت؛ راجتتع‬

‫»الفصل الثاظني عشر‪ :‬قواعد البياظنا ت« لمزيتد من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 516‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫ج‪ .‬الضبط‬

‫ملفتا ت ضتبط ‪ Bacula‬منستقة بنتاصء علتى »متوارد« تشتتمل علتى »تعليمتا ت« محاطتة بقوستين‬

‫معقوفين »}{«؛ ولسكل مسكون من مسكوظنا ت ‪ Bacula‬ملف منفصل في مجلد ‪./etc/bacula‬‬

‫يجتتب أن نتصتتدرح مختلتتف مسكوظنتتا ت ‪ Bacula‬عتتن ظنفستتها لبعضتتها بع ص‬


‫ضتتا؛ وهتتذا يتتتم باستتتخدام‬

‫التعليمة ‪password‬؛ على سبيل المثال‪ ،‬كلمة مترور متورد ‪ Storage‬فتي ملتف ‪/etc/bacula/ba‬‬

‫‪ cula-dir.conf‬يجب أن نتطاشبق كلمة مرور ‪ Director‬في ‪./etc/bacula/bacula-sd.conf‬‬

‫افتراضتتصيا‪ ،‬تسكتتون هنالتتك مهمتتة ظنستتخ احتيتتاطي استتمها ‪ Client1‬لرشتتفة ‪Bacula Catalog‬؛‬

‫إذا كنت تخطط لستخدام الختادوم للنستتخ الحتيتتاطي لكتثر متتن عميتتل‪ ،‬فعليتك تعتديل استتم هتذه‬

‫المهمة إلى شيء أكثر وصصفا؛ لتغيير السم‪ ،‬عددل الملف ‪:/etc/bacula/bacula-dir.conf‬‬

‫‪#‬‬
‫‪# Define the main nightly save backup job‬‬
‫‪#‬‬ ‫‪By default, this job will back up to disk in‬‬
‫{ ‪Job‬‬
‫"‪Name = "BackupServer‬‬
‫"‪JobDefs = "DefaultJob‬‬
‫"‪Write Bootstrap = "/var/lib/bacula/Client1.bsr‬‬
‫}‬

‫ملحظظظة‪ :‬يغديتتر المثتتال الستتابق استتم المهمتتة إلتتى ‪ BackupServer‬ممتتا يطتتابق استتم المضتتيف للختتادوم؛ استتتبدل‬
‫السكلمة ‪ BackupServer‬باسم المضيف الملئم عندك‪ ،‬أو اسم أكثر وصصفا‪.‬‬

‫▲‬ ‫‪| 517‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫يمسكن استخدام ‪ Console‬لظنشاء طلبية لبرمجية ‪ Director‬عن المهام؛ لسكتتن لسكتتي تستتتخدم‬

‫‪ Console‬بمستتتخدم غيتتر جتتذر‪ ،‬فيجتتب أن تضتتيف المستتتخدم لمجموعتتة ‪bacula‬؛ وذلتتك بإدختتال‬

‫المر التي في الطرفية‪:‬‬

‫‪sudo adduser $username bacula‬‬

‫ملحظة‪ :‬استبدل ‪ $username‬باسم المستخدم الفعلي؛ وإذا أضفت المستخدم الحالي إلى المجموعة‪ ،‬فعليتتك‬
‫تسجيل الخروج ثم إعادة تسجيل الدخول مرصة أخرى لتأخذ الذوظنا ت الجديدة مفعولها‪.‬‬

‫د‪ .‬نسخة احتياطية محلية‬

‫يشتترح هتتذا القستتم كيتتف تأختتذ ظنستتخة احتياطيتتة لمجلتتدا ت محتتددة علتتى مضتتيف واحتتد إلتتى‬

‫شريط ممغنط محلي‪.‬‬

‫أوصل‪ ،‬يجب ضبط جهاز ‪Storage‬؛ وذلك بتعديل ‪ /etc/bacula/bacula-sd.conf‬وإضافة‪:‬‬

‫{ ‪Device‬‬
‫"‪Name = "Tape Drive‬‬
‫‪Device Type = tape‬‬
‫‪Media Type = DDS-4‬‬
‫‪Archive Device = /dev/st0‬‬
‫;‪Hardware end of medium = No‬‬
‫;‪AutomaticMount = yes‬‬ ‫‪# when device opened, read‬‬
‫‪it‬‬
‫;‪AlwaysOpen = Yes‬‬
‫;‪RemovableMedia = yes‬‬
‫;‪RandomAccess = no‬‬
‫"'‪Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert‬‬
‫}‬

‫▲‬ ‫‪| 518‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫هتتتتذا المثتتتتال يستتتتتخدم شتتتتريصطا ممغنصطتتتتا متتتتن ظنتتتتوع ‪DDS-4‬؛ عتتتتددل قيمتتتتة ‪Media Type‬‬

‫و ‪ Archive Device‬لنتطاشبق عتادك‪.‬‬

‫يمسكنك أي ص‬
‫ضا إزالة التعليق عن أحد المثلة في الملف‪.‬‬

‫بعد تعديل ‪ ،/etc/bacula/bacula-ds.conf‬فيجب إعادة تشغيل عفريت ‪:Storage‬‬

‫‪sudo service bacula-sd restart‬‬

‫أضتتف الن متتورد ‪ Storage‬إلتتى ملتتف ‪ /etc/bacula/bacula-dir.conf‬لستتتخدام الجهتتاز‬

‫الجديد‪:‬‬

‫‪# Definition of "Tape Drive" storage device‬‬


‫{ ‪Storage‬‬
‫‪Name = TapeDrive‬‬
‫‪# Do not use "localhost" here‬‬
‫‪Address = backupserver‬‬ ‫‪# N.B. Use a fully‬‬
‫‪qualified name here‬‬
‫‪SDPort = 9103‬‬
‫"‪Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc‬‬
‫"‪Device = "Tape Drive‬‬
‫‪Media Type = tape‬‬
‫}‬

‫يجب أن تسكون قيمة التعليمة ‪ Address‬هي السم السكامتتل للنطتتاق )‪ (FQDN‬للختتادوم؛ عتتددل‬

‫‪ backupserver‬إلى اسم المضيف الحقيقي‪.‬‬

‫ضتتا أن التعليمتتة ‪ Password‬نتطتتاشبق قيمتتة السلستتلة النصتتية ‪ password‬فتتي ملتتف‬


‫تأكتتد أي ص‬

‫‪./etc/bacula/bacula-sd.conf‬‬

‫▲‬ ‫‪| 519‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫أظنششئ ‪ FileSet‬جديد‪ ،‬الذي سنيحددد المجلدا ت التي سنتأخذ ظنسخة احتياطية لها‪ ،‬وذلك بإضافة‪:‬‬

‫‪# LocalhostBacup FileSet.‬‬


‫{ ‪FileSet‬‬
‫"‪Name = "LocalhostFiles‬‬
‫{ ‪Include‬‬
‫{ ‪Options‬‬
‫‪signature = MD5‬‬
‫‪compression=GZIP‬‬
‫}‬
‫‪File = /etc‬‬
‫‪File = /home‬‬
‫}‬
‫}‬

‫سنينستتخ المجلتتدان ‪ /etc‬و ‪ /home‬احتياطصيتتا‪ ،‬تعليمتتا ت ‪ Options‬تضتتبط ‪ FileSet‬لظنشتتاء‬

‫بصمة ‪ MD5‬لسكل ملف نيننسخ احتياطصيا؛ ولضغط الملفا ت باستخدام ‪.gzip‬‬

‫الن‪ ،‬أظنششئ ‪) Schedule‬للجدولة( لمهمة النسخ‪:‬‬

‫‪# LocalhostBackup Schedule -- Daily.‬‬


‫{ ‪Schedule‬‬
‫"‪Name = "LocalhostDaily‬‬
‫‪Run = Full daily at 00:01‬‬
‫}‬

‫ستعمل مهمة النسخ الحتياطي كل يوم في تمام الساعة ‪ 00:01‬أو ‪12:01 AM‬؛ تتوفر العديد‬

‫من خيارا ت الجدولة الضافية‪.‬‬

‫▲‬ ‫‪| 520‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫النسخ الحتياطي‬

‫في النهاية‪ ،‬أظن ش‬


‫شئ ‪:Job‬‬

‫‪# Localhost backup.‬‬


‫{ ‪Job‬‬
‫"‪Name = "LocalhostBackup‬‬
‫"‪JobDefs = "DefaultJob‬‬
‫‪Enabled = yes‬‬
‫‪Level = Full‬‬
‫"‪FileSet = "LocalhostFiles‬‬
‫"‪Schedule = "LocalhostDaily‬‬
‫‪Storage = TapeDrive‬‬
‫"‪Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr‬‬
‫}‬

‫مما سينسخ ظنسخصة كاملصة كل يوم إلى الشريط الممغنط‪.‬‬

‫كل شريط ممغنتتط مستتخدم يجتب أن تسكتون ل ه لفتتة )‪ ،(Label‬إذا لتم يسكتن للشتريط الحتالي‬

‫لفتتتةة‪ ،‬فسيرستتل ‪ Bacula‬بريتتصدا إلسكتروظن صيتتا لجعلتتك تعلتتم بتتذلك؛ لضتتبط لفتتتة لشتتريط باستتتخدام‬

‫‪ ،Console‬فعليك إدخال المر التي‪:‬‬

‫‪bconsole‬‬

‫وفي برظنامج ‪ ،Bacula Console‬أد ش‬


‫خل‪:‬‬

‫‪label‬‬

‫▲‬ ‫‪| 521‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫النسخ الحتياطي‬

:Storage ‫ثم سنتسأل عن مورد‬

Automatically selected Catalog: MyCatalog


Using Catalog "MyCatalog"
The defined Storage resources are:
1: File
2: TapeDrive
Select Storage resource (1-2):2

‫أد ش‬
:‫خل اسم الحجم الجديد‬

Enter new Volume name: Sunday


Defined Pools:
1: Default
2: Scratch

.‫ باستم ملئم‬Sunday ‫استبدل‬

:Pool ‫الن اختر‬

Select the Pool (1-2): 1


Connecting to Storage daemon TapeDrive at backupserver:9103 ...
Sending label command for Volume "Sunday" Slot 0 ...

.‫ لنسخ جهازك المحلي احتياطصيا إلى شريط ممغنط‬Bacula ‫تهاظنينا! لقد ضبطت‬

‫ مصادر‬.‫ه‬

.«Bacula User's Manual» ‫ راجع‬،Bacula ‫لمزيد من المعلوما ت حول خيارا ت ضبط‬ •

.Bacula ‫ الرئيسية على آخر أخبار تطوير‬Bacula ‫تحتوي صفحة‬ •

‫أي ص‬
.«Bacula» ‫ راجع صفحة ويسكي أوبنتو‬،‫ضا‬ •

▲ | 522
‫النظمة الوهمية‬
‫‪20‬‬

‫▲‬ ‫‪| 523‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫نيعت نمتتد علتتى الظنظمتتة الوهميتتة فتتي مختلتتف البيئتتا ت والحتتال ت؛ فلتتو كنتتت مطتتدوصرا فتتتوفر لتتك‬

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

‫تخريب بيئة العمل الرئيسية عندك‪ .‬وإذا كنت مديصرا للظنظمة‪ ،‬فتستطيع استخدام الظنظمة الوهمية‬

‫لتعزل خدماتك عزصل سهصل وتنقلهم بناصء على الحاجة‪.‬‬

‫تقنية الظنظمة الوهمية الفتراضية المدعومة في أوبنتو هي ‪ ،KVM‬تتطلتتب ‪ KVM‬ملحقتتا ت‬

‫لتتدعم الظنظمتتة الوهميتتة فتتي عتتتاد ‪ Intel‬و ‪AMD‬؛ وتقنيتتة ‪ Xen‬مدعومتتة أي ص‬


‫ضتتا فتتي أوبنتتتو؛ حيتتث‬

‫يمسكن أن تستفيد ‪ Xen‬من تلك الملحقا ت عند توفرها‪ ،‬لسكن يمسكن تشغيلها على عتتاد دون إضتافا ت‬

‫الظنظمتتتتتة الوهميتتتتتة؛ خيتتتتتار شتتتتتائع أختتتتتر هتتتتتو ‪ Qemu‬للعتتتتتتاد بتتتتتدون ملحقتتتتتا ت الظنظمتتتتتة الوهميتتتتتة‬

‫) ‪.(virtualization extensions‬‬

‫‪ .1‬مكتبة ‪libvirt‬‬
‫نتستتتخندم المسكتبتتة ‪ libvirt‬للتعامتتل متتع مختلتتف تقنيتتا ت الظنظمتتة الوهميتتة؛ وقبتتل البتتدء متتع‬

‫‪ ،libvirt‬متتن الفضتتل التحقتتق أدن عتتتادك يتتدعم الملحقتتا ت الضتترورية لعمتتل ‪ ،KVM‬وذلتتك بإدختتال‬

‫المر التي في الطرفية‪:‬‬

‫‪kvm-ok‬‬

‫ستظهر رسالة تع شلمك إن كان معالجك يدعم أو ل يدعم الملحقا ت العتادية للظنظمة الوهمية‪.‬‬

‫ملحظة‪ :‬يسكون من الض روري فتي أغلتب الحواس يب التتي تتدعم معالجاتهتا الظنظمتة الوهميتة أن يفنعتل خيتاةر ف ي‬
‫‪ BIOS‬لتمسكينها‪.‬‬

‫▲‬ ‫‪| 524‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ا‪ .‬التواصل الشبكي الوهمي‬

‫هنالك ع ددة طرق للسماح لنظام وهمي بالوصول إلى الشبسكة الخارجية؛ خيتتار ضتتبط التواصتتل‬

‫الشبسكي الوهمي الفتراضي هو »‪ ،«usermode‬الذي يستخدم بروتوكول ‪ SLIRP‬ويمدرر التراستتل‬

‫الشبسكي عبر ‪ NAT‬عبر بطاقة المضيف إلى الشبسكة الخارجية‪.‬‬

‫لتمسكين وصتول المضتيفين الختتارجيين إلتتى الختتدما ت مباشتترصة علتى الظنظمتتة الوهميتة‪ ،‬فيجتب‬

‫استتتتتخدام ضتتتتبط »‪«bridge‬؛ هتتتتذا يستتتتمح للبطاقتتتتا ت الشتتتتبسكية الوهميتتتتة بالتصتتتتال إلتتتتى الشتتتتبسكة‬

‫الخارجية عبر البطاقة العتادية‪ ،‬مما يجعلها تبدو كأظنها حواسيب عادية لبقية الشبسكة‪.‬‬

‫ب‪ .‬التثبيت‬

‫أد ش‬
‫خل ما يلي في الطرفية لتثبيت الحزم اللزمة‪:‬‬

‫‪sudo apt-get install kvm libvirt-bin‬‬

‫يجتتتتب إضتتتتافة المستتتتتخدم التتتتذي ستتتتيدير الل ت الوهميتتتتة إلتتتتى مجموعتتتتة ‪ libvirtd‬بعتتتتد تثتتتتبيت‬

‫‪libvirt-bin‬؛ وبهذا تعطي المستخدم وصو صل إلى خيارا ت الشبسكة المتقدمة؛ وذلك بإدخال المر التي‪:‬‬

‫‪sudo adduser $USER libvirtd‬‬

‫ملحظة‪ :‬إذا كان المستخدم الذي أضفته هو المستخدم الحالي‪ ،‬فيجب عليك تسجيل الخروج ثتم التتدخول مترصة‬
‫أخرى لسكي تأخذ عضوية المجموعة الجديدة مفعولها‪.‬‬

‫▲‬ ‫‪| 525‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫أظنت الن جاهز لتثتبيت ظنظتتام تشتتغيل »ضتيف« )‪(Guest‬؛ طريقتتة تثتتبيت ظنظتتام التشتتغيل علتتى‬

‫الل ت الوهميتتة هتتي ظنفتتس طريقتتة تثتتبيته مباشتتر صة علتتى العتتتاد؛ أي أظنتتك إمتتا أن تحتتتاج إلتتى أتمتتتة‬

‫التثبيت‪ ،‬أو إلى لوحة مفاتيح وشاشة موصولين إلى اللة الفيزيائية‪.‬‬

‫في حالة الل ت الوهمية‪ ،‬تسكون الواجهة الرسومية )‪ (GUI‬مماثلة لستخدام لوحة مفاتيح وفتتأرة‬

‫فيزيائية؛ فبدصل من تثبيت واجهة رسومية‪ ،‬يمسكن استخدام التطبيق ‪ virt-viewer‬للتصال إلتى اللتتة‬

‫الوهمية باستخدام ‪ ،VNC‬راجع القسم »عارض الل ت الوهمية« لمزيتد من التفاصيل‪.‬‬

‫هنالتتك عتتددة طتترق لتمتتتة تثتتبيت أوبنتتتو‪ ،‬إذ يمسكتتن ذلتتك باستتتخدام ‪ preseed‬أو ‪kickstart‬‬

‫على سبيل المثال‪ .‬راجع دليل تثبيت أوبنتو للتفاصيل‪.‬‬

‫طريقتتة أختترى لتثتتبيت أوبنتتتو علتتى آلتتة افتراضتتية هتتي استتتخدام ‪،ubuntu-vm-builder‬‬

‫يستتمح ‪ ubuntu-vm-builder‬بإعتتداد متقتتدم للقستتام‪ ،‬وتنفيتتذ ستتسكربتا ت بعتتد التثتتبيت … إلتتخ‪.‬‬

‫للتفاصيل‪ ،‬راجع القسم »الصور السحابية وأداة ‪.«uvtools‬‬

‫يمسكن ضبط ‪ Libvirt‬مع ‪ ،Xen‬راجع صفحة مجتمع أوبنتو النمشار إلها في المصادر‪.‬‬

‫الداة ‪virt-install‬‬

‫إن ‪ virt-install‬هو جزء من حزمة ‪ ،virtinst‬أد ش‬


‫خل المر التي لتثبيتها‪:‬‬

‫‪sudo apt-get install virtinst‬‬

‫▲‬ ‫‪| 526‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫هنالك عددة خيارا ت متوفرة عند استخدام ‪:virt-install‬‬

‫\ ‪sudo virt-install -n web_devel -r 256 –disk‬‬


‫\ ‪path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=4‬‬
‫\ ‪-c ubuntu-14.04-server-i386.iso‬‬
‫\ ‪--network network=default,model=virtio‬‬
‫‪--graphics vnc,listen=0.0.0.0 --noautoconsole -v‬‬

‫الخيار ‪ :-n web_devel‬اسم اللة الوهمية‪ ،‬سيسكون ‪ web_devel‬في هذا المثال‪.‬‬ ‫•‬

‫الخيار ‪ :-r 256‬تحديد مقدار الذاكرة التي ستستخدمها اللة الوهمية مقدصرا بالميغابايت‪.‬‬ ‫•‬

‫الخيتتتتتار ‪ :--disk path=/var/lib/libvirt/images/web_devel.img,size=4‬الشتتتتتارة‬ ‫•‬

‫إلى مسار القرص الوهمي الذي يمسكن أن يسكتون ملصفتا أو قستصما أو حجصمتا وهمصيتا؛ فتي هتذا المثتال‬

‫هنالتتتتتك ملتتتتتف باستتتتتم ‪ web_devel.img‬فتتتتتي مجلتتتتتد ‪ /var/lib/libvirt/images/‬بحجتتتتتم‬

‫‪ 4‬غيغابايت‪ ،‬وسيستخدم ‪ virtio‬كناقل للقرص )‪.(disk bus‬‬

‫الخيتتتار ‪ :-c ubuntu-14.04-server-i386.iso‬الملتتتف التتتذي سنيستتتتخندم كقتتترص ‪CD-ROM‬‬ ‫•‬

‫وهمي‪ ،‬يمسكن أن يسكون الملف إما ملف ‪ ISO‬أو مسار إلى جهاز قرص ‪ CD-ROM‬في المضيف‪.‬‬

‫الخيار ‪ :--network‬يوفر معلوما ت ح ول البطاقتة الشتبسكية لللتة الوهميتة؛ نيستتخندم هنتا‬ ‫•‬

‫‪ ،default‬و ن‬
‫ضشبط موديل البطاقة إلى ‪.virtio‬‬

‫الخيتتتار ‪ :--graphics vnc,listen=0.0.0.0‬تصتتتدير طرفيتتتة الضتتتيف باستتتتخدام ‪VNC‬‬ ‫•‬

‫على جميع البطاقا ت الشبسكية للمضيف؛ إذ عموصما ل يسكون للخادوم واجهة رسومية‪ ،‬لتتذلك‬

‫فيمسكتتن لحاستتوب آختتر علتتى الشتتبسكة المحليتتة ذي واجهتتتة رستتومية أن يتصتتل عتتبر ‪VNC‬‬

‫لكمال التثبيت‪.‬‬

‫▲‬ ‫‪| 527‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫الخيار ‪ :--noautoconsole‬يؤدي إلى عدم التصال تلقائصيا إلى طرفية اللة الوهمية‪.‬‬ ‫•‬

‫الخيار ‪ :-v‬إظنشاء ضيف وهمي كامل‪.‬‬ ‫•‬

‫بعتتد تشتتغيل ‪ virt-install‬يمسكنتتك التصتتال إلتتى طرفيتتة اللتتة الوهميتتة إمتتا محلصيتتا باستتتخدام‬

‫‪ GUI‬أو باستخدام الداة ‪.virt-viewer‬‬

‫الداة ‪virt-clone‬‬

‫يمسكن استخدام ‪ virt-clone‬لنسخ آلة وهمية إلى آلة أخرى؛ على سبيل المثال‪:‬‬

‫\ ‪sudo virt-clone -o web_devel -n database_devel‬‬


‫‪-f /path/to/database_devel.img --connect=qemu:///system‬‬

‫‪ :-o‬اللة الوهمية الصلية‪.‬‬ ‫•‬

‫‪ :-n‬اسم اللة الوهمية الجديدة‪.‬‬ ‫•‬

‫‪ :-f‬المستتار إلتى الملتتف‪ ،‬أو القستم‪ ،‬أو الحجتم المنطقتي التتذي سنيستتتخندم متتن اللتتة الوهميتة‬ ‫•‬

‫الجديدة‪.‬‬

‫صل به‪.‬‬
‫‪ :--connect‬تحديد »المشرف« )‪ (hypervisor‬الذي سنيت ن‬ ‫•‬

‫يمسكن أي ص‬
‫ضا استخدام الخيار ‪ -d‬أو ‪ --debug‬لستسكشاف الخطاء مع ‪.virt-clone‬‬

‫ملحظة‪ :‬استبدل ‪ web_devel‬و ‪ database_devel‬بأسماء ملئمة للل ت الوهمية‪.‬‬

‫▲‬ ‫‪| 528‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ج‪ .‬إدارة اللة الوهمية‬

‫الداة ‪virsh‬‬

‫هنالك عددة أدوا ت متوفرة لدارة الل ت الوهمية و ‪libvirt‬؛ يمسكن أن نتستخندم الداة ‪virsh‬‬

‫من سطر الوامر؛ هذه بعض المثلة‪:‬‬

‫لعرض قائمة بالل ت الوهمية التي تعمل‪:‬‬

‫‪virsh -c qemu:///system list‬‬

‫لبدء تشغيل آلة وهمية‪:‬‬

‫‪virsh -c qemu:///system start web_devel‬‬

‫وبشسكتل مشابه‪ ،‬لتشغيل آلة وهمية عند القلع‪:‬‬

‫‪virsh -c qemu:///system autostart web_devel‬‬

‫أعد إقلع آلة وهمية باستخدام المر‪:‬‬

‫‪virsh -c qemu:///system reboot web_devel‬‬

‫يمسكتتن حفتتظ »حالتتة« )‪ (state‬اللتتة الوهميتتة إلتتى ملتتف لنتستتتعاد لحصقتتا؛ متتا يلتتي ستتوف يحفتتظ‬

‫حالة اللة الوهمية إلى ملف مسمى وفصقا لتاريخ اليوم‪:‬‬

‫‪virsh -c qemu:///system save web_devel web_devel-022708.state‬‬

‫▲‬ ‫‪| 529‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ستتوقف اللة الوهمية عن العمل بعد حفظ حالتها‪.‬‬

‫يمسكن استعادة اللة الوهمية باستخدام‪:‬‬

‫‪virsh -c qemu:///system restore web_devel-022708.state‬‬

‫ظندفذ المر ليقاف تشغيل آلة وهمية‪:‬‬

‫‪virsh -c qemu:///system shutdown web_devel‬‬

‫يمسكن وصل جهاز ‪ CD-ROM‬إلى آلة وهمية بالمر‪:‬‬

‫\ ‪virsh -c qemu:///system attach-disk web_devel /dev/cdrom‬‬


‫‪/media/cdrom‬‬

‫ملحظظظظظظة‪ :‬استتتتتبدل فتتتتي المثلتتتتتة الستتتتتابقة ‪ web_devel‬متتتتع استتتتتم اللتتتتتة الوهميتتتتتة الملئتتتتتم‪ ،‬و ‪web_devel-‬‬
‫‪ 022708.state‬باسم ملف أكثر وصصفا‪.‬‬

‫▲‬ ‫‪| 530‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫مدير اللت الوهمية‬

‫تحتوي حزمة ‪ virt-manager‬على أداة رستومية لدارة الل ت الوهميتتة المحليتتة والبعيتتدة؛‬

‫أد ش‬
‫خل المر التي لتثبيتها‪:‬‬

‫‪sudo apt-get install virt-manager‬‬

‫لما كاظنت الداة ‪ virt-manager‬تتطلتتب واجهتتة رستومية )‪ (GUI‬فمتن المستحستن أن نتثنبتت‬

‫على محطة عمل أو جهاز للختبارا ت بدصل من خادوم إظنتتتاجي؛ أد ش‬


‫ختتل المتتر التتتي للتصتتال بخدمتتة‬

‫‪ libvirt‬محلية‪:‬‬

‫‪virt-manager -c qemu:///system‬‬

‫تستطيع التصال بخدمة ‪ libvirt‬في مضيف آخر بإدخال ما يلي في الطرفية‪:‬‬

‫‪virt-manager -c qemu+ssh://virtnode1.mydomain.com/system‬‬

‫ملحظظظظظظظظظظظظظة‪ :‬يفتتتتتتتتتتتتترض المثتتتتتتتتتتتتال الستتتتتتتتتتتتابق أن إمسكاظنيتتتتتتتتتتتتة التصتتتتتتتتتتتتال عتتتتتتتتتتتتبر ‪ SSH‬بيتتتتتتتتتتتتن ظنظتتتتتتتتتتتتام الدارة‬
‫ضتتتتشبنطت مستتتتبصقا‪ ،‬وتستتتتتخدم مفاتيتتتتح ‪ SSH‬للستتتتتيثاق؛ هنالتتتتك حاجتتتتة‬
‫و ‪ virtnode1.mydomain.com‬قتتتتد ن‬

‫لمفاتيح ‪ SSH‬لن المسكتبة ‪ libvirt‬نتر شسل محث كلمة المرور إلتى عمليتة أخترى‪ .‬للتفاصتتيل عتن ضتبط ‪ ،SSH‬راجتع‬
‫»الفصل السادس‪ :‬الدارة عن بعد«‪.‬‬

‫▲‬ ‫‪| 531‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫د‪ .‬عارض اللت الوهمية‬

‫يستتمح التطتتبيق ‪ virt-viewer‬لتتك بالتصتتال إلتتى طرفيتتة اللتتة الوهميتتة لسكتتن ‪virt-viewer‬‬

‫يتطلب واجهة رسومية )‪ (GUI‬للتعامل متع اللتتة الوهميتة‪ ،‬أد ش‬


‫ختتل المتتر التتتي متتن الطرفيتة لتثتتبيت‬

‫‪:virt-viewer‬‬

‫‪sudo apt-get install virt-viewer‬‬

‫بعد تثبيت وتشغيل آلة وهمية‪ ،‬يمسكنك التصال إلى طرفيتها بالمر‪:‬‬

‫‪virt-viewer -c qemu:///system web_devel‬‬

‫وكما في ‪ ،virt-manager‬يمسكتتن اتصتتال ‪ virt-viewer‬إلتتى مضتتيف بعيتتد باستتتخدام ‪SSH‬‬

‫مع استيثاق باستخدام مفتاح‪:‬‬

‫\ ‪virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system‬‬
‫‪web_devel‬‬

‫تأكد من استبدال ‪ web_devel‬باسم اللة الوهمية الملئم‪.‬‬

‫إذا ض بطت استتخدام بطاقتة ش بسكية جسترية ) ‪ ،(bridged network interface‬فيمسكنتك‬

‫ضبط وصول ‪ SSH‬إلى اللة الوهمية؛ راجع الفصل السادس لمزيتد من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 532‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ه‪ .‬مصادر‬

‫راجع صفحة ‪ KVM‬الرئيسية للمزيد من التفاصيل‪.‬‬ ‫•‬

‫للمزيد من المعلوما ت حول ‪ ،libvirt‬اظنظر إلى صفحة ‪ libvirt‬الرئيسية‪.‬‬ ‫•‬

‫موقتتتع »‪ «Virtual Machine Manager‬فيتتته المزيتتتد متتتن المعلومتتتا ت حتتتول تطتتتوير‬ ‫•‬

‫‪.virt-manager‬‬

‫ادختتتل إلتتتى قنتتتاة ‪ #ubuntu-virt‬علتتتى ختتتادوم ‪ freenode‬لمناقشتتتة تقنيتتتا ت الظنظمتتتة‬ ‫•‬

‫الوهمية في أوبنتو‪.‬‬

‫مصدر آخر جيد هو صفحة ويسكي أوبنتو »‪.«KVM‬‬ ‫•‬

‫للمزيتتتد متتتن المعلومتتتا ت حتتول ‪ ،Xen‬بمتتتا فيهتتتا استتتخدام ‪ Xen‬متتتع ‪libvirt‬؛ رجتتتاصء راجتتع‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪.«Xen‬‬

‫▲‬ ‫‪| 533‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫‪ .2‬الصور السحابية وأداة ‪uvtool‬‬

‫ا‪ .‬مقدمة‬

‫لما كاظنت أوبنتو هي أكتثر ظنظتام تشتغيل مستتخدم فتي العتالم فتي أغلبيتة المنصتا ت الستحابية‪،‬‬

‫فأصبح متن الضتتروري تتوفير صتور ستحابية مستتقرة وآمنتتة؛ وفتتي إصتدارة ‪ ،12.04‬تحستتن استتتعمال‬

‫الصتتتور الستتتحابية ختتتارج البنيتتتة التحتيتتتة للستتتحابة؛ وأصتتتبح الن بالمسكتتتان استتتتخدام هتتتذه الصتتتور‬

‫لظنشاء آل ت وهمية دون الحاجة إلى إجراء تثبيت كامل‪.‬‬

‫ب‪ .‬إنشاء آلت وهمية باستخدام الداة ‪uvtool‬‬

‫بتتدصءا متتن ‪ ،14.04‬أصتتبح هنالتتك أداة هتتي ‪ uvtool‬لتستتهيل مهمتتة توليتتد الل ت الوهميتتة )‪(VM‬‬

‫باستتتتخدام الصتتتور الستتتحابية؛ تتتتوفر الداة ‪ uvtool‬آليتتتصة للمزامنتتتة بيتتتن الصتتتور الستتتحابية محلصيتتتا‬

‫واستخدامها لظنشاء آل ت وهمية في غضون دقائق‪.‬‬

‫حزم ‪Uvtool‬‬

‫الحزم التية واعتمادياتها مطلوبةة لستخدام ‪:uvtool‬‬

‫‪uvtool‬‬
‫‪uvtool-libvirt‬‬

‫تثبيت ‪ uvtool‬مثله كمثل غيره من التطبيقا ت باستخدام ‪:apt-get‬‬

‫‪sudo apt-get install uvtool‬‬

‫▲‬ ‫‪| 534‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫هذا سيتثبت الوامر الرئيسية للداة ‪:uvtool‬‬

‫‪uvt-simplestreams-libvirt‬‬ ‫•‬

‫‪uvt-kvm‬‬ ‫•‬

‫الحصول على صورة سحابة أوبنتو مع ‪uvt-simplestreams-libvirt‬‬

‫هذه إحدى التبسيطا ت التي جاء ت بها الداة ‪uvtool‬؛ حيث أظنها تعلم أين يمسكن العثور علتتى‬

‫الصور السحابية‪ ،‬لذلك ستحتاج إلى أم تر واحتد للحص ول علتى صتورة س حابية؛ علتى س بيل المثتال‪،‬‬

‫إذا أرد ت مزامنة كل الصور السحابية لمعمارية ‪ ،amd64‬فسيسكون المر كالتي‪:‬‬

‫‪uvt-simplestreams-libvirt sync arch=amd64‬‬

‫بعد الفترة الضرورية من الزمن لتنزيل كل الصور من الظنترظنت‪ ،‬سيسكون لديك مجموعة كاملتتة‬

‫من الصور السحابية مخزظنةة محلصيا؛ ظندفذ المر التي لرؤية الصور التي نظندزنلت‪:‬‬

‫‪uvt-simplestreams-libvirt query‬‬
‫)‪release=oneiric arch=amd64 label=release (20130509‬‬
‫)‪release=precise arch=amd64 label=release (20140227‬‬
‫)‪release=quantal arch=amd64 label=release (20140302‬‬
‫)‪release=saucy arch=amd64 label=release (20140226‬‬
‫)‪release=trusty arch=amd64 label=beta1 (20140226.1‬‬

‫وفتتتي حتتتال أرد ت مزامنتتتة صتتتورة ستتتحابية واحتتتد محتتتددة‪ ،‬فيمسكنتتتك استتتتخدام النمردشتتتحا ت‬

‫=‪ release‬و =‪ arch‬لتعريف الصورة التي يجب مزامنتها‪:‬‬

‫‪uvt-simplestreams-libvirt sync release=precise arch=amd64‬‬

‫▲‬ ‫‪| 535‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الظنظمة الوهمية‬

uvt-kvm ‫إنشاء آلة وهمية باستخدام‬

‫ فمتتن الضتتروري أن يسكتتون لتتديك‬،‫لسكي تسكون قادصرا على التصال باللتتة الوهميتتة بعتتد أن نتنششتتئها‬

‫ فيمسكنتتك إظنشتتاء واحتتد‬،‫ صتتالح متتتوفر لمستتتخدم أوبنتتتو؛ إذا لتتم يسكتتن لبيئتتتك مفتتتاح‬SSH ‫مفتتتاح‬

:‫بسهولة باستخدام المر التي‬

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
The key fingerprint is:
4d:ba:5d:57:c9:49:ef:b5:ab:71:14:56:6e:2b:ad:9b ubuntu@TrustyS
The key's randomart image is:
+--[ RSA 2048]----+
| ..|
| o.=|
| . **|
| + o+=|
| S . ...=.|
| o . .+ .|
| . . o o |
| * |
| E |
+-----------------+

‫ كتل متا عليتك فعل ه هتو‬،‫ ففتي أبستط شتسكل‬،‫ هو أمتر ه ديتن‬uvtool ‫إظنشاء آلة وهمية باستخدام‬

:‫تنفيذ المر‬

uvt-kvm create firsttest

▲ | 536
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫وهتتذا متتا سيننششتتئ آلتتصة وهميتتصة باستتم ‪ firsttest‬باستتتخدام الصتتورة الستتحابية لنستتخة التتدعم‬

‫الطويل الحالية )‪ (LTS‬المتوفرة محلصيا‪ ،‬إذا أرد ت تحديد إصتتدارة لنتستتخدم لظنشتتاء اللتة الوهميتتة؛‬

‫فستحتاج إلى استخدام مرشح =‪:release‬‬

‫‪uvt-kvm create secondtest release=trusty‬‬

‫يمسكن استخدام المر ‪ uvt-kvm wait NAME‬للظنتظار حتى اكتمال إظنشاء اللة الوهمية‪:‬‬

‫‪uvt-kvm wait secondttest --insecure‬‬


‫‪Warning: secure wait for boot-finished not yet implemented; use‬‬
‫‪--insecure.‬‬

‫التصال إلى آلة وهمية تعمل‬

‫بعد إكمال إظنشاء اللة الوهمية‪ ،‬يمسكنك التصال إليها عبر ‪:SSH‬‬

‫‪uvt-kvm ssh secondtest --insecure‬‬

‫وبالمناسبة‪ ،‬الخيتتار ‪ --insecure‬مطلتوب‪ ،‬لتذلك عليتك استتتخدام هتذه الطريقتتة للتصتال إلتتى‬

‫الل ت الوهمية إذا كنت تثق بأمان البنية التحتية لشبسكتك تمام الثقة‪.‬‬

‫▲‬ ‫‪| 537‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الظنظمة الوهمية‬

‫يمسكنك أي ص‬
IP ‫ اعتياديتتة باستتعمال عنتوان‬ssh ‫ضا التصال إلى اللة الوهمية باستخدام جلسة‬

:‫ عبر المر التي‬IP ‫لللة الوهمية؛ يمسكن أن نيطنلب عنوان‬

uvt-kvm ip secondtest
192.168.123.242
ssh -i ~/.ssh/id_rsa ubuntu@192.168.123.242
The authenticity of host '192.168.123.242 (192.168.123.242)'
can't be established.
ECDSA key fingerprint is
3a:12:08:37:79:24:2f:58:aa:62:d3:9d:c0:99:66:8a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.123.242' (ECDSA) to the
list of known hosts.
Welcome to Ubuntu Trusty Tahr (development branch) (GNU/Linux
3.13.0-12-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information disabled due to load higher than 1.0
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
Last login: Fri Mar 21 13:25:56 2014 from 192.168.123.1

‫الحصول على قائمة باللت الوهمية التي تعمل‬

:‫يمسكن الحصول على قائمة بالل ت الوهمية التي تعمل على ظنظامك باستخدام المر‬

uvt-kvm list
secondtest

‫تدمير اللة الوهمية‬

:‫ يمسكنك »تدميرها« والتخلص منها بالمر‬،‫بعد أن تنتهي من اللة الوهمية‬

uvt-kvm destroy secondtest

▲ | 538
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫المزيد من تخيارات ‪uvt-kvm‬‬

‫يمسكن أن نتستخ ندم الخيارا ت التية لتغيير بعض خصائص الذاكرة الوهمية التي نتنششئها‪:‬‬

‫الخيار ‪ :--memory‬مقدار الذاكرة )‪ (RAM‬بواحدة الميغابايت‪ ،‬القيمة الفتراضية هي ‪.512‬‬ ‫•‬

‫الخيار ‪ :--disk‬مقدار قرص النظام بواحدة الغيغابايت‪ ،‬القيمة الفتراضية هي ‪.8‬‬ ‫•‬

‫الخيار ‪ :--cup‬عدد أظنوية المعالج‪ ،‬القيمة الفتراضية هي ‪.1‬‬ ‫•‬

‫بعض المعامل ت الخرى لها تأثير على ضبط ‪:cloud-init‬‬

‫الخيتتتتار ‪ :--password password‬الستتتتماح بتستتتتجيل التتتتدخول إلتتتتى اللتتتتة الوهميتتتتة‬ ‫•‬

‫باستخدام حساب ‪ ubuntu‬وكلمة المرور المزودة مع هذا الخيار‪.‬‬

‫الخيتتار ‪ :--run-script-once script_file‬تشتتغيل الستتسكربت ‪ script_file‬بامتيتتازا ت‬ ‫•‬

‫الجذر في أول مرة نتقشلع فيها اللة الوهمية‪ ،‬لسكنه لن نيشنغل بعد ذلك قط‪.‬‬

‫الخيتتتتار ‪ :--packages package_list‬تثتتتتبيت الحتتتتزم المتتتتذكورة فتتتتي ‪package_list‬‬ ‫•‬

‫والمفصول بينها بفواصل في أول مرة نتقشلع فيها اللة الوهمية‪.‬‬

‫يتوفر شرح كامل عن كل الخيارا ت المتوفرة في صفحة دليل ‪.man uvt-kvm‬‬

‫ج‪ .‬مصادر‬

‫إذا كنتت مهتصمتا بتعلتم المزيتد أو كتتاظنت لتديك أستئلة أو اقتراحتا ت‪ ،‬فيمسكنتك مناقشتة فريتق‬ ‫•‬

‫خادوم أوبنتو على‪:‬‬

‫قناة ‪ IRC‬باسم ‪ #ubuntu-server‬على خادوم ‪.Freenode‬‬ ‫•‬

‫القائمة البريدية‪.ubuntu-server at lists.ubuntu.com :‬‬ ‫•‬

‫▲‬ ‫‪| 539‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫‪ .3‬تسحابة أوبنتو‬
‫الحوستتبة الستتحابية )‪ (Cloud Computing‬هتتي ظنمتتط حوستتبة تستتمح بحجتتز أي متتورد متتن‬

‫مجموعتتة واستتعة متتن أظنتتواع المتتوارد وقتتت الحاجتتة؛ هتتذه المتتوارد مثتتل التخزيتتن أو قتتوة المعالجتتة‬

‫أو الشبسكة أو البرمجيا ت يمسكن أن تسكون مجردة ) ‪ (abstracted‬وتو ن‬


‫صل كخدمة عبر الظنترظنت إلى‬

‫أي مسكتتان فتتي أي وقتتت‪ .‬نيتتد نفع ثمتتن تلتتك الختتدما ت علتتى أستتاس التتوقت المستتتهلك مثتتل الختتدما ت‬

‫العامتتتة كالسكهربتتتاء والميتتتاه وشتتتبسكة الهتتتاتف؛ البنيتتتة التحتيتتتة لستتتحابة أوبنتتتتو تستتتتخدم البرمجيتتتة‬

‫مفتوحة المصدر ‪ OpenStack‬لبناء حوسبة سحابية قابلة للتوسع للنسحب العامة والخاصة‪.‬‬

‫ا‪ .‬التثبيت والضبط‬

‫بسبب التواتر العالي لتطوير هذه البرمجية المعقدة‪ ،‬فإظننا نظنحيل القتارئ إلتى التوثيتق الرستمي‬

‫لجميع المور المتعلقة بتثبيت وضبط هذه البرمجية‪.‬‬

‫ب‪ .‬مصادر‬

‫مقالة »‪.«Colud Computing – service models‬‬ ‫•‬

‫‪.OpenStack Compute‬‬ ‫•‬

‫‪.OpenStack Image Service‬‬ ‫•‬

‫‪.OpenStack Object Storage Administration Guide‬‬ ‫•‬

‫مقالة » ‪.«Installing OpenStack Object Storage on Ubuntu‬‬ ‫•‬

‫موقع ‪.CloudGlossary.com‬‬ ‫•‬

‫▲‬ ‫‪| 540‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫‪ .4‬تحاويات ليمنكس ‪LXC‬‬


‫الحاويتتا ت )‪ (containers‬هتتي تقنيتتة أظنظمتتة وهميتتة خفيفتتة؛ حيتتث تجنتتح لن تسكتتون شتتبيهصة‬

‫بطريقتتة ‪ chroot‬محدستتنة بتتدصل متتن كوظنهتتا تقنيتتة أظنظمتتة وهميتتة كاملتتة مثتتل ‪ Qemu‬أو ‪VMware‬؛‬

‫لن كلهما ل يحاكي العتاد ولن الحاويا ت تشارك ظنفس ظنظام التشغيل للمضيف؛ لذلك من الفضتتل‬

‫مقارظنتتة الحاويتتا ت إلتتى »ظنطاقتتا ت ستتولرس« ) ‪ (Solaris zones‬أو »ستتجون ‪.(BSD jails) «BSD‬‬

‫إن ‪ Linux-vserver‬و ‪ OpenVZ‬همتتا ظنستتختان متتن الحاويتتا ت لنظتتام ليننسكتتس مطورتتتان بشتتسكل‬

‫منفصتتل عتتن بعضتتهما؛ فتتي الواقتتع‪ ،‬ظهتتر ت الحاويتتا ت ظنتيجتتصة للعمتتل علتتى تطتتوير وظتتائف ‪vserver‬‬

‫و ‪.OpenVZ‬‬

‫هنالتتك ظنستتختان فتتي »مجتتال المستتتخدم« )‪ (user-space‬للحاويتتا ت تستتتخدمان ظنفتتس مزايتتا‬

‫النواة؛ تستمح ‪ Libvirt‬باستتتخدام الحاويتا ت عتتبر محتترك ‪ LXC‬بالتصتتال إلتى »‪ ،«lxc:///‬قتتد يسكتون‬

‫هتتذا أمتتصرا ملئصمتتا لظنهتتا تملتتك ظنفتتس طريقتتة الستتتخدام الموجتتودة فتتي المحركتتا ت الختترى‪ .‬النستتخة‬

‫الخرى النمسماة ببساطة » ‪ «LXC‬هي غير متوافقة مع ‪libvirt‬؛ لسكنها أكثر مروظنصة بتتأدوا ت أكتتثر فتتي‬

‫مجال المستخدم؛ من الممسكن التبديل بين النسختين آظنفنت د‬


‫ي الذكر‪ ،‬لسكتن هنالتك بعتض الخصوصتيا ت‬

‫التي قد تسبب ارتباصكا‪.‬‬

‫سنشتترح فتتي هتتذا السكتتتاب حزمتتة ‪ lxc‬شتترصحا رئيستتصيا‪ ،‬حيتتث أن استتتخدام ‪ libvirt-lxc‬ليتتس‬

‫مستحسصنا لظنه يفتقر إلى حماية ‪ AppArmor‬لحاويا ت ‪libvirt-lxc‬؛ وستسكون أستماء الحاويتا ت‬

‫الموجودة في هذا الفصل هي ‪ ،CN‬أو ‪ ،C1‬أو ‪.C2‬‬

‫▲‬ ‫‪| 541‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ا‪ .‬التثبيت‬

‫يمسكن تثبيت حزمة ‪ lxc‬باستخدام المر‪:‬‬

‫‪sudo apt-get install lxc‬‬

‫ستتتتنحتاج إلتتتتى تنزيتتتتل العتماديتتتتا ت المطلوبتتتتة والمستحستتتتنة‪ ،‬وضتتتتبط جستتتتر الشتتتتبسكة لسكتتتتي‬

‫يستتتخدمه الحاويتتا ت؛ إذا أرد ت استتتخدام حاويتتا ت دون امتيتتازا ت‪ ،‬فربمتتا تحتتتاج إلتتى أن تتأكتتد أن‬

‫للمستتتخدشمين امتيتتازا ت ‪ subuids‬و ‪ ، subgids‬وتريتتد أن تستتمح للمستتتخدمين بوصتتل الحاويتتا ت‬

‫إلى جسر؛ راجع القسم »الستخدام الساسي دون امتيازا ت«‪.‬‬

‫ب‪ .‬الستخدام الساسي‬

‫يمسكتتن أن ظنستتتخدم ‪ LXC‬بطريقتتتين مختلفتتتين‪ ،‬الولتتى بامتيتتازا ت عتتبر تنفيتتذ أوامتتر ‪ lxc‬بحستتاب‬

‫المستتتخدم الجتتذر؛ أو دون امتيتتازا ت بتنفيتتذ أوامتتر ‪ lxc‬بحستتاب أي مستتتخدم عتتدا الجتتذر )فتتي الواقتتع‪،‬‬

‫يمسكتتتن تشتتتغيل حاويتتتا ت دون امتيتتتازا ت بحستتتاب الجتتتذر‪ ،‬لسكننتتتا لتتتن ظنشتتترح ذلتتتك هاهنتتتا(؛ الحاويتتتا ت دون‬

‫امتيازا ت محتدودة أكتثر‪ ،‬فمث صل لن تستتطيع إظنشتاء عقتد أجهتزة أو تصتل أظنظمتة ملفتا ت كتليتة؛ لسكنهتا أقتل‬

‫خطصرا للمضيف‪ ،‬حيث يسكون الجذر في الحاوية مربوصطا بحساب غير جذر في المضيف‪.‬‬

‫الستخدام الساسي بامتيازات‬

‫لظنشاء حاوية ذا ت امتيازا ت‪ ،‬كل ما عليك فعله هو تنفيذ المر‪:‬‬

‫‪sudo lxc-create --template download --name u1‬‬

‫▲‬ ‫‪| 542‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫أو بشسكل مختصر‪:‬‬

‫‪sudo lxc-create -t download -n u1‬‬

‫الذي سيسألك تفاعلصيا عن ظنوع جذر ظنظام الملفا ت لسكي نيننزل‪ ،‬وخصو ص‬
‫صتتا التوزيعتتة والصتتدارة‬

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

‫السئلة تفاعلصيا‪:‬‬

‫\ ‪sudo lxc-create -t download -n u1 -- --dist ubuntu‬‬


‫‪--release trusty --arch amd64‬‬

‫أو‬

‫\ ‪sudo lxc-create -t download -n u1 -- -d ubuntu -r trusty‬‬


‫‪-a amd64‬‬

‫يمسكنك الن استخدام ‪ lxc-ls‬لعرض قائمة بالحاويتتا ت‪ ،‬و ‪ lxc-info‬للحصتتول علتتى معلومتتا ت‬

‫مفصلة عن حاوية‪ ،‬و ‪ lxc-start‬لبدء و ‪ lxc-stop‬ليقاف الحاوية؛ بينمتتا يستتمح لتك المتتران ‪lxc-‬‬

‫‪ attach‬و ‪ lxc-console‬بالدخول إلى حاويتة إذا لتم يسكتن التصتال إليهتا عتبر ‪ SSH‬متاصحتتا؛ والمتر‬

‫‪ lxc-destory‬يحتتذف الحاويتتة‪ ،‬بمتتا فتتي ذلتتك جتتذر ظنظتتام الملفتتا ت؛ راجتتع صتتفحا ت التتدليل للوامتتر‬

‫السابقة للمزيد من المعلوما ت؛ أمثلة‪:‬‬

‫‪sudo‬‬ ‫‪lxc-ls --fancy‬‬


‫‪sudo‬‬ ‫‪lxc-start --name u1 --daemon‬‬
‫‪sudo‬‬ ‫‪lxc-info --name u1‬‬
‫‪sudo‬‬ ‫‪lxc-stop --name u1‬‬
‫‪sudo‬‬ ‫‪lxc-destroy --name u1‬‬

‫▲‬ ‫‪| 543‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫مجالت أسماء المستخدم‬

‫تستتمح الحاويتتا ت دون امتيتتازا ت للمستتتخدمين بإظنشتتاء وإدارة الحاويتتا ت دون الحصتول علتتى‬

‫امتيتتتتازا ت الجتتتتذر؛ أستتتتاس هتتتتذه الميتتتتزة هتتتتو متتتتا يستتتتمى »مجتتتتال ت أستتتتماء المستتتتتخدم« ) ‪user‬‬

‫‪ ،(namespaces‬إن مجتتال ت أستتماء المستتتخدم هيسكليتتةة‪ ،‬حيتتث تسكتتون المهتتام ذا ت امتيتتازا ت فتتي‬

‫مجال السماء الب قادرة على ربط معدرفاتها إلى مجال ت أسماء البناء؛ افتراضصيا‪ ،‬كل مهمتتة علتتى‬

‫المضتتيف تعمتتل فتتي مجتتال أستتماء مبتتدئي ) ‪ ،(initial user namespace‬حيتتث المجتتال السكامتتل‬

‫لمعرفاتهتتا مربتتوةط متتع المجتتال السكامتتل؛ يمسكتتن مشتتاهدة ذلتتك بتتالنظر إلتتى ‪/proc/self/uid_map‬‬

‫و ‪/proc/self/gid_map‬؛ اللذان سيظهران القيمتة » ‪ «0 0 4294967295‬عنتدما نيقترأ متن مجتال‬

‫الستتماء المبتتدئي؛ وفتتي أوبنتتتو ‪ ،14.04‬المستتتخدمون الجتتدد التتذين نينشتتؤون يسكتتون لهتتم افتراضتتصيا‬

‫مجتتال متتن معرفتتا ت المستتتخدم؛ هتتذه القائمتتة متتن المعرفتتا ت النمستتنندة يمسكتتن أن نتشتتاهد فتتي الملفيتتن‬

‫‪ /etc/subuid‬و ‪ /etc/subgid‬؛ اظنظتتر إلتتى صتتفحا ت التتدليل الموافقتتة لهتتم للمزيتتد متتن المعلومتتا ت؛‬

‫ويبدأ ‪ subuid‬و ‪ subgid‬عرفصيا من المعرف‪ 100000‬لتجنب التضارب مع مستخدمي النظام‪.‬‬

‫ن‬
‫إذا أظن ششتتئ المستتتخدم فتتي إصتتدارة قديمتتة‪ ،‬فيمسكنتتك منحتته مجتتاصل متتن المعرفتتا ت باستتتخدام‬

‫‪ ،usermod‬كما يلي‪:‬‬

‫‪sudo usermod -v 100000-200000 -w 100000-200000 user1‬‬

‫برظنامجتتتتا ‪ newuidmap‬و ‪ newgidmap‬همتتتتا برظنامجتتتتا ‪ setuid-root‬فتتتتي حزمتتتتة ‪،uidmap‬‬

‫اللتتتذان نيستتتتخدمان داخلصيتتتا بواستتتطة ‪ lxc‬لربتتتط ‪ subuids‬و ‪ subgids‬متتتن المضتتتيف إلتتتى حاويتتتة دون‬

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

‫▲‬ ‫‪| 544‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫الستخدام الساسي دون امتيازات‬

‫لظنشاء حاويا ت دون امتيازا ت‪ ،‬فإن هنالك خطوا ت أولية ضتترورية؛ حيتث تحتتاج إلتتى إظنشتتاء‬

‫ملتتف ضتتبط حاويتتة افتراضتتي‪ ،‬نمحتتدد صدا ربتتط المعرفتتا ت التتذي تريتتده وضتتبط الشتتبسكة‪ ،‬بالضتتافة إلتتى‬

‫ضتتبط المضتتيف للستتماح لمستتتخدم دون امتيتتازا ت بالرتبتتاط إلتتى شتتبسكة المضتتيف؛ يفتتترض المثتتال‬

‫التي أظنك ربطت معرفا ت المستخدم والمجموعة ذا ت المجال‪. 100000 - 165536‬‬

‫‪mkdir -p ~/.config/lxc‬‬
‫\ > "‪echo "lxc.id_map = u 0 100000 65536‬‬
‫‪~/.config/lxc/default.conf‬‬
‫\ >> "‪echo "lxc.id_map = g 0 100000 65536‬‬
‫‪~/.config/lxc/default.conf‬‬
‫‪echo "lxc.network.type = veth" >> ~/.config/lxc/default.conf‬‬
‫‪echo "lxc.network.link = lxcbr0" >> ~/.config/lxc/default.conf‬‬
‫‪echo "$USER veth lxcbr0 2" | sudo tee -a /etc/lxc/lxc-usernet‬‬

‫بعد ذلك‪ ،‬يمسكنك إظنشاء حاويا ت دون امتيازا ت بنفس طريقة إظنشاء حاويا ت بامتيتتازا ت‪ ،‬لسكتتن‬

‫ببساطة دون ‪:sudo‬‬

‫‪lxc-create -t download -n u1 -- -d ubuntu -r trusty -a amd64‬‬


‫‪lxc-start -n u1 -d‬‬
‫‪lxc-attach -n u1‬‬
‫‪lxc-stop -n u1‬‬
‫‪lxc-destroy -n u1‬‬

‫▲‬ ‫‪| 545‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫التشعب‬

‫لسكتي ظنشتدغل حاويتا ت داختل حاويتا ت ‪-‬المتر التذي نيشتار إليته بتشتدعب الحاويتا ت‪ -‬فتإن ستطرين‬

‫يجب أن يوجدا في ملف ضبط الحاوية الب‪:‬‬

‫‪lxc.mount.auto = cgroup‬‬
‫‪lxc.aa_profile = lxc-container-default-with-nesting‬‬

‫سيسبب السطر الول بدمج مقبس مدير مجموعا ت التحسكم في الحاويتتة‪ ،‬لتذلك ستيسكون ‪lxc‬‬

‫داختتل الحاويتتة قتتادصرا علتتى إدارة مجموعتتا ت التحسكتتم للحاويتتا ت المتشتتعبة الخاصتتة بتته؛ أمتتا الستتطر‬

‫الثتتتاظني فيستتتبب تشتتتغيل الحاويتتتة بوضتتتع أكتتتثر ستتتماحيصة بالنستتتبة إلتتتى ‪ ،AppArmor‬ممتتتا يستتتمح‬

‫للحاوية بتإجراء عمليتا ت الوصتل اللزمتة لبتدء تشتغيل الحاويتا ت؛ لحتتظ أن سياستة ‪AppArmor‬‬

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

‫»‪ «AppArmor‬في هذا الفصل لمزيتد من المعلوما ت‪.‬‬

‫ج‪ .‬الضبط العام‬

‫نتستتتخندم ملفتتا ت الضتتبط التيتتة متتن ‪ LXC‬؛ للستتتخدام ذو المتيتتازا ت‪ ،‬فإظنهتتا ستتتتواجد فتتي‬

‫مجلد ‪ ،/etc/lxc‬بينما للستخدام دون امتيازا ت فستسكون موجودصة في ‪.~/.config/lxc‬‬

‫‪ lxc.conf‬نيحتتددد اختيارصيتتا القيتتم البديلتتة لمختلتتف خيتتارا ت ضتتبط ‪ ،lxc‬بمتتا فيهتتا ‪،lxcpath‬‬

‫والضتتتتبط الفتراضتتتتي‪ ،‬ومجموعتتتتا ت التحسكتتتتم التتتتتي سنتستتتتتخندم‪ ،‬وظنمتتتتط إظنشتتتتاء مجموعتتتتة تحسكتتتتم‪،‬‬

‫وإعدادا ت الواجها ت الخلفية لتخزين ‪ lvm‬و ‪.zfs‬‬

‫▲‬ ‫‪| 546‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫‪ default.conf‬يحتتدد الضتتبط التتذي يجتتب أن يحتتتويه كتتل ملتتف ضتتبط للحاويتتا ت النمنشتتأة‬

‫حديصثا؛ يحتوي هذا الملف عاد صة على القل على قسم للشبسكة؛ ويحتتتوي علتتى قستتم لربتتط المعرفتتا ت‬

‫للمستخدمين دون امتيازا ت‪.‬‬

‫‪ lxc-usernet.conf‬يحدد كيتف يوصتل المستتخدمون دون امتيتازا ت حاويتاتهم إلتى شتبسكة‬

‫مملوكة من المضيف‪.‬‬

‫الملفتتتتان ‪ lxc.conf‬و ‪ default.conf‬موجتتتتودان فتتتتي ‪ /etc/lxc‬و ‪$HOME/.config/lxc‬؛‬

‫بينما الملف ‪ lxc-usernet.conf‬هو ملف لعموم المضيف‪.‬‬

‫افتراضتتتتتت صيا‪ ،‬تقبتتتتتتع الحاويتتتتتتا ت فتتتتتتي مجلتتتتتتد ‪ /var/lib/lxc‬بالنستتتتتتبة للمستتتتتتتخدم الجتتتتتتذر‪ ،‬و‬

‫‪ $HOME/.local/share/lxc‬عتتتتدا ذلتتتتك؛ يمسكتتتتن تحديتتتتد المستتتتار لجميتتتتع أوامتتتتر ‪ lxc‬باستتتتتخدام‬

‫المعامل »‪.«-P|--lxcpath‬‬

‫ضبط الشبكة‬

‫افتراضتتتصيا‪ ،‬نينششتتتئ ‪ LXC‬مجتتتال أستتتماء شتتتبسكي ختتتاص لسكتتتل حاويتتتة‪ ،‬التتتذي يتضتتتمن مجموعتتتة‬

‫التصتتال الشتتبسكي متتن الطبقتتة الثاظنيتتة )‪ ،(layer 2‬تتصتتل الحاويتتا ت عتتادصة إلتتى العتتالم الختتارجي إمتتا‬

‫بالحصتتول علتتى بطاقتتة شتتبسكية فيزيائيتتة‪ ،‬أو عتتبر ظنفتتق ‪ veth‬نيمتتنرر إلتتى الحاويتتة؛ يننششتتئ ‪ LXC‬جستتر‬

‫‪ ،NAT‬التتتتذي هتتتتو ‪ lxcbr0‬عنتتتتد إقلع المضتتتتيف؛ والحاويتتتتا ت النمننشتتتتأة باستتتتتخدام ملتتتتف الضتتتتبط‬

‫الفتراضتتي ستتيسكون لهتتا بطاقتتة شتتبسكية ‪ veth‬تسكتتون ظنهايتهتتا موصتتولةة إلتتى الجستتر ‪ ،lxcbr0‬يمسكتتن‬

‫ت واحتتد‪ ،‬لتتذلك البطاقتتة الشتتبسكية‬


‫للبطاقتتة الشتتبسكية أن تتواجتتد فتتي مجتتال أستتماء واحتتد فتتي وقتت ت‬

‫الفيزيائية النممررة إلى الحاوية ستسكون غير قابلة للستخدام في المضيف‪.‬‬

‫▲‬ ‫‪| 547‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫متتن الممسكتتن إظنشتتاء حاويتتا ت دون مجتتال أستتماء شتتبسكي ختتاص‪ ،‬ففتتي هتتذه الحالتتة‪ ،‬ستحصتتل‬

‫صتتا‬
‫الحاويتتة علتتى وصتتول إلتتى شتتبسكة المضتتيف مثتتل أي تطتتبيق آختتر‪ ،‬لحتتظ أظنتته هتتذا خطيتتر خصو ص‬

‫إذا كتتاظنت الحاويتتة نتشتتدغل توزيعتتة تستتتخدم ‪ ،upstart‬مثتتل أوبنتتتو‪ ،‬لن البرامتتج التتتي »تتحتتدث«‬

‫إلى ‪ ،init‬مثل ‪ ،shutdown‬سيتحدثون عبر مقبس مجال يوظنسكس مجرد‬

‫) ‪ (abstract Unix domain socket‬إلتتتتى ‪ upstart‬للمضتتتتيف‪ ،‬ممتتتتا ستتتتيوقف تشتتتتغيل‬

‫المضيف!‬

‫لمنتتح الحاويتتا ت فتتي ‪ lxcbr0‬عنتتوان ‪ IP‬ثتتابت بنتتاصء علتتى استتم المضتتيف‪ ،‬فيمسكنتتك كتابتتة هتتذه‬

‫المدخل ت إلى ‪:/etc/lxc/dnsmasq.conf‬‬

‫‪dhcp-host=lxcmail,10.0.3.100‬‬
‫‪dhcp-host=ttrss,10.0.3.101‬‬

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

‫لللتفاف على ذلك‪ ،‬إحداها هي استخدام ‪ iptables‬لتمرير منافذ المضيف إلى الحاوية‪ ،‬فمثصل‪:‬‬

‫\ ‪iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 587‬‬


‫‪-j DNAT --to-destination 10.0.3.100:587‬‬

‫▲‬ ‫‪| 548‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫طريقة أخرى هي إظنشاء جسر إلى إلى البطاقة الشبسكية للمضيف )راجع »الفصل الرابع ‪ -‬الشتتبسكا ت«‬

‫لمزيتد من المعلوما ت(؛ ثم حدد جسر المضيف في ملف ضبط الحاوية بدصل من ‪ ،lxcbr0‬فمثصل‪:‬‬

‫‪lxc.network.type = veth‬‬
‫‪lxc.network.link = br0‬‬

‫فتتي النهايتتة‪ ،‬يمسكنتتك ستتؤال ‪ LXC‬ليستتتخدم ‪ macvlan‬كبطاقتتة شتتبسكية للحاويتتة؛ لحتتظ أن‬

‫لهذه الطريقة حدود واعتما صدا على الضبط قد ل تتمسكن الحاوية من »التحدث« إلى المضيف ظنفستته‪،‬‬

‫وبالتالي الخياران السابقان أفضل ونيستخدمان أكثر‪.‬‬

‫هنالتتتك عتتتددة طتتترق لتحديتتتد عنتتتوان ‪ IP‬للحاويتتتة‪ ،‬فتتتأوصل‪ ،‬يمسكنتتتك استتتتخدام ‪lxc-ls –fancy‬‬

‫التتذي ستتيطبع عنتتاوين ‪ IP‬لجميتتع الحاويتتا ت التتتي تعمتتل؛ أو ‪ lxc-info -i -H -n C1‬التتذي ستتيطبع‬

‫عنتتتتوان ‪ IP‬للحاويتتتتة ‪C1‬؛ إذا كتتتتان ‪ dnsmasq‬مثب صتتتتتا علتتتتى المضتتتتيف‪ ،‬فيمسكنتتتتك إضتتتتافة قيتتتتد إلتتتتى‬

‫‪ /etc/dnsmasq.conf‬كما يلي‪:‬‬

‫‪server=/lxc/10.0.3.1‬‬

‫بعد أن يستبين ‪ dnsmasq‬عنوان ‪ C1.lxc‬محلصيا‪ ،‬فيمسكنك تنفيذ‪:‬‬

‫‪ping C1‬‬
‫‪ssh C1‬‬

‫للمزيتتتد متتتن المعلومتتتا ت‪ ،‬راجتتتع صتتتفحة دليتتتل ‪ lxc.conf‬ومثتتتال ضتتتبط الشتتتبسكة فتتتي المستتتار‬

‫‪./usr/share/doc/lxc/examples/‬‬

‫▲‬ ‫‪| 549‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫د‪ .‬بدء تشغيل ‪LXC‬‬

‫ل يملك ‪ LXC‬عفريصتا يعمل طوال الوقت‪ ،‬لسكنه يملك مهام ‪:upstart‬‬

‫المهمتتتتة ‪ :/etc/init/lxc-net.conf‬هتتتتي مهمتتتتة اختياريتتتتة تعمتتتتل فقتتتتط إذا نحتتتتندد الملتتتتف‬ ‫•‬

‫‪ /etc/default/lxc‬الخاصتتتتتية ‪) USE_LXC_BRIDGE‬قيمتهتتتتتا هتتتتتي ‪ true‬افتراضتتتتتصيا(؛‬

‫يء جسر ‪ NAT‬لسكي تستخدمه الحاويا ت‪.‬‬


‫حيث ته د‬

‫المهمتتتتة ‪ :/etc/init/lxc.conf‬تعمتتتتل إذا كتتتتاظنت الخاصتتتتية ‪) LXC_AUTO‬قيمتهتتتتا ‪true‬‬ ‫•‬

‫افتراضتتصيا( مضتتبوطة إلتتى ‪ true‬فتتي ‪/etc/default/lxc‬؛ حيتتث تبحتتث عتتتن القيتتود فتتي‬

‫المجلد ‪ /etc/lxc/auto/‬حيث توجتتد وصتل ت رمزيتتة إلتى ملفتا ت الضتبط للحاويتا ت التتتي‬

‫يجب أن نتشنغل في وقت القلع‪.‬‬

‫المهمتتتتتتة ‪ :/etc/init/lxc-instance.conf‬نتستتتتتتتخندم متتتتتتن ‪ /etc/init/lxc.conf‬للبتتتتتتدء‬ ‫•‬

‫التلقائي لتشغيل حاوية‪.‬‬

‫ه‪ .‬التخزين‬

‫يتتدعم ‪ LXC‬عتت ددة أظنمتتاط متتن التخزيتتن لجتتذر ظنظتتام ملفتتا ت الحاويتتة؛ افتراضتتصيا يسكتتون مجلتتصدا‬

‫بستتي صطا‪ ،‬لظنتته ل يتطلتتب أي ضتتبط مستتبق للمضتتيف طالمتتا أن ظنظتتام الملفتتا ت فيتته مستتاحة تخزينيتتة‬

‫كافيتتة؛ وهتتو ل يتطلتتب أي ص‬


‫ضتتا امتيتتازا ت الجتتذر لظنشتتاء المختتزن‪ ،‬لتتذلك ستتيسكون ملئصمتتا للستتتخدام‬

‫دون امتيتتتازا ت؛ جتتتذر ظنظتتتام الملفتتتا ت للستتتتخدام متتتع امتيتتتازا ت موجتتتود افتراضتتتصيا فتتتي المستتتار‬

‫‪ ، /var/lib/lxc/C1/rootfs‬بينما جذر ظنظام الملفا ت للحاويتتا ت التتتي تعمتتل دون امتيتتازا ت يسكتون‬

‫فتتتتتتتتتتتتتي المستتتتتتتتتتتتتار ‪ ،~/.local/share/lxc/C1/rootfs‬إذا نحتتتتتتتتتتتتتددد ‪ lxcpath‬ختتتتتتتتتتتتتاص فتتتتتتتتتتتتتي‬

‫‪ ، lxc.system.com‬فتتتتتتتتتتإن جتتتتتتتتتتذر ظنظتتتتتتتتتتام ملفتتتتتتتتتتا ت الحاويتتتتتتتتتتة ستتتتتتتتتتيسكون موجتتتتتتتتتتوصدا فتتتتتتتتتتي‬

‫‪.$lxcpath/C1/rootfs‬‬

‫▲‬ ‫|‬ ‫‪550‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ظنسخة ‪ snapshot‬باسم ‪ C2‬لحاوية ‪ C1‬التي نتخنزن في مجلد ستصبح حاويتتة ‪،overlayfs‬‬

‫بجذر ظنظام ملفتا ت هتو ‪ ،overlayfs:/var/lib/lxc/C1/rootfs:/var/lib/lxc/C2/delta0‬أظن واع‬

‫التخزين الخرى تتضمن ‪ ،loop‬و ‪ ،btrfs‬و ‪ ،LVM‬و ‪.zfs‬‬

‫حاوية تعتمد على تخزين ‪ btrfs‬تبدو عموصما مثل حاوية تعتمد على التخزيتتن فتتي مجلتتد‪ ،‬ويسكتتون‬

‫جذر ظنظام الملفا ت في ظنفس المسكان؛ لسكن جذر ظنظام الملفا ت يحتوي على حجتتم فرعتتي )‪،(subvolume‬‬

‫لذلك تسكون ظنسخة ‪ snapshot‬نمننشأة باستخدام ظنسخة ‪ snapshot‬لحجم فرعي‪.‬‬

‫جتذر ظنظتام الملفتا ت لحاويتة تستتخدم ‪ LVM‬يمسكتن أن يسكتون أي حجتم منطقتي منفصتل؛ استم‬

‫مجموعتتة الحجتتوم الفتراضتتي يمسكتتن أن نيحتتندد فتتي ملتتف ‪lxc.conf‬؛ ونيضتتنبط ظنتتوع وحجتتم ظنظتتام‬

‫الملفا ت لسكل حاوية باستخدام ‪.lxc-create‬‬

‫جذر ظنظام الملفا ت لحاوية تستخدم ‪ zfs‬هو ظنظام ملفا ت ‪ zfs‬منفصتتل‪ ،‬وموصتتول فتتي المسكتتان‬

‫التقليتتتتدي ‪ ،/var/lib/lxc/C1/rootfs‬يمسكتتتتن تحديتتتتد ‪ zfsroot‬باستتتتتخدام ‪ ،lxc-create‬ويمسكتتتتن‬

‫تحديد قيمة افتراضية في ملف ‪.lxc.system.conf‬‬

‫المزيتد متن المعلومتا ت حتول إظنشتاء الحاويتتا ت بمختلتتف طرائتق التخزيتن يمسكتن أن توجتد فتتي‬

‫صفحة دليل ‪.lxc-create‬‬

‫▲‬ ‫|‬ ‫‪551‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫و‪ .‬القوالب‬

‫يتطلب إظنشاء حاوية عادصة إظنشاء جذر ظنظام ملفتتا ت للحاويتتة؛ يفتوض المتتر ‪ lxc-create‬هتتذا‬

‫العمل إلتتى القتوالب ) ‪ ،(templates‬التتتي تسكتتون عتتادصة خاصتتة بالتوزيعتتة؛ قتوالب ‪ lxc‬التتي تتأتي متع‬

‫‪ lxc‬يمسكتتن أن توجتتد فتتي مجلتتد ‪ ،/usr/share/lxc/templates‬بمتتا فيهتتا القتتوالب لظنشتتاء أوبنتتتو‪،‬‬

‫ودبيان‪ ،‬وفيدورا‪ ،‬وأوراكل‪ ،‬وسنتوس‪ ،‬وجنتو بالضافة لغيرها‪.‬‬

‫إظنشاء صور للتوزيعتا ت فتي أغلتب الحتال ت يتطلتب القتدرة علتى إظنشتاء عقتد أجهتزة‪ ،‬ويتطلتب‬

‫ذلك أدوا ت التي ليست متوفرة في بقية التوزيعا ت‪ ،‬وعادصة يستغرق هذا المر وقصتا طتتويصل؛ فلتتذلك‬

‫يتتأتي ‪ lxc‬بقتتالب ‪ ،download‬التتذي ينتتزل صتتور مبنيتتة مستتبصقا للحاويتتا ت متتن ختتادوم ‪ lxc‬مركتتزي؛‬

‫أهم حالة استخدام هي السماح بإظنشاء بستتيط لحاويتتا ت دون امتيتتازا ت بواستتطة مستتتخدمين غيتتر‬

‫الجذر‪ ،‬الذين لن يستطيعوا ببساطة تشغيل المر ‪.debootstrap‬‬

‫عند تشغيل ‪ ،lxc-create‬فجميع الخيارا ت التي تتتأتي بعتد »‪ «--‬نتمتنرر إلتى القتالب؛ ففتي المتر‬

‫التتتي‪ ،‬تمتترر الخيتتارا ت ‪ --name‬و ‪ --template‬و ‪ --bdev‬إلتتى ‪ ،lxc-create‬بينمتتا يمتترر الخيتتار‬

‫‪ --release‬إلى القالب‪:‬‬

‫\ ‪lxc-create --template ubuntu --name c1 --bdev loop --‬‬


‫‪--release trusty‬‬

‫▲‬ ‫‪| 552‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫يمسكنتتك الحصتتول علتتى مستتاعدة حتتول الخيتتارا ت المدعومتتة فتتي حاويتتة معينتتة بتمريتتر الخيتتار‬

‫‪ --help‬واستتم القتتالب إلتتى المتتر ‪ lxc-create‬؛ فعلتتى ستتبيل المثتتال‪ ،‬للحصتتول علتتى مستتاعدة حتتول‬

‫تنزيل قالب‪:‬‬

‫‪lxc-create --template download --help‬‬

‫البدء التلقائي‬

‫يدعم ‪ LXC‬تعليم الحاويا ت لسكي نتشنغل عند إقلع النظام؛ ففي الصدارا ت قبل أوبنتو ‪،14.04‬‬

‫كان يتم ذلك باستخدام وصل ت رمزيتتة فتي المجلتد ‪/etc/lxc/auto‬؛ وبتدصءا متن أوبنتتو ‪ ،14.04‬يتتم‬

‫ذلك عبر ملفا ت ضبط الحاوية؛ القيد‪:‬‬

‫‪lxc.start.auto = 1‬‬
‫‪lxc.start.delay = 5‬‬

‫يعنتتتي أن علتتتى الحاويتتتة البتتتدء عنتتتد إقلع النظتتتام ويجتتتب الظنتظتتتار ‪ 5‬ثتتتواظني قبتتتل بتتتدء تشتتتغيل‬

‫ضتتا ترتيتتب وتجميتتع الحاويتتا ت‪ ،‬وأي ص‬


‫ضتتا إعتتادة القلع وإيقتاف التشتتغيل‬ ‫الحاوية التالية؛ يدعم ‪ LXC‬أي ص‬

‫عبر مجموعا ت ‪autostart‬؛ راجع صتتفحا ت دليتتل ‪ lxc-autostart‬و ‪ lxc-container.conf‬للمزيتتد‬

‫من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 553‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ز‪ .‬برمجية ‪AppArmor‬‬

‫يأتي ‪ LXC‬متع ملتف ضتبط ‪ AppArmor‬مهمتتته هتتي حمايتتة المضتتيف متن الستاءة العرضتتية‬

‫للمتيتتازا ت داختتل الحاويتتة؛ علتتى ستتبيل المثتتال‪ ،‬لتتن تسكتتون الحاويتتة قتتادرصة علتتى السكتابتتة إلتتى ملتتف‬

‫‪ /proc/sysrq-trigger‬أو أغلبية ملفا ت ‪./sys‬‬

‫الملتتف ‪ usr.bin.lxc-start‬يتتدخل حيتتز التنفيتتذ عنتتد تشتتغيل ‪lxc-start‬؛ يمنتتع ملتتف الضتتبط‬

‫‪ lxc-start‬من وصل أظنظمة ملفا ت جديدة خارج ظنظام ملفا ت الجذر الختتاص بالحاويتتة؛ قبتتل تنفيتتذ‬

‫‪ init‬للحاويتتة‪ ،‬فتتإن ‪ LXC‬يطلتتب تبتتديصل لملتتف ضتتبط الحاويتتة؛ افتراضتتصيا‪ .‬هتتذا الضتتبط هتو السياستتة‬

‫‪ lxc-container-default‬المعنرفتتتة فتتتي ملتتتف الضتتتبط ‪./etc/apparmor.d/lxc/lxc-default‬‬

‫يمنع هذا الضبط الحاوية من الوصول إلى مسارا ت خطرة‪ ،‬ومن وصل أغلبية أظنظمة الملفا ت‪.‬‬

‫ل يمسكن تقييد البرامج في الحاوية أكثر من ذلك؛ فعلى سبيل المثتال‪ ،‬ختادوم ‪ MySQL‬التذي‬

‫يعمل ضمن ظنطاق الحاوية ) مما يحمي المضيف( ل يمسكن أن يدخل في ظنطاق ملف ضتتبط ‪MySQL‬‬

‫)لحماية الحاوية(‪.‬‬

‫ل يتتدخل ‪ lxc-execute‬ضتتمن ستتلطة ‪ ،AppArmor‬لسكتتن الحاويتتة التتتي نينششتتئها )‪(spawn‬‬

‫ستسكون مقيدصة‪.‬‬

‫▲‬ ‫‪| 554‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫تعديل سياسات الحاوية‬

‫إذا وجتتتد ت أن ‪ lxc-start‬ل يعمتتتل بستتتبب تقييتتتد فتتتي الوصتتتول متتتن سياستتتة ‪،AppArmor‬‬

‫فيمسكنك تعطيل ملف ضبط ‪ lxc-start‬بتنفيذ‪:‬‬

‫‪sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start‬‬


‫\ ‪sudo ln -s /etc/apparmor.d/usr.bin.lxc-start‬‬
‫‪/etc/apparmor.d/disabled/‬‬

‫هذا سيجعل ‪ lxc-start‬يعمل دون قيود‪ ،‬لسكن ستبقى الحدود موجتتودصة للحاويتتة ظنفستتها‪ ،‬وإذا‬

‫أرد ت إزالة التقييد عن الحاوية‪ ،‬فعليك بالضافة إلى تعطيل ملف الضبط ‪ usr.bin.lxc-start‬أن‬

‫تضيف السطر‪:‬‬

‫‪lxc.aa_profile = unconfined‬‬

‫إلى ملف ضبط الحاوية‪ .‬يأتي ‪ LXC‬مع سياسا ت بديلة للحاويا ت‪ ،‬فتتإذا أرد ت إظنشتاء حاويتا ت‬

‫داختتتتل حاويتتتتا ت )تشتتتتعب( ‪ ،‬فعليتتتتك استتتتتخدام ملتتتتف الضتتتتبط ‪lxc-container-default-with-‬‬

‫‪ nasting‬بإضافة السطر التي إلى ملف ضبط الحاوية‪:‬‬

‫‪lxc.aa_profile = lxc-container-default-with-nesting‬‬

‫إذا أرد ت استخدام ‪ libvirt‬داختل الحاويتتا ت‪ ،‬فستتتحتاج إلتتى تعتديل تلتك السياستتة )المعرفتة‬

‫في ‪ (/etc/apparmor.d/lxc/lxc-default-with-nasting‬وإزالة التعليق عن السطر التي‪:‬‬

‫‪mount fstype=cgroup -> /sys/fs/cgroup/**,‬‬

‫ثم أعد تحميل السياسة‪.‬‬

‫▲‬ ‫‪| 555‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫لحظ أن سياسة التشعب للحاويا ت ذا ت المتيازا ت هي أقل أماصظنا متتن السياستتة الفتراضتتية‪،‬‬

‫حيث تسمح للحاويتا ت بإعتتادة وصتل ‪ /sys‬و ‪ /proc‬فتي أمسكتتان غيتر قياستتية‪ ،‬ممتتا يتجتتاوز سياستة‬

‫‪ AppArmor‬؛ ل تملتك الحاويتا ت دون امتيتتازا ت هتذا التتتأثير الجتتاظنبي‪ ،‬لن جتذر الحاويتة ل يمسكنته‬

‫السكتابة إلى ملفا ت ‪ proc‬و ‪ sys‬المملوكة من الجذر‪.‬‬

‫إذا أرد ت تشتتغيل الحاويتتة بملتتف ضتتبط مخصتتص‪ ،‬فبإمسكاظنتتك إظنشتتاء ملتتف ضتتبط فتتي المستتار‬

‫‪ ،/etc/apparmor.d/lxc‬ويجتتتب أن يبتتتدأ استتتمه بالسكلمتتتة ‪ lxc-‬لسكتتتي نيستتتنمح لبرظنامتتتج ‪lxc-start‬‬

‫بالظنتقتتتال إليتتته؛ ملتتتف ‪ lxc-default‬يتضتتتمن إعتتتادة استتتتعمال الملتتتف المجتتترد فتتتي المستتتار التتتتالي‬

‫‪/etc/apparmor.d/abstraction/lxc/container-base‬؛ طريقتتة ستتهلة لظنشتتاء ملتتف ضتتبط‬

‫جديد هي فعل المثل‪ ،‬ثم إضافة الذوظنا ت الضافية في ظنهاية السياسة‪.‬‬

‫نحدمل الضبط الجديد بعد إظنشاءه كما يلي‪:‬‬

‫‪sudo apparmor_parser -r /etc/apparmor.d/lxc-containers‬‬

‫ستتتتتتتنيحنمل هتتتتتتتذا الضتتتتتتتبط تلقائ صيتتتتتتتا بعتتتتتتتد إعتتتتتتتادة القلع‪ ،‬لظنتتتتتتته نيقتتتتتتتنرأ متتتتتتتن الملتتتتتتتف التتتتتتتتالي‬

‫‪/etc/apparmor.d/lxc-containers‬؛ وفي النهاية ولجعل الحاوية ‪ CN‬تستخدم ملف الضتتبط‬

‫الجديد ‪ ،lxc-CN-profile‬فأضف السطر التي إلى ملف الضبط‪:‬‬

‫‪lxc.aa_profile = lxc-CN-profile‬‬

‫▲‬ ‫‪| 556‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ح‪ .‬مجموعات التحكم‬

‫إن مجموعا ت التحسكتتم )‪ (cgroups‬هتي ميتزة متن ميتزا ت النتواة تتوفر تجمي ع للمهتام تجميصعتا‬

‫هيسكلصيا‪ ،‬وإسناد وتحديد المتوارد لسكتتل مجموعتة تحسكتتم؛ نتستتخندم فتي الحاويتتا ت للحتد متن الوصتول‬

‫إلتتى الجهتتزة السكتليتتة أو المحرفيتتة )‪ (block or character devices‬وتجدمتتد عمتتل الحاويتتا ت؛‬

‫يمسكتتن استتتعمالها أي ص‬
‫ضتتا لتحديتتد استتتخدام التتذاكرة وإيقتتاف التتدخل أو الختترج‪ ،‬وضتتماظنة استتتخدام‬

‫أصغري للمعالج‪ ،‬والسماح للحاوية بالوصول إلى معالجا ت محددة‪.‬‬

‫افتراضتتصيا‪ ،‬سنيستتند للحاويتتة ‪ CN‬ذا ت امتيتتازا ت مجموعتتنة تحسكتتتم باستتم ‪/lxc/CN‬؛ وفتتي حتتال‬

‫حتدوث تضتارب بالستم )التذي قتد يحتدث عنتد استتخدام ‪ lxcpaths‬مخصصتة(‪ ،‬فسنتضتاف لحقتة‬

‫»‪ «-n‬حيث ‪ n‬هو رقم صحيح يبدأ من الصفر‪ ،‬ونيسنند إلى اسم مجموعة التحسكم‪.‬‬

‫افتراضصيا‪ ،‬سنيسند للحاوية ‪ CN‬دون امتيازا ت مجموعة تحسك م باستم ‪ CN‬فتي مجموعتة التحسكتم‬

‫الخاصة بالمهمة التي بتتدأ ت الحاويتتة‪ ،‬علتى ستتبيل المثتال ‪ /usr/1000.user/1.session/CN‬ستتنيمننح‬

‫جذر الحاوية ملسكية المجموعة للمجلد ) لسكن ليس جميع الملفا ت(‪ ،‬وهذا ما سيسمح بإظنشاء مجموعتتا ت‬

‫تحسكم فرعية‪.‬‬

‫وفي أوبنتو ‪ ،14.04‬يستخدم ‪ LXC‬مدير مجموعا ت التحسكتتم ‪ cgmanager‬لدارة مجموعتتا ت‬

‫التحسكم؛ يستقبل متدير مجموعتا ت التحسكتتم طلبتا ت ‪ D-Bus‬عتبر مقبتس يتوظنسكس ‪/sys/fs/cgroup‬‬

‫‪cgmanager/sock /‬؛ يجب أن نيضاف السطر التي لستخدام آمن للحاويا ت المتشعبة‪:‬‬

‫‪lxc.mount.auto = cgroup‬‬

‫▲‬ ‫‪| 557‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫إلتتى ملتتف ضتتبط الحاويتتة‪ ،‬ممتتا يصتتل المجلتتد ‪ /sys/fs/cgroup/cgmanager‬وصتتصل ترابطصيتتا‬

‫)‪ (bind-mounted‬إلى الحاوية؛ ويجب على الحاويتتة فتتي المقابتتل تشتتغيل وستتيط إدارة مجموعتتا ت‬

‫التحسكتتم )ويتتتم ذلتتك افتراضتتصيا إذا كتتاظنت الحزمتتة ‪ cgmanager‬مثبتتتصة علتتى الحاويتتة( التتذي ستتينقل‬

‫المجلتتتد ‪ /sys/fs/cgroup/cgmanager‬إلتتتى ‪ /sys/fs/cgroup/cgmanager.lower‬ثتتتم ستتتيبدأ‬

‫الستتتماع إلتى الطلبتا ت للوستيط علتى مقبسته ‪/sys/fs/cgroup/cgmanager/sock‬؛ ستيتأكد متتدير‬

‫مجموعا ت التحسكم في المضيف أن الحاويا ت المتشعبة لن تستطيع »الهروب« من مجموعتتا ت التحسكتتم‬

‫النمسنندة إليها أو إظنشاء طلبا ت غير مصرح لها بها‪.‬‬

‫الستنساخ‬

‫ن‬
‫للتزويد السريع بالحاويتا ت‪ ،‬ربمتتا تريتتد تخصتتيص حاويتة تبصعتتا لحاجاتتتك ثتم تنششتتئ عتندة ظنشستت ت‬
‫خ‬

‫منها؛ ويمسكن فعل ذلك بالبرظنامج ‪.lxc-clone‬‬

‫الستنساخ إما أن يسكون عبر ‪ snapshots‬أو بنسخ حاوية أختترى؛ فالنستتخ هتتو إظنشتتاء حاويتتة‬

‫جديتتدة منستتوخة متتن الصتتلية‪ ،‬وتأختتذ مستتاحة تخزينيتتة مثتتل الحاويتتة الصتتلية؛ أمتتا ‪snapshot‬‬

‫فإظنهتتا تستتتخدم قتتدرة آليتتة التخزيتتن علتتى إظنشتتاء ‪ snapshots‬لظنشتتاء حاويتتة النستتخ‪-‬عنتتد‪-‬السكتابتتة‬

‫)‪ (copy-on-write‬نتشير إلى الحاويتة الولتى؛ يمسكتتن إظنشتاء ‪ snapshots‬للحاويتا ت المخزظنتتة فتي‬

‫‪ ،btrfs‬و ‪ ،LVM‬و ‪ ، zfs‬وتلتتتتك التتتتتي تسكتتتتون مخزظنتتتتة فتتتتي مجلتتتتدا ت؛ حيتتتتث كتتتتل آليتتتتة تخزيتتتتن لهتتتتا‬

‫خصوصتتتتياتها؛ فمثصل‪ ،‬حاويتتتتا ت ‪ LVM‬التتتتتي ليستتتتت ‪ thinpool-provisioned‬ل تتتتتدعم إظنشتتتتاء‬

‫‪ snapshots‬متتتن ‪snapshots‬؛ ول يمسكتتتن حتتتذف حاويتتتا ت ‪ zfs‬متتتع ‪ snapshots‬قبتتتل أن نتطنلتتتق‬

‫)‪ (release‬جميتتتع ‪snapshots‬؛ ويجتتتب أن نيخطتتتط جيتتتصدا لحاويتتتا ت ‪ LVM‬فقتتتد ل يتتتدعم ظنظتتتام‬

‫الملفا ت أن يزيد حجمه‪ .‬ل يعتتاظني ‪ btrfs‬متن تلتك الستلبيا ت‪ ،‬لسكنته يعتتاظني متن أداء ‪ fsync‬منخفتض‬

‫يسبب جعل ‪ dpkg‬و ‪ apt-get‬أبطئ‪.‬‬

‫▲‬ ‫‪| 558‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫نتننشتتتأ ‪ snapshots‬متتتن الحاويتتتا ت المخزظنتتتة فتتتي مجلتتتدا ت عتتتبر ظنظتتتام الملفتتتا ت؛ فمثصل يسكتتتون‬

‫لحاويتتتة ذا ت امتيتتتازا ت ‪ C1‬جتتتذر ظنظتتتام ملفتتتا ت فتتتي ‪ ،/var/lib/lxc/C1/rootfs‬وستتتتبدأ ظنستتتخة‬

‫‪ snapshot‬للحاويتتة ‪ C1‬باستتم ‪ C2‬بجتتذر ظنظتتام الملفتتا ت للحاويتتة ‪ C1‬موصتتوصل للقتتراءة فقتتط فتتي‬

‫‪ /var/lib/lxc/C2/delta0‬؛ كل ما يهم في هذه الحالة أظنه ل يفتتترض أن تعمتتل أو تحتتذف الحاويتتة‬

‫‪ C1‬أثنتتاء عمتتل ‪C2‬؛ متتن المستحستتن اعتبتتار الحاويتتة ‪ C1‬هتتي حاويتتة أساستتية واستتتخدام ظنستتخة‬

‫‪ snapshot‬لها فقط‪.‬‬

‫لنفترض أن لدينا حاوية باسم ‪ ،C1‬فيمسكن إظنشاء ظنسخة منها باستخدام المر‪:‬‬

‫‪sudo lxc-clone -o C1 -n C2‬‬

‫يمسكن إظنشاء ‪ snapshot‬باستخدام‪:‬‬

‫‪sudo lxc-clone -s -o C1 -n C2‬‬

‫راجع صفحة دليل ‪ lxc-clone‬لمزيد من المعلوما ت‪.‬‬

‫▲‬ ‫‪| 559‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫دعم ‪Snapshots‬‬

‫‪ LXC‬يتتدعم ‪ snapshots‬لتستتهيل دعتتم ظنستتخ ‪ snapshot‬لتطتتوير تسكتتراري للحاويتتة؛ فعنتتدما‬

‫تعمل على حاوية ‪ - C1‬وقبل إظنشاء تغيير خطير وصعب العسكس‪ -‬يمسكنك إظنشاء ‪:snapshot‬‬

‫‪sudo lxc-snapshot -n C1‬‬

‫التتتتتتتتتي هتتتتتتتتي ظنستتتتتتتتتخة ‪ snapshot‬باستتتتتتتتتم »‪ «snap0‬فتتتتتتتتي مجلتتتتتتتتتد ‪/var/lib/lxcsnaps‬‬

‫أو ‪ ،$HOME/.local/share/lxcsnaps‬النسخة الثاظنية سنتسمى »‪ «snap1‬وهسكذا؛ يمسكن عتترض‬

‫النستتخ الموجتتودة حالصيتتا باستتتخدام المتتر ‪ ،lxc-snapshot -L -n C1‬ويمسكتتن أن نتستتتعاد ظنستتخة‬

‫‪ snapshot‬وتمحتتى حاويتتة ‪ C1‬الحاليتتة باستتتخدام المتتر ‪،lxc-snapshot -r snap1 -n C1‬‬

‫وبعد تنفيذ أمر الستعادة‪ ،‬فستبقى النسخة ‪ snap1‬موجودصة‪.‬‬

‫نتدنعم ‪ snapshots‬لحاويا ت ‪ ،btrfs‬و ‪ ،lvm‬و ‪ ،zfs‬و ‪overlayfs‬؛ في حالتتة إذا استتتدعي المتتر‬

‫‪ lxc-snapshot‬على حاوية نتخنزن في مجلد‪ ،‬فسيسجل خطتتأ وسنتننشتتأ ظنستتخة ‪copy-clone‬؛ وستتبب‬

‫ذلك أظنه لو أظنشأ المستخدم ظنسخة ‪ overlayfs snapshot‬لحاوية تخزن في مجلد‪ ،‬فستتينعسكس جتتزء‬

‫من تغيرا ت الحاويتة الصتلية علتى ظنستخة ‪snapshot‬؛ إذا كنتت تريتد إظنشتاء ‪ snapshots‬لحاويتة ‪C1‬‬

‫مخزظنة في مجلد‪ ،‬فيمسكتتن إظنشتاء ظنستخة ‪ overlayfs‬للحاويتة ‪ ،C1‬ويجتب أدل تلمتس ‪ C1‬بعتد ذلتك قتط‪،‬‬

‫لسكن يمسكن أن ظنعددل ‪ overlayfs‬وظننسخها ظنسخ ‪ snapshots‬كما ظنريد‪ ،‬أي‪:‬‬

‫‪lxc-clone -s -o‬‬ ‫‪C1 -n C2‬‬


‫‪lxc-start -n C2‬‬ ‫‪-d # make some changes‬‬
‫‪lxc-stop -n C2‬‬
‫‪lxc-snapshot -n‬‬ ‫‪C2‬‬
‫‪lxc-start -n C2‬‬ ‫‪# etc‬‬

‫▲‬ ‫‪| 560‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫الحاويات العابرة‬

‫»الحاويا ت العابرة« ) ‪ (Ephemeral containers‬هي حاويا ت تستخدم لمرة واحدة فقط؛‬

‫فليسكن لدينا حاوية موجودة مسبصقا باسم ‪ ،C1‬فيمسكنك إظنشاء حاوية عابرة باستخدام‪:‬‬

‫‪lxc-start-ephemeral -o C1‬‬

‫ستتبدأ الحاويتة كنستخة ‪ snapshot‬للحاويتة ‪ ،C1‬وس تطبع التعليمتا ت للتدخول إلتى الحاويتة‬

‫علتتى الطرفيتتة‪ ،‬وستتتدمر الحاويتتة العتتابرة بعتتد إيقتتاف التشتتغيل‪ ،‬راجتتع صتتفحة التتدليل ‪lxc-start-‬‬

‫‪ ephemeral‬لمزيد من الخيارا ت‪.‬‬

‫ط‪ .‬إضاافات إدارة دورة التشغيل‬

‫بدصءا من أوبنتتو ‪ ،12.10‬أصتتبح متن الممسكتتن تعريتتف إضتتافا ت )‪ (hooks‬نتننفتتذ عنتتد ظنقتتاط محتددة‬

‫من دورة تشغيل الحاوية‪:‬‬

‫الضافا ت التي تحدث قبل التشتغيل نتننفتذ متن مجتال أستماء المضتيف قبتل أن نتننشتأ طرفيتا ت‬

‫ن‬
‫أو ظنقاط وصل الحاويا ت؛ إذا أجري أي وصل في هذه الفترة‪ ،‬فيجتتب أن نيننظتتف فتتي إضتتافة تحتتدث‬

‫بعد إيقاف التشغيل‪.‬‬

‫الضافا ت التي تحدث قبل الوصل نتن نفذ في مجال أستماء الحاويتة‪ ،‬لسكتن قبتل أن يوصتل جتذر‬

‫ظنظام الملفا ت؛ سينظف أي وصل لنظام الملفا ت في هذه الفترة تلقائصيا عند إيقاف تشغيل الحاوية‪.‬‬

‫إضتتافا ت الوصتتل هتتي إضتتافا ت تنفتتذ بعتتد وصتتل أظنظمتتة ملفتتا ت الحاويتتة‪ ،‬لسكتتن قبتتل أن نتندفتتذ‬

‫الحاوية ‪ pivot_root‬لتغيير جذر ظنظام ملفاتها‪.‬‬

‫▲‬ ‫‪| 561‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫الضافا ت التي تحدث بعد إيقاف التشغيل ستننفذ بعد إيقاف تشغيل الحاوية‪.‬‬

‫إذا أعتتاد ت أديتتة إضتتافة خطتت صأ‪ ،‬فستتيلغى تشتتغيل الحاويتتة‪ ،‬لسكتتن أي إضتتافة تحتتدث بعتتد إيقتتاف‬

‫التشغيل ستننفذ‪ ،‬سنتسنجل أدية مخرجا ت تولد من السسكربت بأولوية التنقيح )‪.(debug‬‬

‫رجتتتتاصء راجتتتتع صتتتتفحة دليتتتتل ‪ lxc.container.conf‬لصتتتتيغة ملتتتتف الضتتتتبط التتتتتي ستتتتيحدد‬

‫الضافا ت؛ يمسكن أن تأتي بعض أمثلة الضافا ت في الحزمة ‪ lxc‬لتخدم كمثال حتتول طريقتتة كتابتتة‬

‫إحدى تلك الضافا ت‪.‬‬

‫سطر الوامر‬

‫لتتدى الحاويتتا ت عتتدد مضتتبوط متتن »أستتطر الوامتتر« )‪(consoles‬؛ أحتتدها موجتتوةد دائصمتتا فتتي‬

‫‪/dev/console‬؛ الذي يظهتتر فتي الطرفيتة عنتدما نتشتدغل ‪ lxc-start‬متتا لتم تحتدد الخيتتار ‪-d‬؛ يمسكتتن‬

‫إعتتتادة تتتتوجيه ظناتتتتج ختتترج ‪ /dev/console‬إلتتتى ملتتتف باستتتتخدام ‪ -c console-file‬فتتتي المتتتر‬

‫‪ lxc-start‬؛ يمسكتتن تحديتتد عتتدد إضتتافي متتن أستتطر الوامتتر باستتتخدام المتغيتتر ‪ lxc.tty‬المضتتبوط‬

‫عادصة إلى ‪4‬؛ يمسكن أن تظهر أسطر الوامر تلك فتي ‪) /dev/ttyN‬حيتث ‪ N‬أكتبر أو تستاوي ‪ ،1‬وأصتغر‬

‫أو تساوي ‪(4‬؛ ولتسجيل الدخول إلى ‪ console 3‬من المضيف‪ ،‬فندفذ المر‪:‬‬

‫‪sudo lxc-console -n container -t 3‬‬

‫إذا لم تحدد الخيار ‪ ،-t N‬فسيتم اختيار ستطر أوامتر غيتر نمستتخندم؛ للختروج منته‪ ،‬اس تخدام‬

‫عبارة الخروج ‪Ctrl-a q‬؛ لحظ أن عبارة الخروج ل تعمل في سطر الوامتر الناتتج عتن ‪lxc-start‬‬

‫دون الخيار ‪.-d‬‬

‫▲‬ ‫‪| 562‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ي‪ .‬استكشاف التخطاء‬

‫التسجيل‬

‫إذا حتتدث شتتيء متتا ختتاطئ عنتتد تشتتغيل حاويتتة‪ ،‬فتتإن أول خطتتوة هتتي الحصتتول علتتى ستتجل‬

‫كامل من ‪:LXC‬‬

‫‪sudo lxc-start -n C1 -l trace -o debug.out‬‬

‫هذا سيؤدي إلى جعل ‪ lxc‬يسجل في أعلتتى درجتتة إستتهاب‪ ،‬التتتي هتتي ‪ ،trace‬وستتيسكون ملتتف‬

‫التخزيتتن هتتو ملتتف باستتم »‪ ،«debug.out‬إذا كتتان الملتتف ‪ debug.out‬موجتتوصدا مستتبصقا‪ ،‬فسنتضتتاف‬

‫معلوما ت السجل الجديد إليه‪.‬‬

‫مراقبة حالة الحاوية‬

‫هنالتتك أمتتران متتتوفران لمراقبتتة تغيتترا ت حالتتة الحاويتتة‪ lxc-monitor :‬التتذي يراقتتب حاويتتصة‬

‫أو أكتتثر لي تغيتترا ت فتتي الحالتتة‪ ،‬حيتتث يأختتذ استتم الحاويتتة متتع الخيتتار ‪ -n‬كالعتتادة؛ لسكتتن فتتي هتتذا‬

‫الحالة‪ ،‬يمسكن أن يسكون اسم الحاوية تعبيصرا ظنمطصيا متتن ظنمتتط ‪ POSIX‬للستتماح بمراقبتتة مجموعتتة متتن‬

‫الحاويتتتا ت؛ يستتتتمر ‪ lxc-monitor‬بالعمتتتل ويعتتترض تغيتتترا ت حتتتال ت الحاويتتتا ت؛ أمتتتا ‪lxc-wait‬‬

‫فينتظر تغديصرا محدصدا في الحالة ثم ينتهي تنفيذه؛ على سبيل المثال‪:‬‬

‫*]‪sudo lxc-monitor -n cont[0-5‬‬

‫▲‬ ‫‪| 563‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫هذا سيعرض جميع تغيرا ت الحالة لي حاوية تطابق التعبير النمطي؛ بينما‪:‬‬

‫'‪sudo lxc-wait -n cont1 -s 'STOPPED|FROZEN‬‬

‫سينتظر إلى أن تتغير حالة الحاوية ‪ cont1‬إلى ‪ STOPPED‬أو ‪ FROZEN‬ثم ينتهي‪.‬‬

‫الوصل من الممسكن في أوبنتو ‪ 14.04‬الوصل )‪ (attach‬إلى مجال أسماء حاوية‪ ،‬أبسط طريقة‬

‫هي تنفيذ‪:‬‬

‫‪sudo lxc-attach -n C1‬‬

‫التتذي ستتيبدأ صتتدفة موصتتولة لمجتتال الحاويتتة ‪ ،C1‬أو داختتل الحاويتتة؛ آليتتة عمتتل الوصتتل هتتي‬

‫معقتتدة جتت صدا‪ ،‬ممتتا يستتمح بوصتتل مجموعتتة فرعيتتة متتن مجتتال ت أستتماء ) ‪ (namespaces‬الحاويتتة‬

‫وظنمط الحماية )‪ ،(security context‬راجع صفحة الدليل لمزيتد من المعلوما ت‪.‬‬

‫درجة إسهاب ‪ init‬افي الحاوية‬

‫إذا أكمل ‪ LXC‬بدء تشغيل الحاوية‪ ،‬لسكن فشل إكمال تنفيذ ‪ init‬فيها )علتتى ستبيل المثتال‪ ،‬لتم‬

‫نيع نرض محث الدخول( ‪ ،‬فمن المفيد طلب درجة إسهاب أكبر من عملية ‪ ،init‬فلحاوية ‪:upstart‬‬

‫‪sudo lxc-start -n C1 /sbin/init loglevel=debug‬‬

‫▲‬ ‫‪| 564‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الظنظمة الوهمية‬

‫يمسكنك أي ص‬
:‫ على سبيل المثال‬،init ‫ضا بدء تشغيل برامج مختلفة عن‬

sudo lxc-start -n C1 /bin/bash


sudo lxc-start -n C1 /bin/sleep 100
sudo lxc-start -n C1 /bin/cat /proc/1/status

LXC API ‫ التعامل مع‬.‫ك‬

‫ التتي‬liblxc ‫( نمصتتندرة متتن‬API) ‫ عبر واجهة برمجية‬LXC ‫يمسكن الوصول إلى غالبية وظائف‬

.go ‫ و‬،‫ وروبي‬،lua ‫ و‬،‫تسكون ارتباطاتها متوفرة لعدة لغا ت برمجية بما فيها بايثون‬

‫ التتتي‬،(python3-lxc ‫متتا يلتتي هتتو مثتتال عتتن استتتخدام ربتتط بتتايثون )المتتتوفرة فتتي حزمتتة‬

:‫ ثم تنتظر إلى أن يوقف تشغيلها‬،‫نتنششئ وتبدأ حاوية‬

sudo python3
Python 3.2.3 (default, Aug 28 2012, 08:26:03)
[GCC 4.7.1 20120814 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> import lxc
__main__:1: Warning: The python-lxc API isn't yet stable and
may change at any p
oint in the future.
>>> c=lxc.Container("C1")
>>> c.create("ubuntu")
True
>>> c.start()
True
>>> c.wait("STOPPED")
True

▲ | 565
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ل‪ .‬الحماية‬

‫يربط مجال السماء المعرفا ت )‪ (ids‬إلتتى المتوارد؛ لسكنته ل يتوفر للحاويتة أي معتتدرف يمسكنته أن‬

‫يشتتتتير إلتتتتى المتتتتورد‪ ،‬لتتتتذلك يمسكتتتتن أن نيحمتتتتى المتتتتورد؛ وهتتتتذا هتتتو أستتتتاس بعتتتتض الحمايتتتتة المتتتوفرة‬

‫لمستتتخدمي الحاويتتة؛ علتتى ستتبيل المثتتال‪ ،‬مجتتال أستتماء ‪ IPC‬معتتزول تماصمتتا؛ لسكتتن مجتتال ت أستتماء‬

‫أخرى فيها بعض »التسربا ت« )‪ (leaks‬التي تسمح للمتيازا ت بأن نتستخنرج بشتتسكل غيتر ملئتتم متتن‬

‫الحاوية إلى حاوية أخرى‪ ،‬أو إلى المضيف‪.‬‬

‫افتراضتتصيا‪ ،‬نتشتتنغل حاويتتا ت ‪ LXC‬بسياستتة ‪ AppArmor‬التتتي تقديتتد بعتتض الفعتتال‪ ،‬تفاصتتيل‬

‫دمج ‪ AppArmor‬مع ‪ LXC‬موجودة فتي قستم »‪ ،«AppArmor‬الحاويتا ت دون امتيتازا ت تربتط‬

‫الجتتذر فتتي الحاويتتة إلتتى مستتتخدم دون امتيتتازا ت فتتي المضتتيف‪ ،‬وهتتذا يمنتتع الوصتتول إلتتى ملفتتا ت‬

‫‪ /proc‬و ‪ /sys‬التي تمثل موارد المضيف‪ ،‬وغيرها من الملفا ت المملوكة من الجذر في المضيف‪.‬‬

‫الثغرات افي استدعاءات النظام‬

‫ميزة أساسية متن مزايتتا الحاويتا ت أظنهتا تشتارك النتواة م ع المضتيف؛ وهتذا يعنتي أظنته إذا ح و ت‬

‫النواة على أدية ثغرا ت في استدعاءا ت النظام ) ‪ ،(system calls‬فيمسكن أن تستغلها الحاوية؛ وبعد‬

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

‫بتتدصءا متتن أوبنتتتو ‪ ،12.10‬يمسكتتن أن تقنيتتد الحاويتتة متتن مردشتتح ‪ ،seccomp‬إن ‪ Seccomp‬هتتو‬

‫ميتتتزة جديتتتدة فتتتي النتتتواة التتتتي نتردشتتتح استتتتدعاءا ت النظتتتام التتتتي يمسكتتتن أن نتستتتتخندم متتتن المهمتتتة‬

‫وأولدهتتا؛ بينمتتا يتوقتتع الوصتتول إلتتى إدارة ستتهلة ومحستتنة للسياستتة فتتي المستتتقبل القريتتب‪ ،‬لسكتتن‬

‫تحتوي السياسة الحالية على قائمة بيضاء بسيطة لرقام استدعاءا ت النظام؛ يبتتدأ ملتتف السياستتة‬

‫برقتتتم الصتتتدار )التتتذي يجتتتب أن يسكتتتون ‪ (1‬فتتتي أول ستتتطر وظنتتتوع السياستتتة )التتتذي يجتتتب أن يسكتتتون‬

‫‪ (whitelist‬في ثاظني سطر؛ ونتلنحق بقائمة أرقام‪ ،‬كل رقم في سطر‪.‬‬

‫▲‬ ‫‪| 566‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الظنظمة الوهمية‬

‫ستتنحتاج عتتاد صة لتشتتغيل حاويتتة بتوزيعتتة كاملتتة إلتتى عتتدد كتتبير متتن استتتدعاءا ت النظتتام؛ لسكتتن‬

‫لحاويتتتا ت البرامتتتج‪ ،‬يمسكتتتن أن ظنقلتتتل عتتتدد استتتتدعاءا ت النظتتتام المتتتتوفرة إلتتتى رقتتتم قليتتتل؛ وحتتتتى‬

‫للحاويتتا ت التتتي تشتتغل توزيعتتا ت كاملتتة يمسكتتن الحصتتول علتتى فوائتتد أمنيتتة إذا حتتذفت ‪-‬علتتى ستتبيل‬

‫المثتتتتال‪ -‬استتتتتدعاءا ت النظتتتتام المتوافقتتتتة متتتتع ‪ 32‬بتتتتت فتتتتي حاويتتتتة ‪ 64‬بتتتتت؛ راجتتتتع صتتتتفحة دليتتتتل‬

‫‪ lxc.container.conf‬للمزيتتد متتن التفاصتتيل حتتول كيفيتتة ضتتبط الحاويتتة لتستتتخدم ‪seccomp‬؛‬

‫لن نتحنمل افتراضصيا سياسة ‪.seccomp‬‬

‫م‪ .‬مصادر‬

‫كتتتاب » ‪ «Secure Containers Cookbook‬يشتترح كيفيتتة استتتخدام أظنمتتاط الحمايتتة‬ ‫•‬

‫لجعل الحاويا ت أكثر أماصظنا‪.‬‬

‫مشروع ‪ LXC‬نمستضاف في ‪.linuxcontainers.org‬‬ ‫•‬

‫مشاكل ‪ LXC‬المنية مذكورة ومناقشة في صفحة ويسكي »‪.«LXC Security‬‬ ‫•‬

‫▲‬ ‫‪| 567‬‬


‫مجموعات التحكم‬
‫‪21‬‬

‫▲‬ ‫‪| 568‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫مجموعتتا ت التحسكتتم هتتي آليتة فتي النتواة لتجميتع وتتبتع ووضتع حتتد لستتهلك المتوارد للمهتتام؛‬

‫الواجهتتة الداريتتة التتتي توفرهتتا النتتواة تسكتتون عتتبر ظنظتتام ملفتتا ت وهمتتي؛ لسكتتن طتتدور ت أدوا ت إداريتتة‬

‫لمجموعتتا ت التحسكتتم ذا ت مستتتوى أعلتتى‪ ،‬بمتتا فيهتتا ‪ libcgroup‬و ‪ .lmctfy‬بالضتتافة لتتذلك‪ ،‬هنالتتك‬

‫دليل في ‪ freedesktop.org‬حول كيتتف يمسكتتن أن تتعتتاون التطبيقتتا ت بأفضتتل طريقتتة باستتتخدام‬

‫واجهة ظنظام الملفا ت لمجموعا ت التحسكم ) ‪.(cgroup filesystem interface‬‬

‫في أوبنتو ‪14.04‬؛ أصبح مدير مجموعا ت التحسكم )‪ (cgmanager‬متوفصرا كتتأداة أختترى لدارة‬

‫واجهة ‪cgroup‬؛ حيث هدفه هو الستجابة لطلبا ت ‪ dbus‬من أي مستتخدم‪ ،‬ممتا يمدسكنته متن إدارة‬

‫ن‬
‫مجموعا ت التحسكم التي أسشنند ت إليه فقط‪.‬‬

‫‪ .1‬لمحة‬
‫إن مجموعتتا ت التحسكتتم )‪ (cgroups‬هتتي الميتتزة تستتتعمل لتجميتتع المهتتام؛ حيتتث يسكتتون تتبتتع‬

‫الموارد ووضع حدود لها نمداصرا من أظنظمتتة فرعيتتة؛ إذ أنن الهيسكليتتة ) ‪ (hierarchy‬هتتي مجموعتتة متتن‬

‫الظنظمة الفرعية الموصولة مع بعضها بع ص‬


‫ضا؛ علتى س بيل المثتال‪ ،‬إذا كتاظنت الظنظمتة الفرعيتة للتذاكرة‬

‫والجهتتتزة )‪ (devices‬موصتتولة متتع بعضتتتها فتتتي ‪ ،/sys/fs/cgroups/set1‬فيمسكتتن لي مهمتتتة فتتي‬

‫‪ /child1‬أن تسكون عرضصة للحدود الموافقة للنظامين الفرعيين السابقين‪.‬‬

‫حيتتتث نتشتتت دسكل كتتتل مجموعتتتة متتتن الظنظمتتتة الفرعيتتتة الموصتتتولة »هيسكليتتتصة« )متتتع استتتتثناءا ت(؛‬

‫مجموعتتا ت التحسكتتم التتتي تسكتتون أولد ‪ /child1‬تسكتتون عرضتتصة للحتتدود المفروضتتة علتتى ‪،/child1‬‬

‫ويسكون استهلك الموارد محسوصبا على ‪./child1‬‬

‫▲‬ ‫‪| 569‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫الظنظمة الفرعية الموجودة تتضمن‪:‬‬

‫‪ :cpusets‬تبسيط إسناد مجموعة من المعالجا ت ونعنقتد التذاكرة إلتتى مجموعتا ت التحسكتتم؛‬ ‫•‬

‫فالمهام في مجموعة تحدسكم فيها النظام الفرعتي ‪ cpusets‬يمسكتن أن تستتخدم المعالجتا ت‬

‫النمسنندة إلى تلك المجموعة فقط‪.‬‬

‫‪ :blkio‬تحديد كتل الدخل‪/‬الخرج لسكل مجموعة تحسكم‪.‬‬ ‫•‬

‫‪ :cpuacct‬توفير حساب الستهلك للمعالج لسكل مجموعة تحسكم‪.‬‬ ‫•‬

‫‪ :devices‬التحسكم في قدرة المهام علتتى إظنشتتاء أو استتتخدام عقتتد الجهتتزة إمتتا باستتتعمال‬ ‫•‬

‫قائمة بيضاء‬

‫)‪ (whitelist‬أو سوداء )‪.(blacklist‬‬ ‫•‬

‫‪ :freezer‬تتتوفير طريقتتة »لتجميتتد« )‪ (freeze‬و »تتتذويب« )‪ (thaw‬مجموعتتا ت التحسكتتم؛‬ ‫•‬

‫ل يمسكن جدولة‬

‫)‪ (scheduled‬مجموعا ت التحسكم وهي مجمدة‪.‬‬ ‫•‬

‫‪ :hugetlb‬تبسيط وضع حد لستهلك ‪ hugetlb‬لسكل مجموعة تحسكم‪.‬‬ ‫•‬

‫‪ :memory‬السماح للذاكرة‪ ،‬وذاكرة النواة‪ ،‬وذاكرة التبديل )‪ (swap‬بأن نتنتنبع وتقديد‪.‬‬ ‫•‬

‫▲‬ ‫‪| 570‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫‪ :net_cls‬تتوفير واجهتتة لوضتع علمتا ت علتى التترزم الشتبسكية بنتتاصء علتى مجموعتة التحسكتتم‬ ‫•‬

‫النمر شستتتلة؛ يمسكتتتن استتتتعمال هتتتذه العلمتتتا ت لحصقتتتا باستتتتخدام ‪(traffic controller ) tc‬‬

‫لسناد أولويا ت للرزم الشبسكية‪.‬‬

‫‪ :net_prio‬السماح بضبط أولوية بياظنا ت التراسل الشبسكي بناصء على مجموعة التحسكم‪.‬‬ ‫•‬

‫‪ :cup‬تمسكين ضبط جدولة الخصائص على أساس مجموعة التحسكم‪.‬‬ ‫•‬

‫‪ :pref_event‬تفعيل ظنمط لسكل معالج لمراقبة الخيوط ) ‪ (threads‬لمجموعا ت تحسكم معينة‪.‬‬ ‫•‬

‫يمسكتتن إظنشتتاء مجموعتتا ت تحسكتتم نمستتماة دون استتتخدام أظنظمتتة فرعيتتة معهتتا‪ ،‬ويسكتتون الغتترض متتن‬

‫ذلك هو تتبع العمليا ت؛ على سبيل المثال‪ ،‬يقوم ‪ systemd‬بذلك لتتبع خدماته وجلسا ت المستخدم‪.‬‬

‫▲‬ ‫‪| 571‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫‪ .2‬نظام الملفات‬
‫نتن نشتتتأ هيسكليتتتة بوصتتتل ظنستتتخة متتتن ظنظتتتام ملفتتتا ت مجموعتتتة التحسكتتتم لسكتتتل ظنظتتتام فرعتتتي نمتتتراد‬

‫استخدامه كخيار للوصل؛ على سبيل المثال‪:‬‬

‫‪mount -t cgroup -o devices,memory,freezer cgroup /cgroup1‬‬

‫وهذا ما سنينششئ هيسكلية فورصيا مع الجهزة ومجموعا ت التحسكم للتذاكرة موصتولصة متع بعضتها؛‬

‫ويمسكن إظنشاء مجموعة تحسكم فرعية ) ‪ (child cgroup‬باستخدام ‪:mkdir‬‬

‫‪mkdir /cgroup1/child1‬‬

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

‫ملف ‪ tasks‬أو ‪:cgroup.procs‬‬

‫‪sleep 100‬‬
‫‪echo $! > /cgroup1/child1/cgroup.procs‬‬

‫يمسكتتن الدارة أي ص‬
‫ضتتا عتتبر ملفتتا ت فتتي مجلتتدا ت ‪cgroup‬؛ علتتى ستتبيل المثتتال‪ ،‬لتجميتتد جميتتع‬

‫المهام في ‪:child1‬‬

‫‪echo FROZEN > /cgroup1/child1/freezer.state‬‬

‫يمسكن العثور على كميتة كتبيرة متن المعلومتا ت عتن مجموعتا ت التحسكتتم وأظنظمتهتتا الفرعيتة فتي‬

‫مجلد التوثيق ‪ cgroups‬في شجرة مصدر النواة‪.‬‬

‫▲‬ ‫‪| 572‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫‪ .3‬التفويض‬
‫يمسكن لملفا ت ومجلدا ت مجموعا ت التحسكم أن نتم نلك من مستتتخدمين غيتتر المستتتخدم الجتتذر‪،‬‬

‫مما يمدسكن تفويض )‪ (delegation‬إدارة مجموعا ت التحسكم؛ عموصما‪ ،‬نتجشبر النواة القيتتود المفروضتتة‬

‫على الهيسكلية على الولد؛ على سبيل المثال‪ ،‬إن كتتاظنت مجموعتتة الجهتتزة‪ /child1‬ل تملتتك وصتتوصل‬

‫للقرص الصلب‪ ،‬فل تستطيع مجموعة التحسكم ‪ /child1/child2‬إعطاء ظنفسها هذه المتيازا ت‪.‬‬

‫في أوبنتتو ‪ ،14.04‬يوضتع المستتخدمون افتراضت صيا فتي مجموعتة متن مجموعتا ت التحسكتتم التتي‬

‫يملسكوظنها‪ ،‬مما يسمح لهم باحتواء المهام التي يشغلوظنها باستخدام مجموعا ت تحسكم فرعيتتة بأمتتان؛‬

‫نتستتتخندم هتتذه الميتتزة عملصيتتا ويمسكتتن العتمتتاد عليهتتا فمثصل يمسكتتن استتتخدامها لظنشتتاء حاويتتة ‪LXC‬‬

‫دون امتيازا ت‪.‬‬

‫▲‬ ‫‪| 573‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫‪ .4‬المدير‬
‫متتتتتتتدير مجموعتتتتتتتا ت التحسكتتتتتتتم )‪ (cgmanager‬يتتتتتتتوفر خدمتتتتتتتة ‪ D-Bus‬للستتتتتتتماح للبرامتتتتتتتج‬

‫والمستتتخدمين بتتإدارة مجموعتتا ت التحسكتتم دون الحاجتتة إلتتى معرفتتة أو وصتتول مباشتتر إلتتى ظنظتتام‬

‫ملفا ت مجموعا ت التحسكم‪ .‬وللطلبا ت من المهام فتتي ظنفتتس مجتتال الستتماء ) ‪ (namespace‬للمتتدير‪،‬‬

‫فيمسكن للمدير إجراء التحققا ت المنية اللزمة للتأكد من شرعية تلتتك الطلبتتا ت؛ وللطلبتتا ت الختترى‪،‬‬

‫كتلك القادمة متتن مهمتة فتي حاويتة‪ ،‬فيجتب القيتام بطلبتتا ت ‪ D-Bus‬نمنحنستنة؛ حيتتث يجتتب أن نتمتتنرر‬

‫معرفتتا ت ‪ ،process‬و ‪ ،user‬و ‪ group‬علتتى شتتسكل ‪ ،SCM_CREDENTIALS‬لتتذلك يمسكتتن للنتتواة‬

‫ربط المعرفا ت إلى قيم المضيف العامة‪.‬‬

‫ولتبستتتيط استتتتخدام استتتتدعاءا ت ‪ D-Bus‬متتتن جميتتتع المستتتتخدمين‪ ،‬فيبتتتدأ »وستتتيط متتتدير‬

‫مجموعتتا ت التحسكتتم« )‪ (cgproxy‬تلقائ صيتتا فتتي الحاويتتا ت؛ حيتتث يقبتتل طلبتتا ت ‪ D-Bus‬قياستتية متتن‬

‫المهام في ظنفس مجال أستمائه‪ ،‬ثتم يح وله إلتى طلبتا ت ‪ SCM D-Bus‬محستنة ال تي نتمتنرر بعتد ذلتك‬

‫إلى ‪.cgmanager‬‬

‫مثال بستتيط عتتن إظنشتتاء مجموعتتة تحسكتتم ‪-‬التتتي سنتشتتدغل تصتتريصفا )‪ (compile‬يستتتهلك كتتثيصرا‬

‫من طاقة المعالجة‪ -‬سيسكون كالتي‪:‬‬

‫‪cgm create cpuset build1‬‬


‫‪cgm movepid cpuset build1 $$‬‬
‫‪cgm setvalue cpuset build1 cpuset.cpus 1‬‬
‫‪make‬‬

‫▲‬ ‫‪| 574‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫مجموعا ت التحسكم‬

‫‪ .5‬مصادر‬
‫مشروع ‪ cgmanager‬نمستضاف في ‪.linuxcontainers.org‬‬ ‫•‬

‫صفحة توثيق النواة‪.‬‬ ‫•‬

‫ويمسكن العثور على دليل ‪ freedesktop.org‬لستخدام مجموعا ت التحسكم‪.‬‬ ‫•‬

‫▲‬ ‫‪| 575‬‬


‫الشبكات العنقودية‬
‫‪22‬‬

‫▲‬ ‫‪| 576‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت العنقودية‬

‫‪ .1‬أنظمة ‪DRBD‬‬
‫»جهاز كتلي م وزع ونمستننستتخ« ) ‪([DRBD] Distributed Replicated Block Device‬‬

‫ينشتتئ ظنستتخة اظنعسكاستتية متتن الجهتتزة السكتليتتة بيتتن عتت ددة مضتتيفين؛ الستنستتتاخ غيتتر مرئتتي لبقيتتة‬

‫التطبيقتتتا ت علتتتى الظنظمتتتتة المضتتتيفة‪ .‬أي أقتتتراص صتتتلبة‪ ،‬أو أقستتتام‪ ،‬أو أجهتتتزة ‪ ،RAID‬أو حجتتتوم‬

‫منطقية ‪...‬إلخ‪ .‬يمسكن أن نتننسخ اظنعسكاسصيا )‪.(mirrored‬‬

‫للبدء باستخدام ‪ ،DRBD‬عليك أو صل تثبيت الحزم الضرورية؛ وذلك بإدخال المر التي من الطرفية‪:‬‬

‫‪sudo apt-get install drbd8-utils‬‬

‫ملحظة‪ :‬إذا كنت تستخدم ظنواصة وهمية )‪ (virtual kernel‬كجزتء من اللة الوهمية‪ ،‬فستحتاج إلى تصريف‬

‫)‪ (compile‬وحتتتدة ‪debd‬؛ ربمتتتا متتتن الستتتهل تثتتتبيت حزمتتتة ‪ linux-server‬داختتتل اللتتتة‬

‫الوهميتتة‪ .‬يشتترح هتتذا القستتم كيفيتتة ضتتبط ‪ debd‬لستنستتاخ القستتم ‪ /srv‬بنظتتام ملفتتا ت ‪ ext3‬بيتتن‬

‫مضينفين؛ ل يهم حجم القسم‪ ،‬لسكن يجب أن يسكون كل القسنمين بنفس الحجم‪.‬‬

‫▲‬ ‫‪| 577‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫الشبسكا ت العنقودية‬

‫ الضبط‬.‫ا‬

‫؛ وستتنحتاج إلتتى الحصتتول علتتى‬drbd02 ‫ و‬debd01 ‫استتم المضتتيفين فتتي هتتذا المثتتال هتتو‬

.‫؛ راجع الفصل الثامن للتفاصيل‬/etc/hosts ‫ أو ملف‬DNS ‫خدمة استبيان أسماء إما عبر‬

:‫ على المضيف الول‬/etc/drbd.conf ‫ عددل ملف‬،drbd ‫لضبط‬

global { usage-count no; }


common { syncer { rate 100M; } }
resource r0 {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 60;
}
net {
cram-hmac-alg sha1;
shared-secret "secret";
}
on drbd01 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.0.1:7788;
meta-disk internal;
}
on drbd02 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.0.2:7788;
meta-disk internal;
}
}

.‫ لسكن القيم الفتراضية كافيةة لهذا المثال‬،/etc/drbd.conf ‫ هنالك خيارا ت أخرى كثيرة في‬:‫ملحظة‬

▲ | 578
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت العنقودية‬

‫اظنسخ الن الملف ‪ /etc/drbd.conf‬إلى المضيف الثاظني‪:‬‬

‫~‪scp /etc/drbd.conf drbd02:‬‬

‫الن‪ ،‬اظنسخ الملف إلى ‪ /etc‬في ‪:drbd02‬‬

‫‪sudo mv drbd.conf /etc/‬‬

‫باستخدام أداة ‪ drbdadm‬لتهيئة تخزين البياظنا ت الوصفية؛ ظندفذ على كل خادوم ما يلي‪:‬‬

‫‪sudo drbdadm create-md r0‬‬

‫وعلى كل المضيفين‪ ،‬شدغل عفريت ‪:drbd‬‬

‫‪sudo service drbd start‬‬

‫في ‪ ،drbd01‬أو أي مضيف تريد أن يسكون هو المضيف الرئيسي‪ ،‬أد ش‬


‫خل ما يلي‪:‬‬

‫‪sudo drbdadm -- --overwrite-data-of-peer primary all‬‬

‫ستبدأ البياظنا ت بالمزامنتة متع المضتيف الثتاظني بعتد تنفيتذ المتر الستابق؛ ظندفتذ المتر التتي علتى‬

‫‪ drbd02‬لمشاهدة العملية‪:‬‬

‫‪watch -n1 cat /proc/drbd‬‬

‫اضغط ‪ Ctrl+c‬ليقاف المر السابق‪.‬‬

‫▲‬ ‫‪| 579‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت العنقودية‬

‫في النهاية‪ ،‬أضف ظنظام ملفا ت إلى ‪ /dev/drbd0‬و ش‬


‫صله‪:‬‬

‫‪sudo mkfs.ext3 /dev/drbd0‬‬


‫‪sudo mount /dev/drbd0 /srv‬‬

‫ب‪ .‬التختبار‬

‫لتختتبر إذا كتاظنت الملفتا ت نتزانمتن فعل صيتا بيتن المضتيفين‪ ،‬فاظنستتخ بعتض الملفتا ت فتي ‪،drbd01‬‬

‫إلى ‪:/srv‬‬

‫‪sudo cp -r /etc/default /srv‬‬

‫ثم افصل ‪:/srv‬‬

‫‪sudo umount /srv‬‬

‫الن ظندزل مرتبة الخادوم الرئيسي إلى دور ثاظنوي‪:‬‬

‫‪sudo drbdadm secondary r0‬‬

‫وردق الخادوم الثاظنوي إلى رئيسي‪:‬‬

‫‪sudo drbdadm primary r0‬‬

‫▲‬ ‫‪| 580‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الشبسكا ت العنقودية‬

‫ثم ش‬
‫صل القسم‪:‬‬

‫‪sudo mount /dev/drbd0 /srv‬‬

‫وباستخدام ‪ ،ls‬يجب أن تشاهد ‪ /srv/default‬منسوخصة من الخادوم الرئيسي )سابصقا( التتذي‬

‫هو ‪.drbd01‬‬

‫ج‪ .‬مصادر‬

‫للمزيد من المعلوما ت حول ‪ ،DRBD‬راجع الصفحة الرئيسية الخاصة به‪.‬‬ ‫•‬

‫تحتوي صفحة دليل ‪ man drbd.conf‬على شرح لخيارا ت لم ظنغطها في هذا الفصل‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة الدليل ‪.man drbdadm‬‬ ‫•‬

‫صفحة ويسكي أوبنتو »‪ «DRBD‬فيها المزيد من المعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 581‬‬


‫خدمة ‪VPN‬‬
‫‪23‬‬

‫▲‬ ‫‪| 582‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫إن ‪ OpenVPN‬هتتو حتتدل لظنشتتاء شتتبسكا ت وهميتتة خاصتتة )‪Virtual Private Networks‬‬

‫أو اختصتتاصرا ‪ (VPN‬موجتتو ةد فتتي مستتتودعا ت أوبنتتتو؛ هتتو خدمتتة مرظنتتة وعمليتتة وآمنتتة‪ ،‬وينتمتتي إلتتى‬

‫عائلتتتة ‪) SSL/TLS VPN‬التتتتي تختلتتتف عتتتن ‪(IPSec VPN‬؛ يشتتترح هتتتذا الفصتتتل تثتتتبيت وضتتتبط‬

‫‪ OpenVPN‬لظنشاء شبسكة وهمية خاصة‪.‬‬

‫‪ .1‬برمجية ‪OpenVPN‬‬
‫إذا كنتتت تريتتد أكتتثر متتن مجتترد مفاتيتتح نمشتتانركة مستتبصقا؛ فيجعتتل ‪ OpenVPN‬متتن الستتهل إعتتداد‬

‫واستتتتتتخدام بينتتتتتة تحتيتتتتتة للمفتتتتتتاح العمتتتتتومي ) ‪ Public Key Infrastructure‬اختصتتتتتاصرا ‪(PKI‬‬

‫لستتتتخدام شتتتهادا ت ‪ SSL/TLS‬للستتتتيثاق ومبادلتتتة المفاتيتتتح بيتتتن ختتتادوم ‪ VPN‬والعملء؛ يمسكتتتن أن‬

‫نيستتتخندم ‪ OpenVPN‬فتتي ظنمتتط متتنودجه أو جستتر ‪ (routed or bridged VPN) VPN‬ويمسكتتن أن‬

‫نيضتتنبط ليستتتخدم ‪ TCP‬أو ‪UDP‬؛ ويمسكتتن ضتتبط رقتتم المنفتتذ أي ص‬


‫ضتتا‪ ،‬لسكتتن رقتتم المنفتتذ ‪ 1194‬هتتو الرقتتم‬

‫الرسمي لهذه الخدمة؛ عملء ‪ VPN‬موجودون تقريصبا في جميع توزيعا ت ليننسكتتس‪ ،‬وظنظتتام متتاك ‪OS X‬؛‬

‫وويندوز والموجها ت ) ‪ (routers‬التي تعتمد على ‪.OpenWRT‬‬

‫ا‪ .‬تثبيت الخادوم‬

‫لتثبيت برمجية ‪ ،OpenVPN‬أد ش‬


‫خل المر التي في الطرفية‪:‬‬

‫‪sudo apt-get install openvpn‬‬

‫▲‬ ‫‪| 583‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫ب‪ .‬إعداد البنية التحتية للمفتاح العمومي‬

‫أول خطتتتوة لضتتتبط ‪ OpenVPN‬هتتتي إظنشتتتاء بنيتتتة تحتيتتتة للمفتتتتاح العمتتتومي ) ‪(PKI‬؛ التتتتي‬

‫تحتوي على‪:‬‬

‫شهادة منفصلة )نتسمى أي ص‬


‫ضا مفتاح عمومي( وشهادة خاصة للخادوم ولسكل عميل‪.‬‬ ‫•‬

‫شتتهادة ستتلطة شتتهادا ت )‪ (CA‬رئيستتية التتتي يمسكتتن أن نتستتتخندم لتوقيتتع شتتهادا ت كتت ي‬
‫ل متتن‬ ‫•‬

‫الخادوم والعملء‪.‬‬

‫يدعم ‪ OpenVPN‬الستيثاق ثنائي التجاه بناصء على الشهادا ت‪ ،‬وهذا يعنتتي أن علتتى العميتتل‬

‫الستتتيثاق متتن شتتهادة الختتادوم‪ ،‬وعلتتى الختتادوم الستتتيثاق متتن شتتهادة العميتتل قبتتل أن نتننشتتأ ثقتتةة‬

‫مشتركةة بينهما‪.‬‬

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

‫سلطة الشهادا ت الرئيسية‪ ،‬ثم باختبار المعلوما ت فتتي ترويستتة الشتتهادة المستتتوثق منهتتا؛ مثتتل استتم‬

‫الشهادة الشائع أو ظنوع الشهادة )عميل أو خادوم(‪.‬‬

‫إعداد سلطة الشهادات‬

‫لضتتبط ستتلطة شتتهادا ت خاصتتة بتتك وتوليتتد شتتهادا ت ومفاتيتتح لختتادوم ‪ OpenVPN‬ولبعتتض‬

‫العملء‪ ،‬عليتتك أوصل ظنستتخ المجلتتد ‪ easy-rsa‬إلتتى ‪/etc/openvpn‬؛ وهتتذا ستتيؤكد أن أي تغييتترا ت‬

‫إلى السسكربتا ت لن تضيع عند تحديث الحزمة؛ أد ش‬


‫خل ما يلي في الطرفية‪:‬‬

‫‪mkdir /etc/openvpn/easy-rsa/‬‬
‫‪cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/‬‬

‫▲‬ ‫‪| 584‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ VPN ‫خدمة‬

:‫ مغديصرا ما يلي ليناسب بيئتك‬/etc/openvpn/easy-rsa/vars ‫الن عددل الملف‬

export KEY_COUNTRY="US"
export KEY_PROVINCE="NC"
export KEY_CITY="Winston-Salem"
export KEY_ORG="Example Company"
export KEY_EMAIL="steve@example.com"
export KEY_CN=MyVPN
export KEY_NAME=MyVPN
export KEY_OU=MyVPN

‫أد ش‬
:‫خل ما يلي لتوليد شهادة سلطة شهادا ت رئيسية ومفتاح‬

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-ca

‫شهادات الخادوم‬

:‫عليك توليد شهادة ومفتاح خاص للخادوم‬

./build-key-server myservername

‫ أغلبية المعتتامل ت يمسكتتن أن تبقتتى علتتى قيمتهتتا الفتراضتتية؛ هنالتتك‬،‫وكما في الخطوة السابقة‬

1 out of 1 " ‫" و‬Sign the certificate? [y/n] " ‫سؤالن يجب أن تجيب عليهمتتا بتالقبول همتا‬

."certificate requests certified, commit? [y/n]

▲ | 585
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫يجب توليد معامل ت ‪ Diffie Hellman‬لخادوم ‪:OpenVPN‬‬

‫‪./build-dh‬‬

‫جميتتع الشتتهادا ت والمفاتيتتح ستتتولد فتتي المجلتتد الفرعتتي ‪/keys‬؛ ومتتن العتتادا ت الشتتائعة بيتتن‬

‫المدراء ظنسخها إلى ‪:/etc/openvpn‬‬

‫‪cd keys/‬‬
‫\ ‪cp myservername.crt myservername.key ca.crt dh2048.pem‬‬
‫‪/etc/openvpn/‬‬

‫شهادات العميل‬

‫ضتتا لسكتتي نيعتتدرف ظنفستته إلتتى الختتادوم؛ عليتتك عتتادصة إظنشتتاء‬


‫ستتيحتاج عميتتل ‪ VPN‬إلتتى شتتهادة أي ص‬

‫شهادة منفصلة لسكل عميل؛ أد ش‬


‫خل ما يلي في الطرفية لظنشاء شهادة‪:‬‬

‫‪cd /etc/openvpn/easy-rsa/‬‬
‫‪source vars‬‬
‫‪./build-key client1‬‬

‫اظنسخ الملفا ت التية إلى العميل باستخدام طريقة آمنة‪:‬‬

‫‪/etc/openvpn/ca.crt‬‬
‫‪/etc/openvpn/easy-rsa/keys/client1.crt‬‬
‫‪/etc/openvpn/easy-rsa/keys/client1.key‬‬

‫ولن شهادا ت ومفاتيح العميل مطلوبة فقط على حاسوب العميل‪ ،‬فعليك حذفهم من الخادوم‪.‬‬

‫▲‬ ‫‪| 586‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ VPN ‫خدمة‬

‫ ضبط بسيط للخادوم‬.‫ج‬

:‫ على أمثلة عن ملفا ت الضبط‬OpenVPN ‫ستحصل عند تثبيت‬

ls -l /usr/share/doc/openvpn/examples/sample-config-files/
total 68
-rw-r--r-- 1 root root 3427 2011-07-04 15:09 client.conf
-rw-r--r-- 1 root root 4141 2011-07-04 15:09 server.conf.gz

./etc/openvpn/server.conf ‫ إلى‬server.conf.gz ‫ابدأ بنسخ وفك ضغط‬

sudo cp /usr/share/doc/openvpn/examples/\
sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

‫ للتأكد من أن السطر التية تشير إلتى الشتهادا ت‬/etc/openvpn/server.conf ‫عددل ملف‬

:‫والمفاتيح التي أظنشأتها في القسم السابق‬

ca ca.crt
cert myservername.crt
key myservername.key
dh dh2048.pem

:IP ‫ وأزل التعليق عن السطر التي لتفعيل تمرير‬/etc/sysctl.conf ‫عددل الملف‬

#net.ipv4.ip_forward=1

:sysctl ‫ثم أعد تحميل‬

sudo sysctl -p /etc/sysctl.conf

▲ | 587
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫هتتتذا هتتتو الحتتتد الدظنتتتى التتتذي تحتتتتاج لضتتتبط ختتتادوم ‪OpenVPN‬؛ يمسكنتتتك استتتتخدام جميتتتع‬

‫العتتدادا ت الفتراضتتية فتتي ملتتف ‪server.conf‬؛ الن شتتدغل الختتادوم‪ ،‬وستتتجد رستتائل التستتجيل‬

‫والخطأ موجودصة في ملف ‪:syslog‬‬

‫‪sudo service openvpn start‬‬


‫‪* Starting virtual private network daemon(s)...‬‬
‫*‬ ‫'‪Autostarting VPN 'server‬‬
‫] ‪[ OK‬‬

‫تأكد الن من أن ‪ OpenVPN‬قد أظننشأ البطاقة ‪:tun0‬‬

‫‪ifconfig tun0‬‬
‫‪tun0‬‬ ‫‪Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-‬‬
‫‪00-00-00-00-00-00-00‬‬
‫‪inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255‬‬
‫‪UP POINTOPOINT RUNNING NOARP MULTICAST‬‬ ‫‪MTU:1500‬‬
‫‪Metric:1‬‬
‫]‪[...‬‬

‫د‪ .‬ضبط بسيط للعميل‬

‫هنالك عددة ظنسخ من عملء ‪ OpenVPN‬بواجهة أو بدون واجهة رسومية؛ يمسكنتتك القتتراءة المزيتتد‬

‫عتتن العملء فتتي قستتتم آختتر؛ لسكننتتا الن سنستتتخدم عميتتل ‪ OpenVPN‬فتتي أوبنتتتو التتذي هتتو ظنفتتس الملتتف‬

‫التنفيذي للخادوم؛ لذلك عليك تثبيت الحزمة ‪ openvpn‬مرصة أخرى في جهاز العميل‪:‬‬

‫‪sudo apt-get install openvpn‬‬

‫▲‬ ‫‪| 588‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫سننسخ هذه المرة ملف مثال الضبط ‪ client.conf‬إلى ‪:/etc/openvpn/‬‬

‫\‪sudo cp /usr/share/doc/openvpn/examples/‬‬
‫‪sample-config-files/client.conf /etc/openvpn/‬‬

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

‫وعددل ‪ /etc/openvpn/client.conf‬للتأكد من أن السطر التية نتشير إلى تلك الملفا ت؛ يمسكنتتك‬

‫حذف المسار إذا كاظنت تلك الملفا ت موجودصة في ‪:/etc/openvpn‬‬

‫‪ca ca.crt‬‬
‫‪cert client1.crt‬‬
‫‪key client1.key‬‬

‫وعليتتتتك تحديتتتتد استتتتم أو عنتتتتوان ختتتتادوم ‪ OpenVPN‬واحتتتتد علتتتتى القتتتتل؛ تأكتتتتد أن السكلمتتتتة‬

‫المحجوزة ‪ client‬موجودةة في ملف الضبط‪ ،‬لن هذا ما سنيفدعل ظنمط العميل‪:‬‬

‫‪client‬‬
‫‪remote vpnserver.example.com 1194‬‬

‫شدغل الن عميل ‪:OpenVPN‬‬

‫‪sudo service openvpn start‬‬


‫‪* Starting virtual private network daemon(s)...‬‬
‫*‬ ‫'‪Autostarting VPN 'client‬‬
‫] ‪[ OK‬‬

‫▲‬ ‫‪| 589‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫وتأكد من إظنشاء البطاقة الشبسكية ‪:tun0‬‬

‫‪ifconfig tun0‬‬
‫‪tun0‬‬ ‫‪Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-‬‬
‫‪00-00-00-00-00-00‬‬
‫‪inet addr:10.8.0.6‬‬ ‫‪P-t-P:10.8.0.5‬‬
‫‪Mask:255.255.255.255‬‬
‫‪UP POINTOPOINT RUNNING NOARP MULTICAST‬‬ ‫‪MTU:1500‬‬
‫‪Metric:1‬‬

‫وتأكد إن كان بإمسكاظنك عمل ‪ ping‬لخادوم ‪:OpenVPN‬‬

‫‪ping 10.8.0.1‬‬
‫‪PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.‬‬
‫‪64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=0.920 ms‬‬

‫ملحظة‪ :‬يستخدم خادوم ‪ OpenVPN‬أول عنتوان ‪ IP‬قابتل للستتخدام ف ي شتبسكة العميتل ويسكتتون هتذا العنتوان‬
‫هو الوحيتد المستتجيب للداة ‪ping‬؛ علتى ستبيل المثتال‪ ،‬لتو ن‬
‫ض شبط قنتاع ‪ /24‬لشتبسكة العميتل‪ ،‬فس يقوم باستتخدام‬
‫العنوان ‪.1‬؛ عنوان ‪) PTP‬الند للنتد‪ ،‬أو ‪ (peer to peer‬ال ذي تتراه ف ي ظناتتج ‪ ifconfig‬أعله ل يجيتب عتادصة علتى‬
‫طلبا ت ‪.ping‬‬

‫تأكد من جداول التوجيه عندك‪:‬‬

‫‪sudo netstat -rn‬‬


‫‪Kernel IP routing table‬‬
‫‪Destination Gateway Genmask‬‬ ‫‪Flags‬‬ ‫‪MSS‬‬ ‫‪Window‬‬ ‫‪irtt‬‬ ‫‪Iface‬‬
‫‪10.8.0.5‬‬ ‫‪0.0.0.0 255.255.255.255‬‬ ‫‪UH‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪tun0‬‬
‫‪10.8.0.1‬‬ ‫‪10.8.0.5 255.255.255.255‬‬ ‫‪UGH‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪tun0‬‬
‫‪192.168.42.0 0.0.0.0 255.255.255.0‬‬ ‫‪U‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪eth0‬‬
‫‪0.0.0.0‬‬ ‫‪192.168.42.1 0.0.0.0‬‬ ‫‪UG‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪eth0‬‬

‫▲‬ ‫‪| 590‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫ه‪ .‬أول تخطوة افي استكشاف التخطاء‬

‫إذا لم يعمل ما سبق لك‪ ،‬فعليك أن تفعل ما يلي‪:‬‬

‫تحقق من سجل ‪ syslog‬عندك‪ ،‬أي ‪.grep -i vpn /var/log/syslog‬‬ ‫‪.1‬‬

‫هل يستطيع العميل التصال إلى الخادوم؟ ربما يحجب الجدار النتتاري وصتتوله؟ تأكتتد متتن‬ ‫‪.2‬‬

‫سجل ‪ syslog‬على الخادوم‪.‬‬

‫‪ .3‬يجتتب أن يستتتخدم الختتادوم والعميتتل ظنفتتس التتبروتوكول والمنفتتذ‪ ،‬مثصل ‪ UDP‬بمنفتتذ ‪1194‬؛‬

‫ي الضبط ‪ proto‬و ‪.port‬‬


‫راجع خيانر د‬

‫يجب أن يستخدم الخادوم والعميل ظنفس إعدادا ت الضبط الخاصة بالضتتغط‪ ،‬راجتتع خيتتار‬ ‫‪.4‬‬

‫الضبط ‪.comp-lzo‬‬

‫يجب أن يستخدم الخادوم والعميل ظنفس الضبط المتعلق بنمط التوجيه والجسور‪.‬‬ ‫‪.5‬‬

‫و‪ .‬الضبط المتقدم‬

‫ضبط ‪ VPN‬موطجه على الخادوم‬

‫الضتتبط الستتابق هتتو ضتتبط ‪ VPN‬بستتيط جتت صدا‪ ،‬يمسكتتن للعميتتل الوصتتول إلتتى الختتدما ت علتتى ختتادوم‬

‫‪ VPN‬عتتتبر ظنفتتتق مشتتت نفر؛ إذا أرد ت الوصتتتول إلتتتى المزيتتتد متتتن الختتتواديم أو أي شتتتيء آختتتر علتتتى الشتتتبسكا ت‬

‫الختترى‪ ،‬فتتأعطي العملء بعتتض تعليمتتا ت التتتوجيه؛ علتتى ستتبيل المثتتال‪ ،‬لتتو كتتان بالمسكتتان تلخيتتص شتتبسكة‬

‫شركتك بالنطتاق ‪ 192.168.0.0/16‬؛ فيمسكنتتك إعطتتاء هتتذا التتوجيه إلتتى العملء‪ ،‬لسكتن عليتتك أي ص‬
‫ضتا تغييتر‬

‫التوجيه لطريقة العودة‪ ،‬أي أن خادومك عليه أن يعرف طريقة العودة إلى شبسكة عميل ‪.VPN‬‬

‫▲‬ ‫‪| 591‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫أو ربما تريد أن تعطي البوابة الفتراضية إلى جميع عملئك وترسل جميتتع البياظنتتا ت الشتتبسكية‬

‫إلى بوابة ‪ VPN‬أو صل‪ ،‬ومن هناك إلى الجدار الناري للشركة ثم إلى الظنتترظنت؛ يوضتح لتك هتذا القستم‬

‫بعض الخيارا ت المتاحة أمامك‪.‬‬

‫سيستتمح إعطتتاء التوجيهتتا ت للعميتتل لتته بالوصتتول إلتتى شتتبسكا ت فرعيتتة أختترى خلتتف الختتادوم؛‬

‫تذكر أن هذه الشبسكا ت الفرعية يجب أن تعرف أن عليها إعادة توجيه الترزم التابعتة لنطتاق عنتاوين‬

‫عميل ‪ (10.8.0.0/24) OpenVPN‬إلى خادوم ‪.OpenVPN‬‬

‫"‪push "route 10.0.0.0 255.0.0.0‬‬

‫ستضتتبط التعليمتتة الستتابقة جميتتع العملء كتتي يعيتتدوا تتتوجيه بوابتتة الشتتبسكة الفتراضتتية عتتبر‬

‫‪ ، VPN‬ممتتتا يتتتؤدي إلتتتى متتترور جميتتتع بياظنتتتا ت الشتتتبسكة كتصتتتفح التتتويب أو طلبتتتا ت ‪ DNS‬عتتتبر ‪VPN‬‬

‫)ختادوم ‪ OpenVPN‬أو الجتدار النتاري المركتزي عنتدك التذي يحتتاج إلتى تمريتر بطاقتة ‪TUN/TAP‬‬

‫إلى الظنترظنت لسكي يعمل ذلك عمصل صحيصحا(‪.‬‬

‫اضتتبط ظنمتتط الختتادوم ووفتتر شتتبسكة ‪ VPN‬فرعيتتة لسكتتي يستتحب ‪ OpenVPN‬عنتتاوين العملء‬

‫منها؛ سيأخذ الخادوم العنوان ‪ 10.8.0.1‬لنفسه‪ ،‬والبقية ستتوفر للعملء؛ وكتتل عميتتل ستتيقدر علتتى‬

‫الوصول إلى الخادوم عبر ‪ .10.8.0.1‬ضع تعليصقا قبل هذا السطر إذا كنت تستخدم جستتر إيتتثرظنت )‬

‫‪:(ethernet bridging‬‬

‫‪server 10.8.0.0 255.255.255.0‬‬

‫▲‬ ‫‪| 592‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫حافظ على سجل لرتباطا ت عناوين ‪ IP‬للعملء فتتي هتتذا الملتتف؛ إذا توقتتف ‪ OpenVPN‬عتتن‬

‫العمتل أو أعيتد تشتغيله‪ ،‬فتإن العملء التذي ستيعيدون إظنشتاء التصتتال سنيستتنند لهتم ظنفتس عنتوان ‪IP‬‬

‫النمسنند لهم سابصقا‪.‬‬

‫‪ifconfig-pool-persist ipp.txt‬‬

‫أضف خواديم ‪ DNS‬إلى العميل‪:‬‬

‫"‪push "dhcp-option DNS 10.0.0.2‬‬


‫"‪push "dhcp-option DNS 10.1.0.2‬‬

‫اسمح بالتواصل من العميل إلى العميل‪:‬‬

‫‪client-to-client‬‬

‫تفعيل الضغط على خط ‪:VPN‬‬

‫‪comp-lzo‬‬

‫تتتؤدي التعليمتتة ‪ keepalive‬بإرستتال شتتبيهة برستتائل ‪ ping‬متتراصرا وتسكتتراصرا عتتبر الختتط التتذي‬

‫يصل بين الجاظنبين‪ ،‬لذلك سيعلم كل جاظنب متتتى ينقطتتع التصتتال عتتن الجتتاظنب الختتر؛ الستتطر التتتي‬

‫سيرستتل ‪ ping‬كتتل ‪ 1‬ثاظنيتتة‪ ،‬بتتافتراض أن النتتد البعيتتد ستتيسكون متوقصفتتا إذا لتتم نيتتشرد رد علتتى الرستتالة‬

‫خلل مدة ‪ 3‬ثواظني‪:‬‬

‫‪keepalive 1 3‬‬

‫▲‬ ‫‪| 593‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫فسكرةة جيدةة هي تقليص امتيازا ت عفريت ‪ OpenVPN‬بعد التهيئة‪:‬‬

‫‪user nobody‬‬
‫‪group nogroup‬‬

‫يتضتتمن ‪ OpenVPN 2.0‬خاصتتية تستتمح لختتادوم ‪ OpenVPN‬بالحصتتول المتتن علتتى استتم‬

‫مستخدم وكلمة مرور من العميل المتصل‪ ،‬ويستخدم هذه المعلوما ت كأساس للستتتيثاق بالعميتتل؛‬

‫لستخدام طريقة الستتتيثاق هتتذه‪ ،‬أوصل أضتتف تعليمتتة ‪ auth-user-pass‬إلتتى ضتبط العميتتل؛ التتتي‬

‫ستتتوجه عميتتل ‪ OpenVPN‬لطلتتب استتم مستتتخدم وكلمتتة متترور‪ ،‬وتمريرهتتا إلتتى الختتادوم عتتبر قنتتاة‬

‫‪ TLS‬آمنة‪.‬‬

‫!‪# client config‬‬


‫‪auth-user-pass‬‬

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

‫العملء باستتخدام واحتدة ‪ PAM‬لتستجيل التدخول؛ وهتذا يفيتد فتي حالتة كتان عنتدك آليتة مركزيتة‬

‫للستيثاق مثل ‪.Kerberos‬‬

‫‪plugin /usr/lib/openvpn/openvpn-auth-pam.so login‬‬

‫▲‬ ‫‪| 594‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫ضبط متقدم لخدمة ‪ VPN‬جسرية على الخادوم‬

‫يمسكتتتتن إعتتتتداد ‪ OpenVPN‬لسكتتتتي يعمتتتتل بنمتتتتط ‪ VPN‬جستتتتري )‪ (bridged VPN‬أو متتتتونجه‬

‫)‪(routed VPN‬؛ أحياصظنتتتا نيشتتتار لتتتذلك بخدمتتتة ‪ VPN‬تعمتتتل بالطبقتتتة الثاظنيتتتة أو الثالثتتتة متتتن ‪OSI‬؛‬

‫فتتي ‪ VPN‬جستتري‪ ،‬جميتتع الطتتارا ت )‪ (frames‬الشتتبسكية تسكتتون متتن الطبقتتة الثاظنيتتة )‪ ،(layer-2‬أي‬

‫جميع إطارا ت إيثرظنت نترنسل إلى شركاء ‪(VPN partners) VPN‬؛ بينما نترنسل الرزم الشبسكية من‬

‫الطبقتتة الثالثتتة فقتتط إلتتى شتتركاء ‪(VPN Partners ) VPN‬؛ فتتي النمتتط الجستتري‪ ،‬سنترنستتل جميتتع‬

‫البياظنا ت الشبسكية بمتتا التتتي تسكتون شتبيهة بشتبسكة ‪ LAN‬مثتتل طلبتا ت ‪ ،DHCP‬و طلبتتا ت ‪... ARP‬إلتتخ‬

‫إلى شركاء ‪ ،VPN‬لسكن في النمط الموجه‪ ،‬سيتم تجاهل تلك الرزم‪.‬‬

‫▲‬ ‫‪| 595‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫‪ .2‬تحضير بطاقة شبكية لجسر على الخادوم‬


‫تأكد من أن لديك الحزمة ‪:bridge-utils‬‬

‫‪sudo apt-get install bridge-utils‬‬

‫قبل أن تضبط ‪ OpenVPN‬في النمط الجسري‪ ،‬عليك تغيير ضبط بطاقا ت الشبسكة؛ لنفتتترض‬

‫أن لتتدى خادومتتك بطاقتتة استتمها ‪ eth0‬موصتتولة إلتتى الظنتتترظنت‪ ،‬وبطاقتتة باستتم ‪ eth1‬موصتتولة إلتتى‬

‫شبسكة ‪ LAN‬التي تريد إظنشاء جسر لها؛ سيبدو ملف ‪ /etc/network/interfaces‬كما يلي‪:‬‬

‫‪auto eth0‬‬
‫‪iface eth0 inet static‬‬
‫‪address 1.2.3.4‬‬
‫‪netmask 255.255.255.248‬‬
‫‪default 1.2.3.1‬‬
‫‪auto eth1‬‬
‫‪iface eth1 inet static‬‬
‫‪address 10.0.0.4‬‬
‫‪netmask 255.255.255.0‬‬

‫هتتذا ضتتبط بستتيط للبطاقتتة ويجتتب أن نيعتتندل لسكتتي يغنيتتر إلتتى النمتتط الجستتري حيتتث تتحتتول‬

‫البطاقة ‪ eth1‬إلتى بطاقتة ‪ br0‬الجديتدة؛ بالضتافة إلتى أظننتا ضتبطنا ‪ br0‬لتسكتون البطاقتة الجسترية‬

‫للبطاقة ‪eth1‬؛ علينا التأكد أن البطاقة ‪ eth1‬دوصما في ظنمط تمرير الحزم‪:‬‬

‫▲‬ ‫‪| 596‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫‪auto eth0‬‬
‫‪iface eth0‬‬ ‫‪inet static‬‬
‫‪address‬‬ ‫‪1.2.3.4‬‬
‫‪netmask‬‬ ‫‪255.255.255.248‬‬
‫‪default‬‬ ‫‪1.2.3.1‬‬

‫‪auto eth1‬‬
‫‪iface eth1 inet manual‬‬
‫‪up ip link set $IFACE up promisc on‬‬

‫‪auto br0‬‬
‫‪iface br0 inet static‬‬
‫‪address 10.0.0.4‬‬
‫‪netmask 255.255.255.0‬‬
‫‪bridge_ports eth1‬‬

‫يجتتتب أن تشتتتدغل الن تلتتتك البطاقتتتة؛ تح ن‬


‫ضتتتر لن هتتتذا قتتتد ل يعمتتتل كمتتتا هتتتو متوقتتتع‪ ،‬وستتتتفقد‬

‫التحسكم عن بعد؛ تأكد أظنك تستطيع حل المشاكل بالوصول إلى الجهاز محلصيا‪.‬‬

‫‪sudo ifdown eth1 && sudo ifup -a‬‬

‫▲‬ ‫‪| 597‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ VPN ‫خدمة‬

‫ إعداد ضبط الخادوم للجسر‬.3


:‫ مغديصرا ما يلي من الخيارا ت إلى‬،/etc/openvpn/server.conf ‫عددل الملف‬

;dev tun
dev tap
up "/etc/openvpn/up.sh br0 eth1"
;server 10.8.0.0 255.255.255.0
server-bridge 10.0.0.4 255.255.255.0 10.0.0.128 10.0.0.254

‫ فتي وضتع‬eth1 ‫ وللتأكتتد متتن أن‬،‫ إلتى الجستر‬tap ‫شئ ستسكربصتا مستتاعصدا لضتافة البطاقتتة‬
‫ثم أظن ش‬

‫تمرير الحزم؛ أظن ش‬


:/etc/openvpn/up.sh ‫شئ الملف‬

#!/bin/sh

BR=$1
ETHDEV=$2
TAPDEV=$3

/sbin/ip link set "$TAPDEV" up


/sbin/ip link set "$ETHDEV" promisc on
/sbin/brctl addif $BR $TAPDEV

:‫ثم اجعل السسكربت تنفيصذا‬

sudo chmod 755 /etc/openvpn/up.sh

:‫ بإدخال المر‬openvpn ‫ عليك إعادة تشغيل خدمة‬،‫بعد ضبط الخادوم‬

sudo service openvpn restart

▲ | 598
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫‪ .4‬ضبط العميل‬
‫أوصل‪ ،‬ثدبت ‪ openvpn‬على العميل‪:‬‬

‫‪sudo apt-get install openvpn‬‬

‫ثم بعد أن يسكون الخادوم مضبوصطا‪ ،‬وشهادا ت العميل منسوخصة إلى ‪/etc/openvpn‬؛ فأظنششئ‬

‫ملف ضبط للعميل بنسخ المثال‪ ،‬وذلك بإدخال المر التي في طرفية جهاز العميل‪:‬‬

‫‪sudo cp /usr/share/doc/openvpn/examples/sample-config-‬‬
‫‪files/client.conf /etc/openvpn‬‬

‫عددل الملف ‪ /etc/openvpn/client.conf‬مغديصرا الخيارا ت التية‪:‬‬

‫‪dev tap‬‬
‫‪;dev tun‬‬
‫‪ca ca.crt‬‬
‫‪cert client1.crt‬‬
‫‪key client1.key‬‬

‫في النهاية‪ ،‬أعد تشغيل ‪:openvpn‬‬

‫‪sudo service openvpn restart‬‬

‫يجب الن أن تستطيع الوصول إلى شبسكة ‪ LAN‬البعيدة عبر ‪.VPN‬‬

‫▲‬ ‫‪| 599‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫ا‪ .‬نسخ عميل ‪OpenVPN‬‬

‫الواجهة الرسومية لدارة الشبكة افي ليينكس‬

‫تأتي أغلبية توزيعا ت لي ننسكس بما فيها توزيعتتة أوبنتتتو للجهتتزة المسكتبيتتة علتتى برمجيتتة »متتدير‬

‫الشتتبسكة« ‪ ،‬التتذي هتتو واجهتتة رستتومية جميلتتة لدارة خيتتارا ت الشتتبسكة؛ يمسكنتتك أي ص‬
‫ضتتا إدارة اتصتتال ت‬

‫‪ VPN‬منهتتا؛ تأكتتد أن لتتديك الحزمتتة ‪ network-manager-openvpn‬مثبتتتصة‪ ،‬ستتتلحظ هنتتا أن‬

‫تثبيتها سيثدبت حزصما أخرى مطلوبة‪:‬‬

‫‪sudo apt-get install network-manager-openvpn‬‬

‫لعلم برمجية »مدير الشبسكة« بتثبيت الحزم الجديدة‪ ،‬عليك إعادة تشغيله‪:‬‬

‫‪restart network-manager‬‬
‫‪network-manager start/running, process 3078‬‬

‫في واجهة مدير الشبسكة‪ ،‬اختر لسان ‪ VPN‬واضتغط عل ى زر "إضتافة"‪ ،‬ثتم اختتر ‪OpenVPN‬‬

‫كنتتوع خدمتتة ‪ VPN‬ثتتم اضتتغط علتتى » إظنشتتاء«‪ ،‬فتتي النافتتذة التاليتتة أضتتف استتم ختتادوم ‪OpenVPN‬‬

‫»كبوابتتتة«‪ ،‬واختتتتر »النتتتوع« إلتتتى »شتتتهادا ت )‪ «(TLS‬ثتتتم ودجتتته »شتتتهادة المستتتتخدم« إلتتتى شتتتهادتك‪،‬‬

‫و »شتتتهادة ‪ «CA‬إلتتتى ستتتلطة الشتتتهادا ت التتتتي تعتمتتتدها‪ ،‬و » المفتتتتاح الختتتاص« إلتتتى ملتتتف مفتاحتتتك‬

‫الختتاص‪ ،‬استتتخدم التتزر » خيتتارا ت متقدمتتة« لتفعيتتل الضتتغط أو غيتتره متتن الخيتتارا ت الخاصتتة التتتي‬

‫ضبطتها على الخادوم؛ جدرب الن إظنشاء اتصال عبر ‪.VPN‬‬

‫▲‬ ‫‪| 600‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ VPN ‫خدمة‬

OS X ‫ لنظمة ماك‬Tunnelblick ‫برمجية‬

‫ وهتتتو‬Tunnelblick ‫ متتتع واجهتتتة رستتتومية يمسكنتتتك استتتتخدام‬OpenVPN ‫للتصتتتال بخدمتتتة‬

‫ لنظام ماك؛ ظندزل آخر ظنسخة‬OpenVPN ‫ظنسخة ممتازة حرة مفتوحة المصدر لواجهة رسومية لعميل‬

‫ متتع الشتتهادا ت والمفاتيتتح‬client.ovpn ‫من المثدبت من الموقع الرسمي وثبدتها؛ ثم ضتتع ملتتف الضتتبط‬

:‫سويصة في‬

/Users/username/Library/ApplicationSupport/Tunnelblick/Configur
ations/

.‫ من مجلد »التطبيقا ت« لديك‬Tunnelblick ‫ثم شدغل‬

# sample client.ovpn for Tunnelblick


client
remote blue.example.com
port 1194
proto udp
dev tun
dev-type tun
ns-cert-type server
reneg-sec 86400
auth-user-pass
auth-nocache
auth-retry interact
comp-lzo yes
verb 3
ca ca.crt
cert client.crt
key client.key

▲ | 601
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫واجهة رسومية لعميل ‪ OpenVPN‬لويندوز‬

‫ظنتتدزل وثدبتتت آختتر ظنستتخة متتن عميتتل ‪ OpenVPN‬لوينتتدوز ؛ يمسكنتتك تثتتبيت واجهتتة رستتومية‬

‫اختياريتتتة باستتتم ‪OpenVPN Windows GUI‬؛ ثتتتم عليتتتك تشتتتغيل خدمتتتة ‪ ،OpenVPN‬وذلتتك‬

‫بالذهاب إلى » ابدأ ‪ -‬جهاز السكومبيوتر ‪ -‬إدارة ‪ -‬الخدما ت« و »التطبيقا ت ‪ -‬الخدما ت«‪ ،‬ثم اعتتثر علتتى‬

‫خدمتتة ‪ OpenVPN‬وشتدغلها‪ ،‬ثتم اضتتبط ظنمتط التشتتغيل إلتتى »تلقتائي«؛ وعنتدما تشتدغل ‪OpenVPN‬‬

‫‪ MI GUI‬لول مرة‪ ،‬فعليك تشغيله كمدير؛ وذلك بالنقر عليه بالزر اليمن واظنتقاء الخيار المناسب‪.‬‬

‫سيتوجب عليك كتابة ملتتف ضتتبط ‪ OpenVPN‬إلتتى ملتتف ظنصتتي ووضتتعه فتتي ‪C:\Program‬‬

‫‪ Files\OpenVPN\config\client.ovpn‬متتع شتتهادة ‪CA‬؛ وعليتتك وضتتع شتتهادة المستتتخدم فتتي‬

‫مجلد المنزل للمستخدم كما في المثال التي‪:‬‬

‫‪# C:\Program Files\OpenVPN\config\client.ovpn‬‬


‫‪client‬‬
‫‪remote server.example.com‬‬
‫‪port 1194‬‬
‫‪proto udp‬‬
‫‪dev tun‬‬
‫‪dev-type tun‬‬
‫‪ns-cert-type server‬‬
‫‪reneg-sec 86400‬‬
‫‪auth-user-pass‬‬
‫‪auth-retry interact‬‬
‫‪comp-lzo yes‬‬
‫‪verb 3‬‬
‫‪ca ca.crt‬‬
‫"‪cert "C:\\Users\\username\\My Documents\\openvpn\\client.crt‬‬
‫"‪key "C:\\Users\\username\\My Documents\\openvpn\\client.key‬‬
‫‪management 127.0.0.1 1194‬‬
‫‪management-hold‬‬
‫‪management-query-passwords‬‬
‫‪auth-retry interact‬‬
‫‪; Set the name of the Windows TAP network interface device here‬‬
‫‪dev-node MyTAP‬‬

‫▲‬ ‫‪| 602‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫خدمة ‪VPN‬‬

‫وإذا لتتم تتترد الستتتيثاق متتن المستتتخدم أو كنتتت تريتتد تشتتغيل الخدمتتة دون تفتتاعله‪ ،‬فأضتتف‬

‫تعليصقا قبل الخيارا ت التية‪:‬‬

‫‪auth-user-pass‬‬
‫‪auth-retry interact‬‬
‫‪management 127.0.0.1 1194‬‬
‫‪management-hold‬‬
‫‪management-query-passwords‬‬

‫استخدام ‪ OpenVPN‬مع ‪OpenWRT‬‬

‫يوصف ‪ OpenWRT‬أظنته توزيعتتة ليننسكتتس للجهتتزة المدمجتتة مثتتل موجهتتا ت ‪WLAN‬؛ هنالتتك‬

‫ن‬
‫بعتتتض الظنتتتواع متتتن تلتتتك الموجهتتتا ت التتتتي أعتتتند ت لتشتتتغيل ‪OpenWRT‬؛ بالعتمتتتاد علتتتى التتتذاكرة‬

‫المتتتوفرة فتتي المتتوجه لتتديك‪ ،‬ربمتتا تتمسكتتن متتن تشتتغيل برمجيتتا ت مثتتل ‪ OpenVPN‬ويمسكنتتك بنتتاء‬

‫موجه لمسكتب فرعي مع إمسكاظنية التصال عبر ‪ VPN‬إلى المسكتب الرئيسي‪.‬‬

‫سدجل دخولك إلى ‪ OpenWRT‬وثدبت ‪:OpenVPN‬‬

‫‪opkg update‬‬
‫‪opkg install openvpn‬‬

‫▲‬ ‫‪| 603‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ VPN ‫خدمة‬

‫ وضتع ضتبط العميتل هنتاك؛ واظنستتخ الشتهادة والمفاتيتح‬/etc/config/openvpn ‫تفنقد الملف‬

:/etc/openvpn ‫إلى‬

config openvpn client1


option enable 1
option client 1
# option dev tap
option dev tun
option proto udp
option ca /etc/openvpn/ca.crt
option cert /etc/openvpn/client.crt
option key /etc/openvpn/client.key
option comp_lzo 1

:OpenVPN ‫أعد تشغيل‬

service openvpn restart

.‫عليك أن ترى إذا كان عليك تعديل إعدادا ت الجدار الناري والتوجيه في موجهك‬

‫ مصادر‬.‫ب‬

.‫ لمزيد من المعلوما ت‬OpenVPN ‫راجع موقع‬ •

.«OpenVPN hardening security guide » ‫راجع كتاب‬ •

‫أي ص‬
OpenVPN: Building And Integration » ‫ باستتم‬Pakt ‫ السكتاب المنشور متتن‬،‫ضا‬ •

.‫« هو مرجع جيد‬Virtual Private Networks

▲ | 604
‫‪24‬‬
‫برمجيات أخرى‬
‫مفيدة‬

‫▲‬ ‫‪| 605‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

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

‫تندمتتج اظنتتدماصجا جيتت صدا متتع ظنستتخة ختتادوم أوبنتتتو‪ ،‬لسكتتن ربمتتا ل تسكتتون معروفتتصة جتتصدا؛ ستتيعرض هتتذا‬

‫الفصل بعض التطبيقا ت المفيدة التي تسدهل إدارة خادوم‪ ،‬أو عددة خواديم‪ ،‬أوبنتو‪.‬‬

‫‪ .1‬تطبيق ‪pam_motd‬‬
‫عندما تسجل دخولك إلى ختتادوم أوبنتتو‪ ،‬ربمتتا تلحتظ »رستتالة اليتوم« ) ‪Message Of The‬‬

‫‪ Day‬اختصاصرا ‪(MOTD‬؛ تأتي هذه المعلوما ت ونتعنرض من حزمتين‪:‬‬

‫الحزمة ‪ :landscape-common‬توفر المسكتبا ت الساسية لبرمجيتتة ‪،landscape-client‬‬

‫التتتتي يمسكتتتن أن نتستتتتخندم لدارة الظنظمتتتة باستتتتخدام تطتتتبيق التتتويب ‪Landscape‬؛ تتضتتتمن هتتتذه‬

‫الحزمة الداة ‪ /usr/bin/landscape-sysinfo‬التي نتستخندم لجمع المعلوما ت التتي نتعتتنرض فتي‬

‫‪ ، MOTD‬مثل المعالج‪ ،‬والذاكرة‪ ،‬والمساحة التخزينية للقرص الصلب ‪...‬إلخ‪ .‬على سبيل المثال‪:‬‬

‫‪System load:‬‬ ‫‪0.0‬‬ ‫‪Processes:‬‬


‫‪76‬‬
‫‪Usage of /:‬‬ ‫‪30.2% of 3.11GB‬‬ ‫‪Users logged in:‬‬ ‫‪1‬‬
‫‪Memory usage:‬‬ ‫‪20%‬‬ ‫‪IP address for eth0:‬‬
‫‪10.153.107.115‬‬
‫‪Swap usage:‬‬ ‫‪0%‬‬

‫‪Graph this data and manage this system at‬‬


‫‪https://landscape.canonical.com/‬‬

‫ملحظة‪ :‬يمسكنك تشغيل المر ‪ landscape-sysinfo‬في أي وقت يدوصيا‪.‬‬

‫▲‬ ‫‪| 606‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫حزمتتة ‪ :update-notifier-common‬التتتي تتتوفر معلومتتا ت عتتن التحتتديثا ت المتتتوفرة للحتتزم‪،‬‬

‫والتحققا ت من أظنظمة الملفا ت )‪ ،(fsck‬ومتى يجب إعادة القلع )مثصل‪ ،‬بعد تحديث النواة(‪.‬‬

‫ي علتتى الرقتتم‬ ‫د‬


‫ب مبنتت د‬
‫تنفتتذ ‪ pam_motd‬الستتسكربتا ت فتتي ‪ /etc/update-motd.d‬فتتي ترتيتت ت‬

‫التتذي يستتبق استتم الستتسكربت؛ نيسكنتتتب ظناتتتج الستتسكربتا ت إلتتى ‪ ،/var/run/motd‬بتتترتي ت‬


‫ب رقمتتي‪ ،‬ثتتم‬

‫نتجنمع مع ‪./etc/motd.tail‬‬

‫يمسكنتتتك إضتتتافة البياظنتتتا ت الديناميسكيتتتة إلتتتى رستتتالة اليتتتوم؛ فمثصل‪ ،‬لضتتتافة معلومتتتا ت الطقتتتس‬

‫المحلي‪:‬‬

‫أوصل‪ ،‬ثدبت حزمة ‪:weather-util‬‬

‫‪sudo apt-get install weather-util‬‬

‫تستتتخدم أداة الطقتتس بياظنتتا ت ‪ METAR‬متتن ‪National Oceanic and Atmospheric‬‬

‫‪ Administration and Forecast‬متتتتن ‪National Weather Service‬؛ وللعثتتتتور علتتتتى‬

‫المعلومتتا ت المحليتتة‪ ،‬فستتتحتاج إلتتى رمتتز ‪ ICAO‬متتن أربعتتة محتتارف؛ التتذي يمسكتتن تحديتتده بتصتتفح‬

‫موقع ‪. Weather.gov‬‬

‫وعلتتى الرغتتم متتن أن ‪ National Weather Service‬هتتي وكالتتة حسكوميتتة تابعتتة للوليتتا ت‬

‫المتحدة‪ ،‬لسكن هنالك محطا ت طقس متوفرة فتي جميتع أظنحتتاء العتتالم‪ ،‬لسكتتن ربمتتا ل تتتوفر معلومتا ت‬

‫الطقس لجميع المناطق خارج الوليا ت المتحدة‪.‬‬

‫أظنششتتئ الملتتف ‪ ،/usr/local/bin/local-weather‬التتذي هتتو ستتسكربت ششتتل بستتيط للحصتتول‬

‫▲‬ ‫‪| 607‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫على الطقس لمنطقتك المحلية‪:‬‬

‫‪#!/bin/sh‬‬
‫‪#‬‬
‫‪#‬‬
‫‪# Prints the local weather information for the MOTD.‬‬
‫‪#‬‬
‫‪#‬‬

‫‪# Replace KINT with your local weather station.‬‬


‫‪# Local stations can be found here:‬‬
‫‪http://www.weather.gov/tg/siteloc.shtml‬‬

‫‪echo‬‬
‫‪weather -i KINT‬‬
‫‪echo‬‬

‫اجعل السسكربت قابصل للتنفيذ‪:‬‬

‫‪sudo chmod 755 /usr/local/bin/local-weather‬‬

‫ثم أظنششئ وصلصة رمزيصة إلى ‪:/etc/update-motd.d/98-local-weather‬‬

‫\ ‪sudo ln -s /usr/local/bin/local-weather‬‬
‫‪/etc/update-motd.d/98-local-weather‬‬

‫في النهاية‪ ،‬أغلق جلستك الحالية‪ ،‬وأعد تشغيل الدخول لمشاهدة رسالة اليوم الجديدة‪.‬‬

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

‫المحلي قد ل تسكون مفيدصة جصدا! لسكن هذا المثال يشرح مروظنة ‪.pam_motd‬‬

‫▲‬ ‫‪| 608‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫‪ .2‬تطبيق ‪etckeeper‬‬
‫يسمح ‪ etckeeper‬بتخزين محتويا ت ‪ /etc/‬بسهولة في مستودع ظنظتتام تحسكتتم بالصتتدارا ت‬

‫)‪(VCS‬؛ حيتتتث يندمتتتج متتتع ‪ apt‬لسكتتتي يتتتودع التغيتتترا ت الحاصتتتلة علتتتى ‪ /etc‬تلقائييتتتا عنتتتدما نتثنبتتتت‬

‫أو نتحندث الحزم‪ .‬وضع ‪ /etc‬ضمن مستودع للتحسكم بالصدارا ت هو أفضل ممارسة نين ن‬
‫صتح بهتتا فتي‬

‫مجال العمل‪ ،‬وهدف ‪ etckeeper‬هو جعل هذه المهمة أسهل ما يمسكن‪.‬‬

‫أد ش‬
‫خل المر التي في الطرفية لتثبيت ‪:etckeeper‬‬

‫‪sudo apt-get install etckeeper‬‬

‫ملتتتف الضتتتتبط الفتراضتتتي ‪ /etc/etckeeper/etckeeper.conf‬هتتتو بستتتتيط جتتتتصدا؛ الخيتتتتار‬

‫الرئيسي يسكتتون لضتتبط أي متحسكتتم بالصتتدارا ت لنيستتتخندم؛ افتراضتتصيا‪ ،‬يسكتون ‪ etckeeper‬مضتبوط‬

‫لستتتخدام ‪ Bazaar‬للتحسكتتم بالصتتدارا ت؛ ونيهنيتتأ المستتتودع تلقائييتتا )ونيتتوندع فيتته لول متترة( أثنتتاء‬

‫عملية تثبيت الحزمة؛ من الممسكن التراجع عن هذه الخطوة بإدخال المر‪:‬‬

‫‪sudo etckeeper uninit‬‬

‫سيودع ‪ etckeeper‬التغيرا ت غير المودعتة ال تي حص لت علتى ‪ /etc‬يومصيتا افتراضتصيا؛ يمسكتن‬

‫تعطيتتتل هتتتذا باستتتتخدام خيتتتار الضتتتبط ‪AVOID_DAILY_AUTOCOMMITS‬؛ وستتتتودع أي ص‬


‫ضتتتا‬

‫التغيرا ت تلقائصيا قبل وبعد تثبيت الحزم‪.‬‬

‫▲‬ ‫‪| 609‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫برمجيا ت أخرى مفيدة‬

‫ من المستحسن أن تودع التغيرا ت يدوصيا مع رستتالة‬،‫للمزيد من القدرة على التحسكم بالتغيرا ت‬

:‫اليداع كما يلي‬

sudo etckeeper commit "..Reason for configuration change.."

:/etc ‫ مشاهدة سجل المعلوما ت حول الملفا ت في‬VCS ‫يمسكنك باستخدام أوامر‬

sudo bzr log /etc/passwd

:postfix ‫ جدرب تثبيت الحزمة‬،‫لشرح طريقة الظندماج مع ظنظام إدارة الحزم‬

sudo apt-get install postfix

:‫ إلى المستودع‬postfix ‫ ستوندع كل ملفا ت ضبط‬،‫بعد اظنتهاء التثبيت‬

Committing to: /etc/


added aliases.db
modified group
modified group-
modified gshadow
modified gshadow-
modified passwd
modified passwd-
added postfix
added resolvconf
added rsyslog.d
modified shadow
modified shadow-
added init.d/postfix
added network/if-down.d/postfix
added network/if-up.d/postfix
added postfix/dynamicmaps.cf
added postfix/main.cf

▲ | 610
14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫برمجيا ت أخرى مفيدة‬

added postfix/master.cf
added postfix/post-install
added postfix/postfix-files
added postfix/postfix-script
added postfix/sasl
added ppp/ip-down.d
added ppp/ip-down.d/postfix
added ppp/ip-up.d/postfix
added rc0.d/K20postfix
added rc1.d/K20postfix
added rc2.d/S20postfix
added rc3.d/S20postfix
added rc4.d/S20postfix
added rc5.d/S20postfix
added rc6.d/K20postfix
added resolvconf/update-libc.d
added resolvconf/update-libc.d/postfix
added rsyslog.d/postfix.conf
added ufw/applications.d/postfix
Committed revision 2.

/etc/ ‫ أضف مضيصفا جديصدا إلى ملتف‬،‫ للتغيرا ت اليدوية‬etckeeper ‫وكمثال عن طريقة تتبع‬

:‫ لمشاهدة أي ملفا ت قد نعددنلت‬bzr ‫؛ ثم استخدام‬hosts

sudo bzr status /etc/


modified:
hosts

:‫يمسكنك إيداع التغيرا ت الن‬

sudo etckeeper commit "new host"

.«‫ أظنظمة التحسكم بالصدارا ت‬:‫ راجع »الفصل السابع عشر‬،bzr ‫للمزيد من المعلوما ت حول‬

▲ | 611
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫‪ .3‬تطبيق ‪Byobu‬‬
‫أحتتد أكتتثر البرامتتج فائتتدصة لي متتدير أظنظمتتة هتتو ‪ ،screen‬حيتتث يستتمح بتنفيتتذ عتتددة صتتدفا ت‬

‫)‪ (shells‬فتتي طرفيتتة واحتتدة؛ ولجعتتل بعتتض ميتتزا ت ‪ screen‬المتقدمتتة أكتتثر قرصبتتا متتن المستتتخدم‪،‬‬

‫ولتوفير بعض المعلوما ت المفيدة عن النظام؛ أظنششئت الحزمة ‪.byobu‬‬

‫عند تنفيذ ‪ ،byobu‬سنيظشهر الضغط على زر ‪ F9‬قائمنة الضبط التي تسمح لك بما يلي‪:‬‬

‫عرض قائمة المساعدة‪.‬‬ ‫•‬

‫تغيير لون خلفية ‪.Byobu‬‬ ‫•‬

‫تغيير لون أمامية ‪.Byobu‬‬ ‫•‬

‫تبديل ظهور شريط الشعارا ت‪.‬‬ ‫•‬

‫تغيير ربط المفاتيح‪.‬‬ ‫•‬

‫تغيير سلسلة الخروج‪.‬‬ ‫•‬

‫إظنشاء ظنوافذ جديدة‪.‬‬ ‫•‬

‫إدارة النوافذ الفتراضية‪.‬‬ ‫•‬

‫»ل يبدأ ‪ Byobu‬عند تسجيل الدتخول )تفعيل ذاك الخيار(«‪.‬‬

‫ربتتط المفاتيتتح يحتتدد بعتتض المتتور مثتتل سلستتلة الختتروج ) ‪ ،(escape sequence‬وإظنشتتاء ظنافتتذة‬

‫جديدة‪ ،‬وتغيير النافذة‪ ...‬إلخ‪ .‬هنالك مجموعتا ربط للمفاتيح يمسكن الختيار بينها‪ ،‬واحدة باسم ‪،f-keys‬‬

‫والخرى ‪screen-escape-keys‬؛ إذا أرد ت استخدام الربط الفتراضي‪ ،‬فاختر ‪.none‬‬

‫▲‬ ‫‪| 612‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫يوفر ‪ byobu‬قائمصة نتظ شهتتر إصتدارة أوبنتتتو‪ ،‬ومعلومتا ت المعالتتج‪ ،‬ومعلومتا ت التذاكرة‪ ،‬والتوقت‬

‫والتاريخ؛ مما يجعلها تبدو كقائمة سطح مسكتب‪.‬‬

‫تفعيتتل خيتتار »ل يبتتدأ ‪ Byobu‬عنتتد تستتجيل التتدخول« ستتيجعل ‪ byobu‬يبتتدأ عنتتد فتتتح أي‬

‫طرفيتتتة؛ التغيتتترا ت التتتتي تحصتتتل علتتتى ‪ byobu‬تسكتتتون خاصتتتة بالمستتتتخدم‪ ،‬ولتتتن تتتتؤثر علتتتى بقيتتتة‬

‫مستخدمي النظام‪.‬‬

‫أحتتتتد الميتتتتزا ت فتتتتي ‪ byobu‬هتتتتو ظنمتتتتط ‪ ،scrollback‬اضتتتتغط علتتتتى زر ‪ F7‬للتتتتدخول بوضتتتتع‬

‫‪ ، scrollback‬التتذي يستتمح لتتك بالتنقتتل إلتتى المخرجتتا ت الستتابقة باستتتخدام أوامتتر شتتبيهة بتتأوامر‬

‫محرر ‪vi‬؛ هذه قائمة سريعة بأوامر الحركة‪:‬‬

‫‪ :h‬تحريك المؤشر إلى اليسار محرصفا واحصدا‪.‬‬ ‫•‬

‫‪ :j‬تحريك المؤشر إلى السفل سطصرا واحصدا‪.‬‬ ‫•‬

‫‪ :k‬تحريك المؤشر إلى العلى سطصرا واحصدا‪.‬‬ ‫•‬

‫‪ :l‬تحريك المؤشر إلى اليمين محرصفا واحصدا‪.‬‬ ‫•‬

‫‪ :0‬تحريك المؤشر إلى بداية السطر الحالي‪.‬‬ ‫•‬

‫‪ :$‬تحريك المؤشر إلى ظنهاية السطر الحالي‪.‬‬ ‫•‬

‫‪ :G‬تحريك المؤشر إلى سطر محدد )افتراضصيا إلى النهاية(‪.‬‬ ‫•‬

‫?‪ :‬البحث إلى الخلف‪.‬‬ ‫•‬

‫‪ :n‬الظنتقال إلى المطابقة التالية إما إلى المام أو إلى الخلف‪.‬‬ ‫•‬

‫▲‬ ‫‪| 613‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫برمجيا ت أخرى مفيدة‬

‫‪ .4‬مصادر‬
‫راجتتتع صتتتفحة التتتدليل ‪ man update-motd‬للمزيتتتد متتتن الخيتتتارا ت المتتتتوفرة لحزمتتتة‬ ‫•‬

‫‪.update-motd‬‬

‫راجع موقع ‪ etckeeper‬لمزيتد من التفاصيل حول استخدامه‪.‬‬ ‫•‬

‫راجع أي ص‬
‫ضا صفحة ويسكي أوبنتو »‪.«etckeeper‬‬ ‫•‬

‫لخر الخبار عن ‪ ،bzr‬اظنظر إلى موقع ‪ bzr‬الرسمي‪.‬‬ ‫•‬

‫لمزيد من المعلوما ت حول ‪ ،screen‬راجع موقعه الرسمي‪.‬‬ ‫•‬

‫وأي ص‬
‫ضا صفحة ويسكي أوبنتو »‪.«Screen‬‬ ‫•‬

‫راجع صفحة مشروع ‪ Byobu‬لمزيتد من المعلوما ت‪.‬‬ ‫•‬

‫▲‬ ‫‪| 614‬‬


‫الملحق الول‪:‬‬
‫التبليغ عن العلل‬

‫▲‬ ‫‪| 615‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الملحق الول‪ :‬التبليغ عن العلل‬

‫يستخدم مشروع أوبنتو ‪-‬وبالتالي ظنسخة خادوم أوبنتو‪ -‬موقع ‪ Launchpad‬كمتتبتتع للعلتتل؛‬

‫ولسكي نتسدجل عنلة‪ ،‬فستحتاج إلى حساب في ‪ ،Launchpad‬أظن ش‬


‫شئ واحصدا إن كان ذلك ضرورييا‪.‬‬

‫‪ .1‬التبليغ عن العلل باتستخدام ‪apport-cli‬‬


‫ضتتلة للتبليتتغ عتتن العلتتل هتتي عتتبر المتتر ‪apport-cli‬؛ يجتتب أن نيننفتتذ المتتر علتتى‬
‫الطريقتتة المف ن‬

‫الجهاز المصاب بالعدلة لظنه يجمع معلوما ت من النظام الذي نيننفذ عليه وينشرها إلى البلغ عن العلتة‬

‫في ‪Launchpad‬؛ إيصال المعلوما ت إلى ‪ Launchpad‬قد يصبح صعصبا إن لم يسكن يعمل النظام‬

‫ببيئة سطح مسكتب لستخدام متصفح )وهذا أمةر شائةع في الخواديم( أو لم يسكن يملتتك وصتتوصل إلتتى‬

‫الظنترظنت؛ الخطوا ت التي يجب اتباعها في هذه الحال ت مشروحةة في السفل‪.‬‬

‫ملحظة‪ :‬يعطي المنرين ‪ apport-cli‬و ‪ ubuntu-bug‬ظنفس النتائج على خادوم بواجهة سطرية؛ حيث الخيتتر‬
‫هو فعلصيا وصلة رمزية إلى ‪ ،apport-bug‬الذي هو ذكي كفايصة لمعرفة إذا كان البيئة المستخدمة هي بيئة سطح‬
‫مسكتب‪ ،‬وسيختار ‪ apport-cli‬فيما عدا ذلتك؛ ولدمتا كتتاظنت أظنظمتتة الختتواديم تجنتتح لن تسكتتون ببيئتة ستتطرية فقتط‪،‬‬
‫فسنشرح في هذا السكتاب ‪.apport-cli‬‬

‫يجب أن نتس نجل التبليغتا ت ع ن العلتل فتي أوبنتتو علتى حزمتة برمجي ة محتددة‪ ،‬لذلك استم الحزمتة‬

‫المصابة بالعلة )الحزمة المصدرية أو اسم البرظنامج‪/‬مساره( يجب أن نتزنود إلى ‪:apport-cli‬‬

‫‪apport-cli PACKAGENAME‬‬

‫ملحظة‪ :‬ارجع إلى »الفصل الثالث‪ :‬إدارة الحزم« للمزيد من المعلوما ت حول الحزم في أوبنتو‪.‬‬

‫▲‬ ‫‪| 616‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ التبليغ عن العلل‬:‫الملحق الول‬

،‫ س نتسأل عدمتا تريتد فعل ه بهتتا؛ علتى س بيل المثتال‬،apport-cli ‫بعد اظنتهاء جمع المعلوما ت من‬

:vim ‫للتبليغ عن عدلة في‬

apport-cli vim
*** Collecting problem information
The collected information can be sent to the developers to
improve the
application. This might take a few minutes.
...
*** Send problem report to the developers?
After the problem report has been sent, please fill out the
form in the automatically opened web browser.
What would you like to do? Your options are:
1 https://launchpad.net/
2 https://help.launchpad.net/YourAccount/NewAccount
S: Send report (2.8 KB)
V: View report
K: Keep report file for sending later or copying to
somewhere else
I: Cancel and ignore future crashes of this program version
C: Cancel
Please choose (S/V/K/I/C):

:‫أول ثلثة خيارا ت مشروحة في السفل‬

‫ كجتتزء متتن عمليتتة إملء‬Launchpad ‫ إرستتال المعلومتتا ت النمجنمعتتة إلتتى‬:Send ‫الخيتتار‬ •

.‫بلغ عدلة جديد؛ ستعطى الفرصة لوصف العلة بسكلماتك‬

*** Uploading problem information


The collected information is being sent to the bug tracking
system.
This might take a few minutes.
94%
*** To continue, you must visit the following URL:
https://bugs.launchpad.net/ubuntu/+source/vim/
+filebug/09b2495a-e2ab-11e3-879b-68b5996a96c8?

▲ | 617
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الملحق الول‪ :‬التبليغ عن العلل‬

‫‪You can launch a browser now, or copy this URL into a browser‬‬
‫‪on another computer.‬‬
‫‪Choices:‬‬
‫‪1: Launch a browser now‬‬
‫‪C: Cancel‬‬
‫‪Please choose (1/C):‬‬ ‫‪1‬‬

‫المتصتتتتتفح التتتتتذي سيستتتتتتخدم عنتتتتتد اختيتتتتتار »‪ «1‬هتتتتتو المتصتتتتتفح المعتتتتتروف بالستتتتتم »‪www-‬‬

‫‪ «browser‬فتتي النظتتام عتتبر ظنظتتام البتتدائل الختتاص بنظتتام دبيتتان )‪Debian alternatives‬‬

‫‪(system‬؛ أمثلتتتتتة عتتتتتن المتصتتتتتفحا ت النصتتتتتية لتثبيتهتتتتتا تتضتتتتتمن ‪ ،links‬و ‪ ،elinks‬و ‪،lynx‬‬

‫و ‪w3m‬؛ يمسكنك توجيه متصفح آخر إلى عنوان ‪ URL‬النمعطى‪.‬‬

‫الخيتتار ‪ :View‬عتترض المعلومتتا ت التتتي نج شمنعتتت علتتى الشاشتتة لمراجعتهتتا؛ التتتي قتتد تسكتتون‬ ‫•‬

‫بياظنا ت كثيرة‪ ،‬اضغط على زر »‪ «Enter‬للتمرير إلى الستتفل‪ ،‬و »‪ «q‬للختتروج والعتتودة إلتتى‬

‫قائمة الختيار‪.‬‬

‫الخيتتار ‪ :Keep‬كتابتتة المعلومتتا ت النمجنمعتتة إلتتى القتترص‪ ،‬يمسكتتن أن نيستتتخندم الملتتف الناتتتج‬ ‫•‬

‫لح صقا للتبليغ عن العلة )عموصما بعد ظنقل الملف إلى ظنظام أوبنتو آخر(‪.‬‬

‫‪What would you like to do? Your options are:‬‬


‫)‪S: Send report (2.8 KB‬‬
‫‪V: View report‬‬
‫‪K: Keep report file for sending later or copying to‬‬
‫‪somewhere else‬‬
‫‪I: Cancel and ignore future crashes of this program‬‬
‫‪version‬‬
‫‪C: Cancel‬‬
‫‪Please choose (S/V/K/I/C): k‬‬
‫‪Problem report file: /tmp/apport.vim.1pg92p02.apport‬‬

‫▲‬ ‫‪| 618‬‬


‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الملحق الول‪ :‬التبليغ عن العلل‬

‫للتبليغ عن العلة‪ ،‬اظنقل الملف إلى ظنظام أوبنتو فيه اتصال بالظنترظنت وظندفتتذ المتتر ‪apport-cli‬‬

‫عليته؛ وهتذا متتا سيستتبب إظهتتار القائمتتة فورصيتتا )لن المعلومتتا ت قتتد نجشمنعتتت مستتبصقا(؛ عليتتك بعتتدها أن‬

‫تضغط على »‪ «s‬لرسال البلغ‪:‬‬

‫‪apport-cli apport.vim.1pg92p02.apport‬‬

‫لحفظ البلغ إلى القرص مباشر صة )دون الحاجة إلى استخدام القوائم( فيمسكنك تنفيذ‪:‬‬

‫‪apport-cli vim --save apport.vim.test.apport‬‬

‫يجب أن تنتهي أسماء ملفا ت البلغا ت باللحقة "‪.".apport‬‬

‫ملحظة‪ :‬إذا كتان النظتتام التذي فيته اتصتال بتالظنترظنت ليتس أوبنتتو‪/‬دبيتان؛ فتإن ‪ apport-cli‬ليتتس متتوفصرا‪ ،‬لتذلك‬
‫عليك إظنشاء العلة يدوصيا؛ ل يجب تضمين بلغ ‪ apport‬كمرفق بالعلة‪ ،‬لذلك هو عديم الفائدة في هذه الحالة‪.‬‬

‫▲‬ ‫‪| 619‬‬


14.04 - ‫دليل إدارة خواديم أوبنتو‬ ‫ التبليغ عن العلل‬:‫الملحق الول‬

‫ التبليغ عن النهيارات في التطبيقات‬.2


«‫ لسكي »تلتقتتط‬apport ‫ المسماة‬apport-cli ‫يمسكن ضبط حزمة البرمجيا ت التي توفر الداة‬

.(/etc/default/apport ‫حالة البرمجيا ت المنهارة؛ وهذا أمةر مفنعل افتراضصيا )في‬

:‫ بعد أن ينهار التطبيق‬/var/crash ‫ ظنسخصة من تقرير الظنهيار في‬apport ‫سيخدزن‬

-rw-r----- 1 peter whoopsie 150K Jul 24 16:17


↪ _usr_lib_x86_64-linux-gnu_libmenu-cache2_libexec_m

‫ دون أدية وسائط لمعالجتتة أديتتة تقتتارير اظنهيتتار فتتي الظنتظتتار؛ حيتتث‬apport-cli ‫استخدم الداة‬

.‫ستمنحك الخيار للتبليغ عنها واحدصة تلو الخرى‬

apport-cli
*** Send problem report to the developers?
After the problem report has been sent, please fill out the
form in the automatically opened web browser.
What would you like to do? Your options are:
S: Send report (153.0 KB)
V: View report
K: Keep report file for sending later or copying to
somewhere else
I: Cancel and ignore future crashes of this program version
C: Cancel
Please choose (S/V/K/I/C): s

▲ | 620
‫دليل إدارة خواديم أوبنتو ‪14.04 -‬‬ ‫الملحق الول‪ :‬التبليغ عن العلل‬

‫ضتتتح فتتتي العلتتتى‪ -‬فستتتيعود إليتتتك محتتتث الطرفيتتتة مباشتتترصة‪،‬‬


‫إذا أرستتتلت البلغ ‪-‬كمتتتا هتتتو مو ن‬

‫وسيحتوي المجلد ‪ /var /crash‬على ملفين إضافيين‪:‬‬

‫‪-rw-r----- 1 peter‬‬ ‫‪whoopsie 150K Jul 24 16:17‬‬


‫‪↪ _usr_lib_x86_64-linux-gnu_libmenu-cache2_libexec_m‬‬
‫‪-rw-rw-r-- 1 peter‬‬ ‫‪whoopsie‬‬ ‫‪0 Jul 24 16:37‬‬
‫‪↪ _usr_lib_x86_64-linux-gnu_libmenu-cache2_libexec_m‬‬
‫‪-rw------- 1 whoopsie whoopsie‬‬ ‫‪0 Jul 24 16:37‬‬
‫‪↪ _usr_lib_x86_64-linux-gnu_libmenu-cache2_libexec_m‬‬

‫إرستتال بلغ الظنهيتتار بهتتذه الطريقتتة لتتن يستتبب فتتي إظنشتتاء بلغ عتتام ) ‪ (public‬للعلتتة؛ ستتيسكون‬

‫صا )‪ (private‬في ‪ ،Launchpad‬هذا يعني أظنه سيسكون مرئصيا لجتتزتء متتن الناشتتطين فتتي‬
‫البلغ خا ص‬

‫تتبع العلل؛ حيث سيبحثون عن أدية معلوما ت خاصة بك قبل إظنشاء بلغ عام‪.‬‬

‫‪ .3‬مصادر‬
‫راجع صفحة ويسكي أوبنتو »‪.«Reporting Bugs‬‬ ‫•‬

‫صتتفحة »‪ «Apport‬فيهتتا بعتتض المعلومتتا ت المفيتتدة‪ ،‬وتشتتير بعضتتها إلتتى كيفيتتة استتتخدام‬ ‫•‬

‫الواجهة الرسومية للتبليغ عن العلل‪.‬‬

‫▲‬ ‫‪| 621‬‬

Vous aimerez peut-être aussi