<?xml version="1.0"?>
<rss version="2.0"><channel><title>DevOps: &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645;</title><link>https://academy.hsoub.com/devops/servers/page/4/?d=4</link><description>DevOps: &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645;</description><language>ar</language><item><title>&#x645;&#x631;&#x627;&#x642;&#x628;&#x629; &#x627;&#x644;&#x62A;&#x648;&#x641;&#x631; &#x648;&#x627;&#x644;&#x623;&#x62F;&#x627;&#x621; &#x639;&#x644;&#x649; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; Nagios &#x648;Munin</title><link>https://academy.hsoub.com/devops/servers/%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%A7%D9%84%D8%AA%D9%88%D9%81%D8%B1-%D9%88%D8%A7%D9%84%D8%A3%D8%AF%D8%A7%D8%A1-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-nagios-%D9%88munin-r189/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-monitoring.png.4de687a45a02116a9f3829557c4e5ac1.png" /></p>

<p dir="rtl">المراقبة هي جزء مهم من إدارة الخواديم والخدمات الأساسية؛ تُراقَب معظم الخدمات الشبكية للأداء (performance) أو التوفر (availability) أو كليهما؛ سيَشرح هذا الفصل طريقة تثبيت وضبط Nagios لمراقبة التوفر، و Munin لمراقبة الأداء.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-monitoring.png.23915b07e5b1777a9965e7a3f9292531.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11746" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-monitoring.thumb.png.1757ab90701bf08df1aea3fc788cc39b.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-monitoring.thumb.png.1757a"></a></p><p dir="rtl">سنستخدم في أمثلة هذا الفصل خادومين بأسماء server01 و server02؛ سيُضبَط server01 مع Nagios لمراقبة الخدمات التي عليه وعلى الخادوم server02؛ وسيُضبَط server01 مع Munin لجمع المعلومات من الشبكة، باستخدام حزمة <span style="font-family:courier new,courier,monospace;">munin-node</span>، وسيُضبَط server02 لكي يُرسِل المعلومات إلى server01.</p><p dir="rtl">نأمل أن تساعدك هذه الأمثلة البسيطة في مراقبة الخواديم والخدمات الإضافية في شبكتك.</p><h2 dir="rtl">Nagios</h2><h3 dir="rtl">التثبيت</h3><p dir="rtl">أولًا، ثبت الحزمة nagios على خادوم server01، وذلك بإدخال الأمر الآتي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install nagios3 nagios-nrpe-plugin</pre><p dir="rtl">سيُطلَب منك إدخال كلمة مرور لمستخدم nagiosadmin، تصاريح المستخدم مخزنة في<span style="font-family:courier new,courier,monospace;"> ‎/etc/nagios3/htpasswd.users</span>. ولتعديل كلمة مرور nagiosadmin أو إضافة مستخدمين آخرين إلى سكربتات Nagios CGI، فاستخدم <span style="font-family:courier new,courier,monospace;">htpasswd</span> الذي هو جزء من حزمة <span style="font-family:courier new,courier,monospace;">apache2-utils</span>.</p><p dir="rtl">على سبيل المثال، لتغيير كلمة المرور لمستخدم nagiosadmin:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin</pre><p dir="rtl">لإضافة مستخدم جديد:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo htpasswd /etc/nagios3/htpasswd.users steve</pre><p dir="rtl">الآن على خادوم server02، ثبِّت الحزمة <span style="font-family:courier new,courier,monospace;">nagios-nrpe-server</span>؛ بتنفيذ الأمر الآتي على server02:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install nagios-nrpe-server</pre><p dir="rtl"><strong>ملاحظة</strong>: سيسمح NRPE لك بتنفيذ فحوصات محلية على الأجهزة البعيدة، هنالك طرق أخرى للقيام بذلك عبر إضافات Nagios أخرى.</p><h3 dir="rtl">لمحة عن الضبط</h3><p dir="rtl">هنالك عدة مجلدات تحتوي على ضبط Nagios وملفات التحقق (check files).</p><ul dir="rtl"><li><span style="font-family:courier new,courier,monospace;">‎/etc/nagios3</span>: يحتوي على ملفات الضبط لعمل عفريت nagios، وملفات CGI، والمضيفين ...إلخ.</li><li><span style="font-family:courier new,courier,monospace;">‎/etc/nagios-plugins</span>: يحتوي ملفات الضبط للتحقق من الخدمات.</li><li>‎<span style="font-family:courier new,courier,monospace;">/etc/nagios</span>: في المضيفين البعيدين، ويحتوي على ملفات ضبط <span style="font-family:courier new,courier,monospace;">nagios-nrpe-server</span>.</li><li>‎<span style="font-family:courier new,courier,monospace;">/usr/lib/nagios/plugins/‎</span>: المكان الذي تخزَّن فيه ملفات التحقق الثنائية، استخدم الخيار <span style="font-family:courier new,courier,monospace;">‎-h</span> لمشاهدة المساعدة لتحققٍ ما. مثال:<span style="font-family:courier new,courier,monospace;"> ‎/usr/lib/nagios/plugins/check_dhcp -h</span></li></ul><p dir="rtl">هنالك وفرة في التحققات التي يمكن ضبط Nagios ليجريها على أي مضيف؛ سيُضبَط Nagios في هذا المثال للتحقق من مساحة القرص الصلب المتوفرة و DNS و MySQL؛ سيُجرى تحقق DNS على server02 وتحقق MySQL على server01 و server02.</p><p dir="rtl">هنالك بعض المصطلحات التي عندما تُشرَح ستُسهِّل فهم ضبط Nagios:</p><ul dir="rtl"><li><strong>المضيف (host)</strong>: خادوم أو محطة عمل (workstation)، أو جهاز شبكي ...إلخ. الذي يُراقَب.</li><li><strong>مجموعة مضيفين (host group)</strong>: مجموعة من المضيفين المتشابهين؛ على سبيل المثال، تستطيع أن تُجمِّع كل خواديم الويب أو خواديم الملفات ...إلخ.</li><li><strong>الخدمة (service)</strong>: الخدمة التي تُراقَب في المضيف، مثل HTTP أو DNS أو NFS ...إلخ.</li><li><strong>مجموعة الخدمات (service group)</strong>: تسمح لك بجمع عدِّة خدمات متشابهة مع بعضها بعضًا، هذا مفيد لتجميع عدّة خدمات HTTP على سبيل المثال.</li><li><strong>جهة الاتصال (contact)</strong>: الشخص الذي سيُنبَّه عندما يحدث حدثٌ ما؛ يمكن ضبط Nagios ليرسل بريدًا إلكترونيًا أو رسائل SMS ...إلخ.</li></ul><p dir="rtl">افتراضيًا، يكون ضبط Nagios ليتحقق من HTTP، والمساحة التخزينية المتوفرة في القرص، و <abbr title="Secure SHell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، والمستخدمين الحاليين، والعمليات، والحِمل على localhost؛ سيتحقق Nagios أيضًا من البوابة بعمل ping لها.</p><p dir="rtl">تثبيتات Nagios الضخمة قد يصبح ضبطها معقدًا جدًا، لذلك من الأفضل عادةً البدء بمضيف واحد أو اثنين ثم التوسع بعد ضبطهما جيدًا.</p><h3 dir="rtl">الضبط</h3><ol><li><p dir="rtl">أولًا، أنشئ ملف ضبط للمضيف للخادوم server02؛ ما لم يُذكر عكس ذلك، فعليك تنفيذ هذه الأوامر على server01؛ أدخِل ما يلي في الطرفية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo cp /etc/nagios3/conf.d/localhost_nagios2.cfg \
/etc/nagios3/conf.d/server02.cfg</pre><p dir="rtl"><strong>ملاحظة</strong>: في الأوامر السابقة أو التالية استبدل «server01» و «server02» و 172.18.100.100 و 172.18.100.101 بأسماء المضيفين وعناوين IP لخادومَيك.</p><ol start="2"><li><p dir="rtl">ثم عدِّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/nagios3/conf.d/server02.cfg</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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
}</pre><ol start="3"><li><p dir="rtl">أعد تشغيل عفريت nagios لتفعيل الضبط الجديد:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nagios3 restart</pre><ol><li><p dir="rtl">أضف الآن تعريفًا للتحقق من MySQL بإضافة ما يلي إلى<span style="font-family:courier new,courier,monospace;"> ‎/etc/nagios3/conf.d/‎ services_nagios.cfg</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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 &gt; 0 if you want to be renotified
}</pre><ol start="2"><li><p dir="rtl">يجب الآن تعريف مجموعة المضيفين <span style="font-family:courier new,courier,monospace;">mysql-servers</span>؛ عدِّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/nagios3/conf.d ‎/hostgroups_nagios2.cfg </span>مضيفًا:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># MySQL hostgroup.
define hostgroup {
        hostgroup_name     mysql-servers
        alias              MySQL servers
        members            localhost, server02
}</pre><ol start="3"><li><p dir="rtl">يحتاج Nagios لأن يستوثق إلى MySQL، فأضف مستخدم nagios إلى MySQL بإدخال الأمر:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mysql -u root -p -e "create user nagios identified by 'secret';"</pre><p dir="rtl"><strong>ملاحظة</strong>: يجب أن يتواجد المستخدم nagios في كل المضيفين في مجموعة<span style="font-family:courier new,courier,monospace;"> mysql-servers</span>.</p><ol start="4"><li><p dir="rtl">أعد تشغيل nagios ليبدأ التحقق من خواديم MySQL:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nagios3 restart</pre><ol><li><p dir="rtl">أخيرًا، اضبط NRPE للتحقق من المساحة الفارغة في القرص على الخادوم server02.</p></li></ol><p dir="rtl">أضف التحقق من الخدمة في server01 في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/nagios3/conf.d/server02.cfg</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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
}</pre><ol start="2"><li><p dir="rtl">الآن على الخادوم server02، عدِّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/nagios/nrpe.cfg </span>مغيّرًا:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">allowed_hosts=172.18.100.100</pre><p dir="rtl">ثم في منطقة تعريف الأمر أضف ما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -e</pre><ol start="3"><li><p dir="rtl">في النهاية، أعد تشغيل<span style="font-family:courier new,courier,monospace;"> nagios-nrpe-server</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nagios-nrpe-server restart</pre><ol start="4"><li><p dir="rtl">وأيضًا على الخادوم server01 أعد تشغيل nagios:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nagios3 restart</pre><p dir="rtl">يجب أن تكون قادرًا على رؤية المضيف والتحقق من الخدمات في ملفات Nagios CGI؛ للوصول إليهم، وجِّه متصفحك إلى <a rel="external nofollow" href="http://server01/nagios3">http://server01/nagios3</a>؛ ثم ستُسأل عن اسم مستخدم nagiosadmin وكلمة مروره.</p><h3 dir="rtl">مصادر</h3><p dir="rtl">لم يشرح هذا القسم من الدرس إلا القليل من ميزات Nagios؛ تحتوي الحزمتين <span style="font-family:courier new,courier,monospace;">nagios-plugins-extra</span> و <span style="font-family:courier new,courier,monospace;">nagios-snmp-plugins</span> على المزيد من تحققات الخدمات.</p><ul dir="rtl"><li>للمزيد من المعلومات، راجع موقع <a rel="external nofollow" href="http://www.nagios.org/">Nagios</a>، تحديدًا موقع «<a rel="external nofollow" href="http://nagios.sourceforge.net/docs/3_0/">التوثيق</a>».</li><li>هنالك <a rel="external nofollow" href="http://www.nagios.org/propaganda/books/">قائمة</a> بالكتب المتعلقة بمراقبة الشبكة و Nagios.</li><li>صفحة ويكي أوبتتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/Nagios">Nagios</a>» فيها بعض التفاصيل الإضافية.</li></ul><h2 dir="rtl">Munin</h2><h3 dir="rtl">التثبيت</h3><p dir="rtl">قبل تثبيت Munin على server01، فيجب أن يُثبَّت قبله apache2؛ الضبط الافتراضي كافٍ لتشغيل خادوم munin.</p><p dir="rtl">أولًا، ثبت munin على الخادوم server01 بإدخال الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install munin</pre><p dir="rtl">الآن ثبِّت الحزمة<span style="font-family:courier new,courier,monospace;"> munin-node </span>على الخادوم server02:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install munin-node</pre><h3 dir="rtl">الضبط</h3><p dir="rtl">عدِّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/munin/munin.conf </span>على الخادوم server01 مُضيفًا عنوان IP للخادوم server02:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">## First our "normal" host.
[server02]
address 172.18.100.101</pre><p dir="rtl"><strong>ملاحظة</strong>: استبدل server02 و 172.18.100.101 باسم المضيف وعنوان IP الحقيقي لخادومك.</p><p dir="rtl">الآن اضبط<span style="font-family:courier new,courier,monospace;"> munin-node</span> على الخادوم server02، بتعديل<span style="font-family:courier new,courier,monospace;"> ‎/etc/munin/munin-node.conf </span>للسماح بالوصول إلى الخادوم server01:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">allow ^172\.18\.100\.100$</pre><p dir="rtl"><strong>ملاحظة</strong>: استبدل ‎^172\.18\.100\.100$ بعنوان IP لخادوم Munin الخاص بك.</p><p dir="rtl">أعد تشغيل <span style="font-family:courier new,courier,monospace;">munin-node</span> على server02 لكي تأخذ التعديلات مجراها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service munin-node restart</pre><p dir="rtl">في النهاية، وجِّه متصفحك إلى <a rel="external nofollow" href="http://server01/munin">http://server01/munin</a>، يجب أن ترى روابط إلى مخططات بيانية جميلة تعرض معلومات من الحزمة القياسية<span style="font-family:courier new,courier,monospace;"> munin-plugins </span>للقرص والشبكة والعمليات والنظام.</p><p dir="rtl"><strong>ملاحظة</strong>: لما كان هذا التثبيت حديثًا، فربما ستحتاج لبعض الوقت لعرض معلومات مفيدة.</p><h3 dir="rtl">إضافات أخرى</h3><p dir="rtl">تحتوي حزمة <span style="font-family:courier new,courier,monospace;">munin-plugins-extra</span> على تحققات من أداء خدماتٍ إضافية مثل DNS و DHCP، وسامبا ...إلخ. أدخل الأمر الآتي لتثبيت هذه الحزمة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install munin-plugins-extra</pre><p dir="rtl">تأكد من تثبيت هذه الحزمة على جهازَيّ الخادوم والعقدة.</p><h3 dir="rtl">مصادر</h3><ul dir="rtl"><li>راجع موقع <a rel="external nofollow" href="http://munin.projects.linpro.no/">Munin</a> لمزيدٍ من التفاصيل.</li><li>تحديدًا صفحة «<a rel="external nofollow" href="http://munin.projects.linpro.no/wiki/Documentation">توثيق </a><a rel="external nofollow" href="http://munin.projects.linpro.no/wiki/Documentation">Munin</a>» التي تحتوي على معلومات عن الإضافات الأخرى، وكيفية كتابة إضافات ...إلخ.</li><li>مصدر آخر هو صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/Munin">Munin</a>».</li></ul><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/monitoring.html">Ubuntu Server Guide: Monitoring</a>.</p><p dir="rtl"> </p>
]]></description><guid isPermaLink="false">189</guid><pubDate>Fri, 22 Jan 2016 20:43:14 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x645;&#x646; &#x648;&#x627;&#x644;&#x62D;&#x645;&#x627;&#x64A;&#x629; &#x639;&#x644;&#x649; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;: eCryptfs</title><link>https://academy.hsoub.com/devops/servers/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-ecryptfs-r188/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-ecryptfs.png.9e02996345cc502cabd39671eb490e19.png" /></p>

<p dir="rtl">إن eCryptfs هو نظام ملفات للتشفير متوافق مع معايير POSIX ومن فئة الشركات لنظام لينُكس؛ وبتشكيل طبقة فوق طبقة نظام الملفات، فإن eCryptfs يحمي الملفات بغض النظر عن نظام الملفات المُستخدَم أو نوع القسم ...إلخ.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-ecryptfs.png.f062155b290eb69d3643969d2a88c5cc.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11659" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-ecryptfs.thumb.png.c92e22e036d1256480a3d3dc6957fc94.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-ecryptfs.thumb.png.c92e22e"></a></p><p dir="rtl">هنالك خيار أثناء التثبيت لتشفير قسم ‎<span style="font-family:courier new,courier,monospace;">/home</span>، هذا سيضبط تلقائيًا كل شيء يحتاج له النظام لتشفير ووصل ذاك القسم.</p><p dir="rtl">سنشرح هنا طريقة الضبط لتشفير <span style="font-family:courier new,courier,monospace;">‎/srv </span>باستخدام eCryptfs.</p><h2 dir="rtl">استخدام eCryptfs</h2><p dir="rtl">أولًا، ثبِّت الحزم اللازمة، بإدخال الأمر الآتي من الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install ecryptfs-utils</pre><p dir="rtl">الآن صِل القسم الذي تريد تشفيره:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mount -t ecryptfs /srv /srv</pre><p dir="rtl">ستُسأل الآن عن بعض التفاصيل حول كيفية تشفير البيانات.</p><p dir="rtl">لاختبار أن الملفات الموجودة في ‎/srv هي مشفرة، فانسخ المجلد <span style="font-family:courier new,courier,monospace;">‎/etc/default </span>إلى<span style="font-family:courier new,courier,monospace;"> ‎/srv</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo cp -r /etc/default /srv</pre><p dir="rtl">ثم افصل القسم ‎<span style="font-family:courier new,courier,monospace;">/srv</span>، وحاول عرض الملف:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo umount /srv
cat /srv/default/cron</pre><p dir="rtl">إعادة وصل ‎<span style="font-family:courier new,courier,monospace;">/srv</span> باستخدام ecryptfs ستجعل البيانات قابلةً للعرض مرةً أخرى.</p><h2 dir="rtl">وصل الأقسام المشفرة تلقائيا</h2><p dir="rtl">هنالك طريقتان لوصل نظام ملفات مُشفَّر باستخدام ecryptfs أثناء الإقلاع؛ سيستخدم هذا المثال الملف <span style="font-family:courier new,courier,monospace;">‎/root/.ecryptfsrc </span>الذي يحتوي على خيارات الوصل، بالإضافة إلى ملف مرور موجود على قرص USB.</p><p dir="rtl">أنشِئ أولًا الملف<span style="font-family:courier new,courier,monospace;"> ‎/root/.ecryptfsrc</span> الذي يحتوي على:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl"><strong>ملاحظة</strong>: عدِّل<span style="font-family:courier new,courier,monospace;"> ecryptfs_sig</span> إلى التوقيع في ‎<span style="font-family:courier new,courier,monospace;">/root/.ecryptfs/sig-cache.txt</span>.</p><p dir="rtl">ثم أنشِئ ملف المرور <span style="font-family:courier new,courier,monospace;">‎/mnt/usb/passwd_file.txt</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">passphrase_passwd=[secrets]</pre><p dir="rtl">أضف الآن الأسطر الضرورية إلى ملف <span style="font-family:courier new,courier,monospace;">‎/etc/fstab</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">/dev/sdb1 /mnt/usb ext3 ro 0 0
/srv /srv ecryptfs defaults 0 0</pre><p dir="rtl">تأكد أن قرص USB سيوصل قبل القسم المشفر.</p><p dir="rtl">في النهاية، أعد الإقلاع ويجب أن يوصل<span style="font-family:courier new,courier,monospace;"> ‎/srv</span> باستخدام eCryptfs.</p><h2 dir="rtl">أدوات أخرى</h2><p dir="rtl">الحزمة <span style="font-family:courier new,courier,monospace;">ecryptfs-utils</span> تحتوي على أدواتٍ أخرى مفيدة:</p><ul dir="rtl"><li>الأداة <span style="font-family:courier new,courier,monospace;">ecryptfs-setup-private</span> تُنشِئ مجلد <span style="font-family:courier new,courier,monospace;">‎~/Private</span> الذي يحتوي على المعلومات المشفرة؛ يمكن تنفيذ هذه الأداة من المستخدمين العاديين للحفاظ على بياناتهم من المستخدمين الآخرين على النظام.</li><li>الأداة <span style="font-family:courier new,courier,monospace;">ecryptfs-mount-private</span> والأداة <span style="font-family:courier new,courier,monospace;">ecryptfs-umount-private </span>ستصل أو تفصل مجلد ‎<span style="font-family:courier new,courier,monospace;">~/Private</span> على التوالي وبالترتيب.</li><li><span style="font-family:courier new,courier,monospace;">ecryptfs-add-passphrase</span>: إضافة عبارة مرور لما يسمى «kernel keyring».</li><li><span style="font-family:courier new,courier,monospace;">ecryptfs-manager</span>: إدارة كائنات eCryptfs مثل المفاتيح.</li><li><span style="font-family:courier new,courier,monospace;">ecryptfs-stat</span>: السماح لك بعرض معلومات eCryptfs الوصفية لملفٍ ما.</li></ul><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>للمزيد من المعلومات حول eCryptfs، راجع صفحة المشروع على <a rel="external nofollow" href="https://launchpad.net/ecryptfs">Lanuchpad</a>.</li><li>هنالك مقالة في <a rel="external nofollow" href="http://www.linuxjournal.com/article/9400">Linux Journal</a> تشرح eCryptfs.</li><li>للمزيد من خيارات eCryptfs، راجع صفحة الدليل<span style="font-family:courier new,courier,monospace;"> man ecryptfs</span>.</li><li>لدى صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/eCryptfs">eCryptfs</a>» المزيد من التفاصيل.</li></ul><p dir="rtl">ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/ecryptfs.html">Ubuntu Server Guide: eCryptfs</a>.</p>
]]></description><guid isPermaLink="false">188</guid><pubDate>Thu, 21 Jan 2016 12:02:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x645;&#x646; &#x648;&#x627;&#x644;&#x62D;&#x645;&#x627;&#x64A;&#x629; &#x639;&#x644;&#x649; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;: &#x627;&#x644;&#x634;&#x647;&#x627;&#x62F;&#x627;&#x62A; (Certificates)</title><link>https://academy.hsoub.com/devops/servers/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D8%A7%D9%84%D8%B4%D9%87%D8%A7%D8%AF%D8%A7%D8%AA-certificates-r187/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-certificates.png.083c197ac22e1facbbbe88182ef2c2db.png" /></p>

<p dir="rtl">واحدة من أكثر الأشكال الشائعة للتشفير في وقتنا الراهن هي التشفير وفق المفتاح العمومي (public-key cryptography)؛ يستخدم التشفير وفق المفتاح العمومي مفتاحًا عامًا (public key) ومفتاحًا خاصًا (private key)؛ يعمل النظام بتشفير (encrypt) المعلومات باستخدام مفتاح عمومي، ولا يمكن أن يُفَكّ تشفيرها (decrypted) إلا باستخدام المفتاح الخاص.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-certificates.png.c411676848adf47620e2b00f31b96e51.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11658" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-certificates.thumb.png.4795e54b8445106e523a48d8dbc416a6.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-certificates.thumb.png.479"></a></p><p dir="rtl">استخدام شائع للتشفير وفق المفتاح العمومي هو تشفير البيانات المنقولة باستخدام اتصال <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> ‏(Secure Socket Layer) أو <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>‏ (Transport Layer Security)؛ على سبيل المثال، إن ضبط أباتشي لتوفير HTTPS -بروتوكول HTTP عبر <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>- يسمح بتشفير البيانات في بروتوكول لا يوفر بحد ذاته آليةً للتشفير.</p><p dir="rtl">الشهادة (Certificate) هي طريقة تستخدم لتوزيع المفتاح العمومي وغيره من المعلومات عن الخادوم والمنظمة المسؤولة عنه؛ تُوقَّع الشهادات إلكترونيًا بواسطة «سلطة الشهادات» (CA)، إن سلطة الشهادات هي طرفٌ ثالثٌ موثوق تأكد من دقة المعلومات الموجودة في الشهادة.</p><h2 dir="rtl">أنواع الشهادات</h2><p dir="rtl">لضبط خادوم آمن باستخدام تشفير وفق المفتاح العمومي، عليك إرسال -في أغلب الحالات- طلب الشهادة (متضمنًا المفتاح العمومي الخاص بك) ودليلًا على هوية شركتك ودفعةً ماليةً إلى سلطة شهادات؛ ثم ستتحقق سلطة الشهادات من طلب الشهادة ومن هويتك، ثم ستُرسِل الشهادة إلى خادومك الآمن. بشكلٍ بديل، تستطيع إنشاء شهادتك الموقعة ذاتيًا.</p><p dir="rtl">للحصول على شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> قم باتباع الخطوات الموضحة في درس <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-ssl-%D9%85%D9%86-%D8%B3%D9%84%D8%B7%D8%A9-%D8%B4%D9%87%D8%A7%D8%AF%D8%A7%D8%AA-%D8%AA%D8%AC%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%B5%D9%88%D9%84-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-%D9%88%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA%D9%87%D8%A7-r148/">كيفية تثبيت شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> من سلطة شهادات تجارية</a> أو يمكنك الحصول على <a href="https://academy.hsoub.com/devops/servers/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-ssl-%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-%D8%B9%D8%A8%D8%B1-%D8%AE%D8%AF%D9%85%D8%A9-lets-encrypt-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r151/">شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> مجانية عبر خدمة Let's encrypt</a>. </p><p dir="rtl"><strong>ملاحظة</strong>: لاحظ أنه لا يجدر بك استخدام الشهادات الموقعة ذاتيًا في أغلبية بيئات العمل الإنتاجية.</p><p dir="rtl">بإكمال مثال HTTPS، ستوفر شهادة موقعة من سلطة الشهادات إمكانيتَين مهمتين لا تملكهما الشهادات الموقعة ذاتيًا:</p><ul dir="rtl"><li>المتصفحات تتعرف (عادةً) تلقائيًا على الشهادة وتسمح بإنشاء اتصال آمن دون طلب موافقة المستخدم.</li><li>عندما تعطي سلطة الشهادات شهادةً موقعة، فإنها تضمن هوية المنظمة التي توفر صفحات الويب إلى المتصفح.</li></ul><p dir="rtl">أغلبية متصفحات الويب والحواسيب التي تدعم <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> لديها قائمة بسلطات الشهادات التي تُقبَل شهاداتها تلقائيًا؛ إذا واجه المتصفح شهادةً لم تكن سلطة الشهادات التي أصدرتها في قائمته، فإنه (أي المتصفح) سيطلب من المستخدم قبول أو رفض الاتصال؛ وقد تُولِّد بعض التطبيقات الأخرى رسالة خطأ عند استخدام شهادة موقعة ذاتيًا.</p><p dir="rtl">عملية الحصول على شهادة من سلطة الشهادات هي عملية سهلة جدًا، لمحة سريعة هي الآتية:</p><ol dir="rtl"><li>أنشِئ زوج مفاتيح خاص وعام.</li><li>أنشِئ طلب شهادة بناءً على المفتاح العمومي، يحتوي طلب الشهادة على معلومات عن خادومك والشركة التي تستضيفه.</li><li>أرسل طلب الشهادة مع الوثائق التي تثبت هويتك إلى سلطة الشهادات؛ لا نستطيع إخبارك أيّة سلطة شهادات عليك أن تختارها؛ ربما يكون قرارك مبنيًا على تجارب سابقة، أو على تجارب أحد أصدقائك أو زملائك، أو على عوامل اقتصادية.</li><li>بعد أن تختار سلطة الشهادات، فعليك اتباع تعليماتهم التي يوفرونها عن كيفية الحصول على شهادة منهم.</li><li>بعد أن تتأكد سلطة الشهادات أنك من تدعيّ أنك هو؛ فسيرسلون لك شهادةً رقميةً.</li><li>ثبِّت هذه الشهادة على خادومك الآمن، واضبط البرامج الملائمة لاستخدام هذه الشهادة.</li></ol><h2 dir="rtl">توليد طلب توقيع الشهادة (CSR)</h2><p dir="rtl">إذا كنت ستحصل على شهادة من سلطة شهادات أو كنت ستُوقِّع شهادتك ذاتيًا، فإن أول خطوة هي توليد مفتاح.</p><p dir="rtl">إذا كانت الشهادة ستُستخدَم من عفاريت الخدمات، مثل أباتشي، أو Postfix، أو Dovecot ...إلخ. فإن مفتاحًا بدون عبارة مرور (passphrase) كافٍ عادةً؛ عدم وجود عبارة مرور تسمح للخدمات أن تبدأ دون تدخل يدوي، وهذه هي الطريقة المفضلة لبدء تشغيل عفريت.</p><p dir="rtl">سيغطي هذا القسم طريقة توليد مفتاح مع عبارة مرور، وواحد آخر بدون عبارة مرور؛ ثم سنستخدم المفتاح بدون عبارة مرور لتوليد شهادة ستُستخدَم في مختلف عفاريت الخدمات.</p><p dir="rtl"><strong>تحذير</strong>: تشغيل خدمة آمنة بدون عبارة مرور هو أمر ملائم ﻷنك لن تحتاج إلى إدخال عبارة المرور كل مرة تبدأ فيها خدمتك الآمنة، لكن هذا غير آمن وأي كشف عن المفتاح سيؤدي إلى جعل الخادوم عرضةً للهجمات.</p><p dir="rtl">لتوليد «مفاتيح» لطلب توقيع الشهادة، عليك تنفيذ الأمر الآتي من مِحَث الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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:</pre><p dir="rtl">تستطيع الآن إدخال عبارة مرورك، لأفضل قدر من الحماية، يجب أن تحتوي على الأقل على ثمانية محارف؛ الطول الأدنى عند تحديد الخيار ‎<span style="font-family:courier new,courier,monospace;">-des3</span> هو أربعة محارف؛ ويجب أن تحتوي على أرقام أو على علامات ترقيم ولا تحتوي على كلمة من القاموس؛ تذكر أن عبارة المرور حساسة لحالة الأحرف.</p><p dir="rtl">أعد كتابة عبارة المرور للتحقق؛ وبعد إعادة كتابتها بشكل صحيح، فسيُولَّد مفتاح الخادوم وسيُخزَّن في ملف<span style="font-family:courier new,courier,monospace;"> server.key</span>.</p><p dir="rtl">أنشِئ الآن مفتاحًا غير آمن (insecure أي بدون عبارة مرور) ثم بدِّل بين أسماء المفاتيح:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key</pre><p dir="rtl">أصبح الآن اسم ملف المفتاح غير الآمن هو <span style="font-family:courier new,courier,monospace;">server.key</span>، وسنستخدم هذا الملف لتوليد CSR بدون عبارة مرور.</p><p dir="rtl">نفِّذ الأمر الآتي في مِحَث الطرفية لإنشاء CSR:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">openssl req -new -key server.key -out server.csr</pre><p dir="rtl">ستُسأل عن إدخال عبارة المرور، إذا أدخلت عبارةً صحيحةً، فستُسأل عن إدخال اسم الشركة، واسم الموقع، ومعرف البريد الإلكتروني ...إلخ. بعد أن تُدخِل كل هذه التفاصيل، فسيُنشَأ طلب توقيع الشهادة (CSR) وسيُخزَّن في ملف<span style="font-family:courier new,courier,monospace;"> server.csr</span>.</p><p dir="rtl">يجب الآن إرسال ملف طلب توقيع الشهادة إلى سلطة الشهادات لمعالجته؛ ستستخدم سلطة الشهادات ملف طلب توقيع الشهادة لإصدار الشهادة؛ وعلى الكفة الأخرى، تستطيع توليد شهادتك الموقعة ذاتيًا باستخدام طلب توقيع الشهادة السابق.</p><h2 dir="rtl">إنشاء شهادة موقعة ذاتيا</h2><p dir="rtl">نفِّذ الأمر الآتي في الطرفية لإنشاء شهادة موقعة ذاتيًا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</pre><p dir="rtl">سيسألك الأمر السابق عن عبارة المرور، بعد أن تدخل عبارة المرور الصحيحة، فستُنشَأ الشهادة وتُخزَّن في ملف <span style="font-family:courier new,courier,monospace;">server.crt</span>.</p><p dir="rtl">تحذير: إذا استُخدِم خادومك الآمن في بيئة إنتاجية، فربما تحتاج إلى شهادة موقع من سلطة الشهادات (CA)، ليس من المستحسن استخدام شهادة موقعة ذاتيًا.</p><h2 dir="rtl">تثبيت الشهادة</h2><p dir="rtl">تستطيع تثبيت ملف المفتاح <span style="font-family:courier new,courier,monospace;">server.key</span> وملف الشهادة <span style="font-family:courier new,courier,monospace;">server.crt</span> أو ملف الشهادة المُصدَر من سلطة الشهادات، بتنفيذ الأمرين الآتيين في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private</pre><p dir="rtl">اضبط الآن ببساطة أيّة تطبيقات فيها إمكانية استخدام التشفير وفق المفتاح العمومي لكي تستخدم ملفات الشهادة والمفتاح؛ على سبيل المثال، يمكن أن يزود أباتشي HTTPS، و Dovecot يستطيع أن يزود IMAPS و POP3S ...إلخ.</p><h2 dir="rtl">سلطة الشهادات</h2><p dir="rtl">إذا كانت تتطلب الخدمات على شبكتك أكثر من مجرد بضع شهادات موقعة ذاتيًا، فربما يكون من المفيد بذل جهد إضافي وإعداد سلطة شهادات داخلية؛ ستسمح الشهادات الموقعة من سلطة الشهادات الخاصة بك لمختلف الخدمات باستخدام الشهادات لكي تثق بسهولة بالخدمات الأخرى التي تملك شهادات مُصدَرة من نفس سلطة الشهادات.</p><ol><li><p dir="rtl">أنشِئ أولًا المجلدات التي سنضع فيها شهادة سلطة الشهادات والملفات المتعلقة بذلك:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mkdir /etc/ssl/CA
sudo mkdir /etc/ssl/newcerts</pre><ol start="2"><li><p dir="rtl">تحتاج سلطة الشهادات إلى بضعة ملفات إضافية لكي تعمل، واحدٌ لكي يتعقب آخر رقم تسلسلي اُستخدِم من سلطة الشهادات، إذ يجب أن تملك كل شهادة رقمًا تسلسليًا فريدًا؛ وملفٌ آخر لتسجيل الشهادات التي أُصدِرَت:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo sh -c "echo '01' &gt; /etc/ssl/CA/serial"
sudo touch /etc/ssl/CA/index.txt</pre><ol start="3"><li><p dir="rtl">الملف الثالث هو ملف ضبط سلطة الشهادات، على الرغم من أنه ليس مطلوبًا، لكن من المنطقي وجوده عند إنشاء عدّة شهادات؛ عدِّل ملف <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/openssl.cnf</span> وفي قسم<span style="font-family:courier new,courier,monospace;"> [ CA_default ]</span>، غيِّر ما يلي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><ol start="4"><li><p dir="rtl">ثم أنشِئ الشهادة الجذر الموقعة ذاتيًا:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem \
-days 3650</pre><p dir="rtl">ستُسأل عن إدخال التفاصيل حول الشهادة.</p><ol start="5"><li><p dir="rtl">الآن ثبت الشهادة الجذر والمفتاح:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mv cakey.pem /etc/ssl/private/
sudo mv cacert.pem /etc/ssl/certs/</pre><ol start="6"><li><p dir="rtl">أنت الآن جاهزٌ لبدء توقيع الشهادات، أول شيء مطلوب هو «طلب توقيع الشهادة» (راجع القسم السابق لمزيد من المعلومات)، بعد أن تحصل على طلب توقيع الشهادة، فأدخِل ما يلي لتوليد شهادة موقعة من سلطة الشهادات:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf</pre><p dir="rtl">بعد إدخال كلمة المرور لمفتاح سلطة الشهادات، فستُسأل عن توقيع الشهادة، ومرةً أخرى لإصدار الشهادة، يجب أن ترى كميةً كبيرةً من المخرجات المتعلقة بإنشاء الشهادة.</p><ol start="7"><li><p dir="rtl">يجب أن يكون هنالك ملف جديد هو <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/netcerts/01.pem </span>يحتوي على نفس المخرجات، انسخ والصق كل شيء من بداية السطر<span style="font-family:courier new,courier,monospace;"> -----BEGIN CERTIFICATE----- </span>إلى السطر<span style="font-family:courier new,courier,monospace;"> ----END CERTIFICATE-----</span> إلى ملف مسمى بنفس اسم المضيف لخادومك مكان تثبيت الشهادة؛ فمثلًا الاسم <span style="font-family:courier new,courier,monospace;">mail.example.com.crt</span> هو اسم وصفي جيد.</p></li></ol><p dir="rtl">الشهادات المتتالية ستُسمى <span style="font-family:courier new,courier,monospace;">02‎.pem </span>،<span style="font-family:courier new,courier,monospace;">03‎.pem</span> ...إلخ.</p><p dir="rtl"><strong>ملاحظة</strong>: استبدل<span style="font-family:courier new,courier,monospace;"> mail.example.com.crt</span> بالاسم الوصفي الخاص بك.</p><ol start="8"><li><p dir="rtl">في النهاية، انسخ الشهادة الجديدة إلى المضيف الذي يحتاج لها واضبط الخدمات الملائمة لكي تستخدمها، المكان الافتراضي لتثبيت الشهادات هو ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/certs</span>، وهذا ما سيُمكِّن عدِّة خدمات من استخدام نفس الشهادة دون تعقيد أذونات الملف.</p></li></ol><p dir="rtl">للتطبيقات التي يمكن ضبطها لاستخدام شهادة CA، يجب أن تَنسخ أيضًا الملف <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/certs/cacert.pem</span> إلى مجلد<span style="font-family:courier new,courier,monospace;"> ‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/certs/‎</span> على كل خادوم.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>لتعليمات تفصيلية عن استخدام التشفير، راجع صفحة «<a rel="external nofollow" href="http://tldp.org/HOWTO/SSL-Certificates-HOWTO/index.html"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> Certificates HOWTO</a>».</li><li>صفحة ويكيبيديا HTTPS لديها المزيد من المعلومات حول <a rel="external nofollow" href="http://en.wikipedia.org/wiki/Https">HTTPS</a>.</li><li>للمزيد من المعلومات حول OpenSSL، راجع الصفحة الرئيسية لموقع <a rel="external nofollow" href="http://www.openssl.org/">OpenSSL</a>.</li><li>أيضًا، كتاب «<a rel="external nofollow" href="http://oreilly.com/catalog/9780596002701/">Network Security with OpenSSL</a>» من O'Reilly هو مرجع معمّق.</li></ul><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/certificates-and-security.html">Ubuntu Server Guide: Certifications</a>.</p>
]]></description><guid isPermaLink="false">187</guid><pubDate>Thu, 21 Jan 2016 11:49:10 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; SSSD &#x645;&#x639; Active Directory &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-sssd-%D9%85%D8%B9-active-directory-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r183/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-sssd-active-directory.png.79b1a812d461223302353574e606c968.png" /></p>

<p dir="rtl">يشرح هذا الدرس استخدام SSSD للاستيثاق من تسجيلات دخول المستخدم باستخدام Active Directory بطريقة «ad»؛ أما في الإصدارات القديمة من sssd، كان من الممكن أن يتم الاستيثاق بطريقة «ldap»، لكن عندما يتم الاستيثاق باستخدام مايكروسوفت ويندوز Active Directory، فكان من الضروري تثبيت إضافات POSIX AD في المتحكم بالنطاق؛ لكن طريقة «ad» تبسِّط الضبط ولا تتطلب أيّة تغيرات في بنية المتحكم بالنطاق.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-sssd-active-directory.png.5944d4f52ca6c4fb35e26b0a459116c6.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11511" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-sssd-active-directory.thumb.png.7c7c86c3821276b27495c2eba4358082.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-sssd-active-directory.thum"></a></p><h2 dir="rtl">الشروط المسبقة والافتراضات والمتطلبات</h2><ul dir="rtl"><li>نفترض أن لديك Active Directory مضبوط وجاهز للعمل.</li><li>نفترض أن المتحكم بالنطاق يعمل كخادوم DNS.</li><li>نفترض أن المتحكم بالنطاق هو خادوم DNS الرئيسي المحدد في ‎<span style="font-family:courier new,courier,monospace;">/etc/resolv.conf</span>.</li><li>نفترض أن قيود ‎<span style="font-family:courier new,courier,monospace;">_kerberos</span>، و ‎<span style="font-family:courier new,courier,monospace;">_ldap</span>، و<span style="font-family:courier new,courier,monospace;"> ‎_kpasswd </span>...إلخ. مضبوطة في منطقة DNS.</li><li>نفترض أن الوقت مُزامَنٌ على المتحكم بالنطاق.</li><li>النطاق المستخدم في هذا المثال هو <span style="font-family:courier new,courier,monospace;">myubuntu.example.com</span>.</li></ul><h2 dir="rtl">التثبيت</h2><p dir="rtl">يجب تثبيت الحزم<span style="font-family:courier new,courier,monospace;"> krb5-user </span>،<span style="font-family:courier new,courier,monospace;">samba </span>،<span style="font-family:courier new,courier,monospace;">sssd</span> و<span style="font-family:courier new,courier,monospace;"> ntp</span>؛ نحتاج إلى تثبيت سامبا حتى لو لم يُقدِّم الخادوم أيّة مشاركات. هنالك حاجة لحقل Kerberos والاسم الكامل أو عنوان IP للمتحكمات بالنطاق. أدخِل الأمر الآتي لتثبيت تلك الحزم:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-user samba sssd ntp</pre><p dir="rtl">انظر إلى القسم التالي لطريقة الإجابة عن الأسئلة التي يسألها السكربت المشغَّل بعد تثبيت حزمة <span style="font-family:courier new,courier,monospace;">krb5-user</span>.</p><h2 dir="rtl">ضبط Kerberos</h2><p dir="rtl">ستُسأل عند تثبيت حزمة <span style="font-family:courier new,courier,monospace;">krb5-user</span> عن اسم الحقل (realm name) بأحرفٍ كبيرة؛ وعن خادوم مركز توزيع المفاتيح (أي المتحكم بالنطاق) وعن الخادوم المدير (المتحكم بالنطاق أيضًا في هذا المثال)؛ وهذا ما سيكتب القسمين <strong>[realm]</strong> و <strong>[domain_realm]</strong> في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.conf</span>؛ هذه الأقسام ليست ضرورية إن كان الاكتشاف التلقائي للنطاق مفعّلًا، خلا ذلك فكلاهما ضروريٌ.</p><p dir="rtl">إذا كان اسم النطاق<span style="font-family:courier new,courier,monospace;"> myubuntu.example.com</span>، فأدخِل اسم الحقل كما يلي: <span style="font-family:courier new,courier,monospace;">MYUBUNTU.EXAMPLE.COM</span>.</p><p dir="rtl">وبشكل اختياري، عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.conf</span> مضيفًا بعض الخيارات لتحديد مدة صلاحية بطاقة Kerberos (هذه القيم جيدة لتستخدم قيمًا افتراضيةً):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[libdefaults]

default_realm = MYUBUNTU.EXAMPLE.COM
ticket_lifetime = 24h #
renew_lifetime = 7d</pre><p dir="rtl">إذا لم تُحدَّد قيمة<span style="font-family:courier new,courier,monospace;"> default_realm</span>، فربما من الضروري تسجيل الدخول باستخدام «username@domain» بدلًا من «username».</p><p dir="rtl">يجب أن يكون وقت النظام في عضو نطاق Active Directory متوافقًا مع مثيله في المتحكم بالنطاق، وإلا فستفشل عملية الاستيثاق باستخدام Kerberos؛ فمثلًا، يمكن أن يُوفِّر خادوم المتحكم بالنطاق خدمة NTP؛ عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/ntp.conf</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">server dc.myubuntu.example.com</pre><h2 dir="rtl">ضبط سامبا</h2><p dir="rtl">يجب أن يُستخدَم سامبا لتوفير خدمات netbois/nmbd المتعلقة بالاستيثاق من Active Directory، حتى وإن لم تُشارَك أيّة ملفات. عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/samba/smb.conf</span> وأضف ما يلي إلى قسم <strong>[global]</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[global]

workgroup = MYUBUNTU
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = MYUBUNTU.EXAMPLE.COM
security = ads</pre><p dir="rtl"><strong>ملاحظة</strong>: بعض المراجع تقول أنه يجب تحديد «password server» وأن يشير إلى المتحكم بالنطاق؛ لكن هذا ضروريٌ فقط إن لم يُضبَط DNS للعثور على المتحكم بالنطاق؛ حيث يَعرِض سامبا افتراضيًا تحذيرًا إن ضُبِطَ الخيار «password server» مع «security = ads».</p><h2 dir="rtl">ضبط SSSD</h2><p dir="rtl">لا يوجد ملف ضبط افتراضي أو مثال عن ملف الضبط لملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/sssd/sssd.conf</span> في حزمة <span style="font-family:courier new,courier,monospace;">sssd</span>؛ فمن الضروري إنشاء واحد؛ ها هو ذا أصغر ملف ضبط يمكن أن يعمل:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[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</pre><p dir="rtl">بعد حفظ الملف، فانقل الملكية إلى الجذر، وغيِّر أذونات الملف إلى 600:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf</pre><p dir="rtl">حيث سيرفض sssd أن يعمل إن لم تكن الملكية أو الأذونات صحيحةً.</p><h2 dir="rtl">التأكد من ضبط nsswitch.conf</h2><p dir="rtl">السكربت الذي يعمل بعد تثبيت حزمة <span style="font-family:courier new,courier,monospace;">sssd</span> يُجري بعض التعديلات على ملف<span style="font-family:courier new,courier,monospace;"> ‎‎/etc/nsswitch.conf</span> تلقائيًا؛ حيث يجب أن يكون كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">passwd:     compat sss
group:      compat sss
...
netgroup:   nis sss
sudoers:    files sss</pre><h2 dir="rtl"><a rel="external nofollow" name="7.5.7.%D8%AA%D8%B9%D8%AF%D9%8A%D9%84%20%D9%85%D9%84%D9%81%20%E2%80%8E/etc/hosts%7Coutline"></a> تعديل ملف ‎/etc/hosts</h2><p dir="rtl">أضف اسمًا بديلًا الذي يحدد اسم النطاق الكامل للحاسوب المحلي في ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/hosts</span> كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">192.168.1.10 myserver myserver.myubuntu.example.com</pre><p dir="rtl">هذا مفيد لاستخدامه مع تحديثات DNS الديناميكية.</p><h2 dir="rtl">الانضمام إلى Active Directory</h2><p dir="rtl">عليك الآن إعادة تشغيل <span style="font-family:courier new,courier,monospace;">ntp</span> و <span style="font-family:courier new,courier,monospace;">samba</span>، وتشغيل<span style="font-family:courier new,courier,monospace;"> sssd</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ntp restart
sudo restart smbd
sudo restart nmbd
sudo start sssd</pre><p dir="rtl">ثم اختبر الضبط بمحاولة الحصول على بطاقة Kerberos:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kinit Administrator</pre><p dir="rtl">تحقق من البطاقة باستخدام:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo klist</pre><p dir="rtl">إذا كانت هنالك بطاقة مع تاريخ انتهاء الصلاحية، فقد حان الوقت للانضمام إلى النطاق:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo net ads join -k</pre><ul><li><p dir="rtl"><strong>التحذير «No DNS domain configured. Unable to perform DNS Update‎.‎»</strong> يعني أنه ليس هنالك اسم بديل (أو اسم بديل صحيح) في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/hosts</span>، ولا يمكن للنظام توفير الاسم الكامل له؛ فعليك التحقق من الاسم البديل في<span style="font-family:courier new,courier,monospace;"> ‎/etc/hosts</span> كما هو مشروح في قسم «تعديل ملف etc/hosts/» أعلاه.</p></li><li><p dir="rtl"><strong>الرسالة «NT_STATUS_UNSUCCESSFUL»</strong> تشير إلى أن الانضمام إلى النطاق قد فشل وأن هنالك شيء ما خاطئ، عليك مراجعة الخطوات السابقة وإصلاح المشكلة قبل الإكمال.</p></li></ul><p dir="rtl">هنالك تحققان آخران اختياريان للتأكد من أن الانضمام إلى النطاق قد نجح؛ لاحظ أنه إذا نجح الانضمام إلى النطاق لكن إذا فشل أحد أو كلا التحققين، فربما عليك الانتظار لدقيقةٍ أو دقيقتين قبل المحاولة مرةً أخرى؛ حيث يبدو أن بعض التغيرات لا تحدث في الوقت الحقيقي.</p><p dir="rtl">1. التحقق الأول:</p><p dir="rtl">تحقق من «وحدة التنظيم» (Organizational Unit) لحسابات الحواسيب في Active Directory للتأكد من أن حساب الحاسوب قد أُنشِئ (وحدات التنظيم هي موضوع خارج عن نطاق هذا الدرس).</p><p dir="rtl">2. التحقق الثاني:</p><p dir="rtl">نفِّذ الأمر الآتي لمستخدم AD معيّن (المدير مثلًا):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">getent passwd username</pre><p dir="rtl"><strong>ملاحظة</strong>: إذا ضبطت الخاصية «enumerate = ture» في ملف<span style="font-family:courier new,courier,monospace;"> sssd.conf</span>، فإن الأمر <span style="font-family:courier new,courier,monospace;">getnet passwd</span> دون تمرير اسم مستخدم كوسيط سيَعرض جميع مستخدمي النطاق؛ ربما يكون هذا السلوك مفيدًا للاختبار، لكنه بطيء وغير مستحسن للخواديم الإنتاجية.</p><h2 dir="rtl">اختبار الاستيثاق</h2><p dir="rtl">يجب أن يكون الآن من الممكن الاستيثاق عبر Active Directory:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">su - username</pre><p dir="rtl">إذا عَمِلَ الأمر السابق بنجاح، فيجب أن تعمل بقية طرق الاستيثاق (getty، و <abbr title="Secure SHell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>).</p><p dir="rtl">إذا أُنشِئ حساب الحاسوب، مما يشير إلى أن النظام قد انضم إلى النطاق، لكن فشل الاستيثاق؛ فربما من المفيد مراجعة الملف <span style="font-family:courier new,courier,monospace;">‎/etc/pam.d</span> و<span style="font-family:courier new,courier,monospace;"> sssdwitch.conf </span>وأيضًا تغيرات الملفات المشروحة آنفًا في هذا الدرس.</p><h2 dir="rtl">مجلدات المنزل مع pam_mkhomedir</h2><p dir="rtl">عند تسجيل الدخول باستخدام حساب مستخدم Active Directory، فمن المحتمل ألّا يكون للمستخدم مجلد منزل، ويمكن حل هذه المشكلة باستخدام <span style="font-family:courier new,courier,monospace;">pam_mkhomedir.so</span>، حيث سيُنشَأ مجلد المنزل للمستخدم عند تسجيل الدخول؛ عدِّل ملف <span style="font-family:courier new,courier,monospace;">‎/etc/pam.d/common-session</span>، وأضف هذا السطر مباشرةً بعد «<span style="font-family:courier new,courier,monospace;">session required pam_unix.so</span>»:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">session required pam_mkhomedir.so skel=/etc/skel/ umask=0022</pre><p dir="rtl"><strong>ملاحظة</strong>: قد تحتاج إلى «<span style="font-family:courier new,courier,monospace;">override_homedir</span>» في ملف<span style="font-family:courier new,courier,monospace;"> sssd.conf</span> للعمل عملًا صحيحًا، تأكد من ضبط تلك الخاصية هناك.</p><h2 dir="rtl">الاستيثاق في سطح مكتب أوبنتو</h2><p dir="rtl">من الممكن أيضًا الاستيثاق من المستخدمين في سطح مكتب أوبنتو باستخدام حسابات Active Directory؛ لكن لن تظهر أسماء حسابات مستخدمي AD في قائمة الاختيار مع المستخدمين المحليين، لذلك يجب تعديل <span style="font-family:courier new,courier,monospace;">lightdm</span>؛ وذلك بتحرير الملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/lightdm/lightdm.conf.d/50-unity-greeter.conf</span> وإضافة السطرين الآتيين:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">greeter-show-manual-login=true
greeter-hide-users=true</pre><p dir="rtl">أعد الإقلاع لإعادة تشغيل <span style="font-family:courier new,courier,monospace;">lightdm</span>، حيث يمكن الآن تسجيل الدخول باستخدام حساب تابع للنطاق إما بالشكل «username» أو «username/username@domain».</p><h2 dir="rtl">المصادر</h2><ul dir="rtl"><li>صفحة <a rel="external nofollow" href="https://fedorahosted.org/sssd">مشروع </a><a rel="external nofollow" href="https://fedorahosted.org/sssd">SSSD</a>.</li><li>مقالة «<a rel="external nofollow" href="http://www.ucs.cam.ac.uk/support/windows-support/winsuptech/activedir/dnsconfig">DNS Server Configuration guidelines</a>».</li><li>صفحة «<a rel="external nofollow" href="https://technet.microsoft.com/en-us/library/cc759550(v=ws.10).aspx">Active Directory DNS Zone Entries</a>».</li><li>صفحة «<a rel="external nofollow" href="http://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html">Kerberos config options</a>».</li></ul><div id="sdfootnote1"><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/sssd-ad.html">Ubuntu Server Guide: SSSD and Active Directory</a>.</p></div>
]]></description><guid isPermaLink="false">183</guid><pubDate>Mon, 18 Jan 2016 22:25:46 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; Kerberos &#x645;&#x639; LDAP &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-kerberos-%D9%85%D8%B9-ldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r182/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos-ldap.png.fd60427f8e01ee2fcd2e0b0fb5c7730a.png" /></p>

<p dir="rtl">لا يستعمل أغلب الناس Kerberos لوحده، فبعد أن يستوثق المستخدم (Kerberos)، فسنحتاج لمعرفة ماذا بإمكانه أن يفعل (تصريح [authorization])؛ وهنا تكون مهمة البرامج مثل LDAP.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos-ldap.png.101e6170e54d19c0dddffdbfea0db273.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11506" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos-ldap.thumb.png.9c9f3d5010e312d4de1756a71cb15d7a.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-kerberos-ldap.thumb.png.9c"></a></p><p dir="rtl">قد يكون استنساخ قاعدة مبادئ Kerberos بين خادومين أمرًا معقدًا، ويضيف قاعدة بيانات مستخدم أخرى إلى شبكتك؛ لحسن الحظ، MIT Kerberos مضبوطٌ ليستخدم دليل LDAP كقاعدة بيانات للمبادئ؛ يشرح هذا الدرس ضبط خادومَيّ Kerberos الرئيسي والثانوي لاستخدام OpenLDAP لقاعدة بيانات المبادئ.</p><p dir="rtl"><strong>ملاحظة:</strong> الأمثلة هنا تستخدم MIT Kerberos و OpenLDAP.</p><h2 dir="rtl">ضبط OpenLDAP</h2><p dir="rtl">أولًا، يجب تحميل المخطط الضروري على خادوم OpenLDAP الذي لديه اتصال شبكي مع مركز توزيع المفاتيح الرئيسي والثانوي؛ بقية هذا القسم تفترض أن لديك استنساخ LDAP مضبوط بين خادومين على الأقل؛ للمزيد من المعلومات حول ضبط OpenLDAP راجع درس «خادوم <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">OpenLDAP</a>».</p><p dir="rtl">من المطلوب أيضًا ضبط OpenLDAP من أجل اتصالات <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> و <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>؛ لذلك ستكون جميع البيانات المارة بين خادومي LDAP و KDC مشفرةً.</p><p dir="rtl">ملاحظة: <strong>cn=admin,cn=config</strong> هو المستخدم الذي أنشأناه مع امتياز الكتابة إلى قاعدة بيانات ldap؛ تكون القيمة في كثير من الأحيان هي RootDN، عدِّل قيمته وفقًا للضبط عندك.</p><ul><li><p dir="rtl">لتحميل المخطط على LDAP، فثبِّت الحزمة<span style="font-family:courier new,courier,monospace;"> krb5-kdc-ldap</span> في خادوم LDAP؛ أي أدخِل الأمر الآتي في الطرفية:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-kdc-ldap</pre><ul><li><p dir="rtl">ثم استخرج محتويات الملف<span style="font-family:courier new,courier,monospace;"> kerberos.schema.gz</span>:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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/</pre><ul><li><p dir="rtl">يجب أن يضاف مخطط kerberos إلى شجرة <strong>cn=config</strong>؛ آلية إضافة مخطط جديد إلى slapd مفصلةٌ في قسم «<a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">تعديل قاعدة بيانات ضيط slapd</a>» من درس «خادوم OpenLDAP».</p></li></ul><ol style="margin-right: 40px;"><li><p dir="rtl">أولًا، أنشِئ ملف ضبط باسم <span style="font-family:courier new,courier,monospace;">schema_convert.conf</span>، أو أي اسم آخر ذي معنى، يحتوي على الأسطر الآتية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><ol start="2" style="margin-right: 40px;"><li><p dir="rtl">أنشِئ مجلدًا مؤقتًا لاحتواء ملفات<span style="font-family:courier new,courier,monospace;"> LDIF</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mkdir /tmp/ldif_output</pre><ol start="3" style="margin-right: 40px;"><li><p dir="rtl">استخدم الآن <span style="font-family:courier new,courier,monospace;">slapcat</span> لتحويل ملفات المخطط:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s \
"cn={12}kerberos,cn=schema,cn=config" &gt; /tmp/cn\=kerberos.ldif</pre><p dir="rtl">عدِّل اسم الملف والمسار السابق ليُطابِق ما عندك إن كان مختلفًا.</p><ol start="4" style="margin-right: 40px;"><li><p dir="rtl">عدِّل الخاصيات الآتية في الملف المولَّد ‎<strong>/tmp/cn=kerberos.ldif</strong>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn: cn=kerberos,cn=schema,cn=config
...
cn: kerberos</pre><p dir="rtl">واحذف الأسطر الآتية من نهاية الملف:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">structuralObjectClass: olcSchemaConfig
entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc
creatorsName: cn=config
createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090111203515Z</pre><p dir="rtl">قد تختلف قيم تلك الخاصيات، لكن تأكد أنها قد حُِذِفَت.</p><ol start="5"><li><p dir="rtl">حمِّل المخطط الجديد بالأمر <span style="font-family:courier new,courier,monospace;">ldapadd</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=kerberos.ldif</pre><ol start="6"><li><p dir="rtl">أضف فهرسًا لخاصية <span style="font-family:courier new,courier,monospace;">krb5principalname</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
<strong>dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub</strong>

modifying entry "olcDatabase={1}hdb,cn=config"</pre><ol start="7"><li><p dir="rtl">وفي النهاية، حدِّث قوائم التحكم في الوصول (ACL):</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldapmodify -x -D cn=admin,cn=config -W
Enter LDAP Password:
<strong>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</strong>

modifying entry "olcDatabase={1}hdb,cn=config"</pre><p dir="rtl">هذا كل ما في الأمر، أصبح دليل LDAP جاهزًا لكي يخدم كقاعدة بيانات مبادئ Kerberos.</p><h2 dir="rtl">ضبط مركز توزيع المفاتيح الرئيسي</h2><p dir="rtl">بعد ضبط OpenLDAP، حان الوقت الآن لضبط مركز توزيع المفاتيح.</p><ul><li><p dir="rtl">أولًا، ثبِّت الحزم الضرورية الآتية، بتنفيذ الأمر:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap</pre><ul><li><p dir="rtl">عدِّل الآن ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.conf</span> بإضافة الخيارات الآتية تحت الأقسام الملائمة لها:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[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]
        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
        }</pre><p dir="rtl"><strong>ملاحظة:</strong> عدِّل قيم <strong>example.com</strong> ،<strong>dc=example,dc=com</strong> ،<strong>cn=admin,dc=example,dc=com</strong> ،<strong>ldap01.example.com</strong> للقيم الملائمة للنطاق، وكائن LDAP، وخادوم LDAP لشبكتك.</p><ul><li><p dir="rtl">لاحقًا، استخدم الأداة<span style="font-family:courier new,courier,monospace;"> kdb5_ldap_util</span> لإنشاء الحقل:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><ul><li><p dir="rtl">أنشِئ «مخبأً» (stash) لكلمة المرور المستخدم في خادوم LDAP، تستخدم هذه الكلمة من <span style="font-family:courier new,courier,monospace;">ldap_kdc_dn </span>و<span style="font-family:courier new,courier,monospace;"> ldap_kadmind_dn</span> في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.conf</span>:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \
/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com</pre><ul><li><p dir="rtl">انسخ شهادة سلطة الشهادات من خادوم LDAP:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">scp ldap01:/etc/ssl/certs/cacert.pem .
sudo cp cacert.pem /etc/ssl/certs</pre><ul><li><p dir="rtl">الآن عدِّل<span style="font-family:courier new,courier,monospace;"> ‎/etc/ldap/ldap.conf</span> ليستخدم الشهادة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">TLS_CACERT /etc/ssl/certs/cacert.pem</pre><p dir="rtl"><strong>ملاحظة</strong>: يجب أن تُنسَخ الشهادة أيضًا إلى مركز توزيع المفاتيح الثانوي، للسماح بالاتصال إلى خواديم LDAP باستخدام LDAPS.</p><p dir="rtl">تستطيع الآن إضافة مبادئ Kerberos إلى قاعدة بيانات LDAP، وستُنسَخ إلى بقية خواديم LDAP المضبوطة للاستنساخ. فأدخل ما يليل لإضافة مبدأ باستخدام الأداة <span style="font-family:courier new,courier,monospace;">kadmin.local</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: <strong>addprinc -x dn="uid=steve,ou=people,dc=example,dc=com" steve</strong>
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.</pre><p dir="rtl">يجب أن تكون خاصيات <span style="font-family:courier new,courier,monospace;">krbPrincipalName</span> ،<span style="font-family:courier new,courier,monospace;">krbPrincipalKey</span> ،<span style="font-family:courier new,courier,monospace;">krbLastPwdChange</span> ،<span style="font-family:courier new,courier,monospace;">krbExtraData</span> مضافةً إلى كائن المستخدم <strong>uid=steve,ou=people,dc=example,dc=com</strong>؛ استخدم أداتَيّ <span style="font-family:courier new,courier,monospace;">kinit</span> و <span style="font-family:courier new,courier,monospace;">klist</span> لاختبار إذا أصدر المستخدم المعين بطاقةً.</p><p dir="rtl"><strong>ملاحظة</strong>: إذا كان كائن المستخدم مُنشأً مسبقًا، فإنه يجب إضافة الخيار <strong>‎-x dn="..."‎ </strong>إلى خاصيات Kerberos؛ لأنه سيُنشَأ فيما عدا ذلك كائن مبدأي جديد في شجرة الحقل الفرعية.</p><h2 dir="rtl">ضبط مركز توزيع المفاتيح الثانوي</h2><p dir="rtl">ضبط مركز توزيع المفاتيح الثانوي لاستخدم LDAP هو شبيه بضبطه لاستخدام قاعدة بيانات Kerberos العادية.</p><p dir="rtl">أولًا، ثبت الحزم الضرورية، بتطبيق الأمر الآتي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap</pre><p dir="rtl">عدِّل الآن ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/krb5.conf</span> ليستخدم LDAP:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[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]
        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
        }</pre><p dir="rtl">أنشِئ مخبأً لكلمة مرور LDAP:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \
/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com</pre><p dir="rtl">الآن انسخ مخبأ ‎‏«Master Key‎»‏ على المركز الرئيسي <span style="font-family:courier new,courier,monospace;">‎/etc/krb5kdc/.k5.EXAMPLE.COM</span> إلى مركز توزيع المفاتيح الثانوي؛ تأكد من نسخ الملف عبر اتصال مشفر مثل scp، أو عبر وسيط تخزين فيزيائي.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo scp /etc/krb5kdc/.k5.EXAMPLE.COM steve@kdc02.example.com:~
sudo mv .k5.EXAMPLE.COM /etc/krb5kdc/</pre><p dir="rtl"><strong>ملاحظة:</strong> مرةً أخرى، استبدل <span style="font-family:courier new,courier,monospace;">EXAMPLE.COM</span> باسم الحقل الحقيقي.</p><p dir="rtl">وبالعودة إلى المركز الثانوي، أعد تشغيل خادوم ldap فقط:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service slapd restart</pre><p dir="rtl">في النهاية، ابدأ عفريت <span style="font-family:courier new,courier,monospace;">krb5-kdc</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service krb5-kdc start</pre><p dir="rtl">تأكد أن خادومَيّ ldap (وبالتالي kerberos) متزامنَين.</p><p dir="rtl">تستطيع الآن إكمال استيثاق المستخدمين إن أصبح خادوم LDAP أو Kerberos، أو خادوم LDAP وخادوم Kerberos غير متوفرين.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>لدى دليل «<a rel="external nofollow" href="http://web.mit.edu/Kerberos/krb5-1.6/krb5-1.6.3/doc/krb5-admin.html#Configuring-Kerberos-with-OpenLDAP-back_002dend">Kerberos Admin Guide</a>» بعض التفاصيل الإضافية.</li><li>للمزيد من المعلومات حول<span style="font-family:courier new,courier,monospace;"> kdb5_ldap_util</span> راجع صفحة دليل <span style="font-family:courier new,courier,monospace;">man kdb5_ldap_util</span>.</li><li>مصدر آخر مفيد هو صفحة الدليل<span style="font-family:courier new,courier,monospace;"> man krb5.conf</span>.</li><li>انظر أيضًا لصفحة ويكي أوبنتو: «<a rel="external nofollow" href="https://help.ubuntu.com/community/Kerberos#kerberos-ldap">Kerberos and LDAP</a>».</li></ul><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/kerberos-ldap.html">Ubuntu Server Guide: Kerberos and LDAP</a>.</p>
]]></description><guid isPermaLink="false">182</guid><pubDate>Mon, 18 Jan 2016 09:28:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x648;&#x636;&#x628;&#x637; &#x62E;&#x627;&#x62F;&#x648;&#x645; Kerberos &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-kerberos-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r181/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos.png.6a7831c5f2fa2bd726c17ca9d0c9e189.png" /></p>

<p dir="rtl">إن Kerberos هو نظام استيثاق شبكي مبني على مفهوم الجهة الثالثة الموثوقة؛ الجهتان الأخريتان هما المستخدم والخدمة التي يريد المستخدم أن يستوثق فيها؛ لا يمكن لجميع الخدمات والتطبيقات استخدام Kerberos؛ لكن الخدمات التي تستطيع ذلك تجعله يُقرِّب بيئة الشبكة لتصبح أقرب خطوةً إلى «تسجيل الدخول الموحد» (Single Sign On‏ [SSO]).</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos.png.ca76b1ae8062cbb932f3be7fa2edf441.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11462" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-kerberos.thumb.png.cfbf0ee589ebb98ee578893ef49e6833.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-kerberos.thumb.png.cfbf0ee"></a></p><p dir="rtl">يشرح هذا الدرس تثبيت وضبط خادوم Kerberos، وبعض الأمثلة عن ضبط العملاء.</p><h2 dir="rtl">لمحة عامة</h2><p dir="rtl">إذا كنت جديدًا على Kerberos، فهذه بعض المصطلحات التي من الجيد معرفتها قبل إعداد خادوم Kerberos، أغلبها مرتبطةٌ بأشياء قد تعرفها من البيئات الأخرى:</p><ul dir="rtl"><li><strong>مبدأ (Principal)</strong>: يجب أن تُعرَّف أيّة مستخدمين أو حواسيب أو خدمات موفرة من الخواديم كمبادئ Kerberos.</li><li><strong>النماذج (Instances)</strong>: تستخدم لمبادئ الخدمة ومبادئ الإدارة الخاصة.</li><li><strong>الحقول (Realms)</strong>: الحقل الفريد للتحكم الذي تم تزويده من عملية تثبيتKerberos؛ تخيل أن الحقول هي مجال أو مجموعة من المضيفين والمستخدمين الذين ينتمون إليها، ويُصطلَح أن الحقل يجب أن يكون بأحرف كبيرة؛ سيستخدم أوبنتو افتراضيًا عنوان DNS مُحوّلًا إلى أحرفٍ كبيرة (EXAMPLE.COM) اسمًا للحقل.</li><li><strong>مركز توزيع المفاتيح (Key Distribution Center‏ [KDC])</strong>: يتكون من ثلاثة أقسام: قاعدة بيانات لكل المبادئ، وخادوم استيثاق، وخادوم منح بطاقات (ticket granting server)؛ يحب أن يكون هنالك مركز توزيع للمفاتيح واحد على الأقل لكل حقل.</li><li><strong>بطاقة منح البطاقات (Ticket Granting Ticket)</strong>: تُصدَر من خادوم الاستيثاق (Authentication Server‏ [AS])؛ بطاقة منح البطاقات (TGT) مشفرة بكلمة مرور المستخدم الذي يعلمها فقط المستخدم و مركز توزيع المفاتيح (KDC).</li><li><strong>خادوم منح البطاقات (Ticket Granting Server‏ [TGS])</strong>: يُصدِر خدمة البطاقات للعملاء عند الطلب.</li><li><strong>البطاقات</strong>: تأكيد هوية مبدأين، أحد تلك المبادئ هو المستخدم، والآخر هو الخدمة المطلوبة من المستخدم؛ تؤسس البطاقات مفتاح تشفير ليُستخدَم في الاتصالات الآمنة أثناء جلسة الاستيثاق.</li><li><strong>ملفات Keytab</strong>: الملفات المستخرجة من قاعدة بيانات مبادئ مركز توزيع المفاتيح وتحتوي على مفتاح التشفير للخدمة أو المضيف.</li></ul><p dir="rtl">ولجمع القطع مع بعضها بعضًا، لدى الحقل مركز توزيع مفاتيح واحد على الأقل -ويفضل أن يكون لديه أكثر من واحد لضمان توفر الخدمة- الذي يحتوي على قاعدة بيانات بالمبادئ، وعندما يُسجِّل مستخدمٌ دخوله إلى منصة العمل المضبوطة لاستخدام استيثاق Kerberos؛ فإن مركز توزيع المفاتيح يصدر بطاقة منح البطاقات (TGT)، وإذا كانت التصاريح التي أعطاها المستخدم مطابقة، فسيتم الاستيثاق من المستخدم وبإمكانه الآن طلب البطاقات لخدمات Kerberos من خادوم منح البطاقات (TGS)، ستسمح خدمة البطاقات للمستخدم أن يستوثق إلى خدمة دون أن يُدخِل اسم المستخدم أو كلمة المرور.</p><h2 dir="rtl">خادوم Kerberos</h2><h3 dir="rtl"><a rel="external nofollow" name="7.3.2.1.%D8%A7%D9%84%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA%7Coutline"></a> التثبيت</h3><p dir="rtl">لنقاشنا هذا، سننشِئ مجال MIT Kerberos مع الخاصيات الآتية (عدِّلها لتلائم حاجاتك):</p><ul dir="rtl"><li><strong>الحقل</strong>: EXAMPLE.COM.</li><li><strong>مركز توزيع المفاتيح الرئيسي</strong>: kdc01.example.com‏ (192.168.0.1).</li><li><strong>مركز توزيع المفاتيح الثانوي</strong>: kdc02.example.com‏ (192.168.0.2).</li><li><strong>مبدأ المستخدم</strong>: steve.</li><li><strong>مبدأ المدير</strong>: steve/admin.</li></ul><p dir="rtl"><strong>ملاحظة:</strong> من المستحسن -وبشدة- أن تكون معرفات مستخدمين الشبكة الموثوقين في مجال مختلف عن المستخدمين المحليين (لنقل أنه يبدأ من 5000).</p><p dir="rtl">قبل تثبيت خادوم Kerberos، فمن الضروري وجود خادوم DNS مضبوط مسبقًا؛ ولما كان حقل Kerberos عرفيًا يستخدم اسم النطاق، فإن هذا القسم يستخدم النطاق EXAMPLE.COM التي ستُشرح طريقة ضبطه في قسم الرئيس الأولي في الدرس الخاص بخادوم DNS الذي سينشر لاحقًا في هذه السلسلة.</p><p dir="rtl">Kerberos هو بروتوكول حساس بالنسبة للوقت؛ فلو كان وقت النظام المحلي يختلف بين جهاز العميل وجهاز الخادوم أكثر من خمس دقائق (افتراضيًا)، فلن تستطيع منصة العمل أن تستوثق من العميل. ولتصحيح المشكلة، يجب أن يزامن جميع المضيفين وقتهم بواسطة بروتوكول وقت الشبكة (NTP)؛ للمزيد من المعلومات حول ضبط NTP، راجع الدرس «<a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%B2%D8%A7%D9%85%D9%86%D8%A9-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-ntp-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r171/">مزامنة الوقت باستخدام بروتوكول NTP</a><span style="line-height: 22.4px;">».</span></p><p dir="rtl">أول خطوة في ضبط حقل Kerberos هي تثبيت حزمتَيّ <span style="font-family:courier new,courier,monospace;">krb5-kdc</span> و <span style="font-family:courier new,courier,monospace;">krb5-admin-server</span>؛ أدخل الأمر الآتي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-kdc krb5-admin-server</pre><p dir="rtl">ستُسأل في نهاية التثبيت عن اسم مضيف Kerberos وخواديم Admin -اللذان يمكن أن يكونا نفس الخادوم أو غيره- للحقل (realm).</p><p dir="rtl"><strong>ملاحظة:</strong> افتراضيًا، يُنشَأ الحقل من اسم نطاق مركز توزيع المفاتيح.</p><p dir="rtl">ثم أنشِئ حقلًا جديدًا باستخدام الأداة <span style="font-family:courier new,courier,monospace;">kdb5_newrealm</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_newrealm</pre><h3 dir="rtl">الضبط</h3><p dir="rtl">تستخدم الأسئلة التي سألوك إياها أثناء التثبيت لضبط ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.conf</span>؛ إذا احتجت لتعديل إعدادات مركز توزيع المفتاح (KDC) فعدِّل ببساطة الملف وأعد تشغيل عفريت <span style="font-family:courier new,courier,monospace;">krb5-kdc</span>. إذا احتجت لإعادة ضبط Kerberos من الصفر، ربما لتغير اسم الحقل، فيمكنك ذلك بالأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg-reconfigure krb5-kdc</pre><ol><li><p dir="rtl">بعد أن يعمل KDC عملًا سليمًا، فإنه من الضروري وجود مستخدم مدير (مبدأ المدير). من المستحسن استخدام اسم مستخدم مختلف عن اسم المستخدم الذي تستعمله عادةً. يمكن فعل ذلك عبر الأداة<span style="font-family:courier new,courier,monospace;"> kadmin.local</span>، بإدخال الأمر الآتي في الطرفية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kadmin.local
Authenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: <strong>addprinc steve/admin</strong>
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: <strong>quit</strong></pre><p dir="rtl">في المثال السابق، يكون <span style="font-family:courier new,courier,monospace;">steve</span> هو مبدأ، و ‎<span style="font-family:courier new,courier,monospace;">/admin</span> هو نموذج، و يشير ‎<span style="font-family:courier new,courier,monospace;">@EXAMPLE.COM</span> إلى الحقل، ويكون مبدأ المستخدم هو <span style="font-family:courier new,courier,monospace;">steve@EXAMPLE.COM</span>، ويجب أن يحمل امتيازات المستخدم العادي فقط.</p><p dir="rtl"><strong>ملاحظة</strong>: استبدل <span style="font-family:courier new,courier,monospace;">EXAMPLE.COM</span> و <span style="font-family:courier new,courier,monospace;">steve</span> بالحقل واسم مستخدم المدير عندك على التوالي.</p><ol start="2"><li><p dir="rtl">ثم يحتاج مستخدم المدير الجديد إلى أن يحصل على أذونات قوائم التحكم بالوصول (ACL) الملائمة؛ تُضبَط هذه الأذونات في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5kdc/kadm5.acl</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">steve/admin@EXAMPLE.COM *</pre><p dir="rtl">يعطي هذا القيد <span style="font-family:courier new,courier,monospace;">steve/admin</span> القدرة على القيام بأي عملية في جميع المبادئ في الحقل؛ تستطيع ضبط المبادئ بامتيازات أقل؛ والذي يكون ملائمًا إذا احتجت مبدأ مدير يستطيع طاقم العمل المبتدئ استخدامه في عملاء Kerberos؛ راجع صفحة الدليل<span style="font-family:courier new,courier,monospace;"> man kadm5.acl</span> لمزيد من التفاصيل.</p><ol start="3"><li><p dir="rtl">أعد الآن تشغيل <span style="font-family:courier new,courier,monospace;">krb5-admin-server</span> لكي تأخذ قوائم التحكم بالوصول الجديدة مفعولها:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service krb5-admin-server restart</pre><ol start="4"><li><p dir="rtl">يمكن اختبار مبدأ المستخدم الجديد باستخدام الأداة <span style="font-family:courier new,courier,monospace;">kinit</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kinit steve/admin
steve/admin@EXAMPLE.COM's Password:</pre><p dir="rtl">بعد إدخال كلمة المرور، فاستخدم <span style="font-family:courier new,courier,monospace;">klist</span> لعرض معلومات حول بطاقة منح البطاقات (TGT):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">حيث اسم ملف التخزين المؤقت<span style="font-family:courier new,courier,monospace;"> krb5cc_1000</span> مكون من السابقة <span style="font-family:courier new,courier,monospace;">krb5cc_‎</span> ومعرف المستخدم <span style="font-family:courier new,courier,monospace;">uid</span>، الذي في هذه الحالة 1000؛ ربما تحتاج لإضافة قيد في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/hosts</span> من أجل مركز توزيع المفاتيح لكي يستطيع العميل العثور عليه، على سبيل المثال:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">192.168.0.1 kdc01.example.com kdc01</pre><p dir="rtl">استبدل <span style="font-family:courier new,courier,monospace;">192.168.0.1</span> بعنوان مركز توزيع المفاتيح؛ هذا يحدث عادة عندما تملك حقل Kerberos يشمل عدّة شبكات مفصولة بموجهات (routers).</p><ol start="5"><li><p dir="rtl">أفضل طريقة للسماح للعملاء بتحديد مركز توزيع المفاتيح للحقل هو استخدم سجلات DNS SRV، أضف ما يلي إلى <span style="font-family:courier new,courier,monospace;">‎/etc/named/db.example.com</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">_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.</pre><p dir="rtl"><strong>ملاحظة</strong>: استبدل <span style="font-family:courier new,courier,monospace;">EXAMPLE.COM </span>،<span style="font-family:courier new,courier,monospace;">kdc01</span> و <span style="font-family:courier new,courier,monospace;">kdc02</span>، باسم النطاق، ومركز توزيع المفاتيح الرئيسي، ومركز توزيع المفاتيح الثانوي على التوالي وبالترتيب.</p><p dir="rtl">انظر إلى الدرس <a href="https://academy.hsoub.com/devops/servers/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%AF%D9%85%D8%A9-%D8%A7%D8%B3%D9%85-%D8%A7%D9%84%D9%86%D8%B7%D8%A7%D9%82-dns-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r176/">تنصيب وإعداد خدمة اسم النطاق DNS</a> لتعليمات تفصيلية حول ضبط DNS.</p><p dir="rtl">أصبح حقل Kerberos الجديد جاهزًا لاستيثاق العملاء.</p><h2 dir="rtl">مركز توزيع المفاتيح الثانوي</h2><p dir="rtl">بعد أن حصلت على مركز توزيع المفاتيح (KDC) في شبكتك، فمن المستحسن الحصول على مركز ثانوي في حال لم يكن المركز الرئيسي متوافرًا؛ وأيضًا لو كان عندك عملاء Kerberos في شبكات مختلفة (ربما مفصولة بموجهات تستخدم NAT)، فمن الحكمة وضع مركز توزيع ثانوي في كل شبكة من تلك الشبكات.</p><ol><li><p dir="rtl">أولًا، ثبت الحزم، عندما تسأل عن أسماء Kerberos و Admin server فادخل اسم مركز توزيع المفاتيح الرئيسي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-kdc krb5-admin-server</pre><ol start="2"><li><p dir="rtl">بعد أن ثبتت الحزم، أنشِئ مبدأ مضيف KDC، بإدخال الأمر الآتي في الطرفية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kadmin -q "addprinc -randkey host/kdc02.example.com"</pre><p dir="rtl"><strong>ملاحظة</strong>: بعد تنفيذك لأوامر kadmin فستُسأل عن كلمة مرور <span style="font-family:georgia,serif;">username/admin@EXAMPLE.COM</span>.</p><ol start="3"><li><p dir="rtl">استخرج ملف Keytab:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kadmin -q "ktadd -norandkey -k keytab.kdc02 host/kdc02.example.com"</pre><ol start="4"><li><p dir="rtl">يجب أن يكون هنالك ملف <span style="font-family:courier new,courier,monospace;">keytab.kdc02</span> في مجلدك الحالي، انقل الملف إلى ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.keytab</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mv keytab.kdc02 /etc/krb5.keytab</pre><p dir="rtl"><strong>ملاحظة</strong>: المسار إلى <span style="font-family:courier new,courier,monospace;">keytab.kdc02</span> يختلف تبعًا لمجلد العمل الحالي.</p><p dir="rtl">تستطيع أيضًا أن تُشكِّل قائمةً بالمبادئ في ملف Keytab؛ مما يفيد في استكشاف الأخطاء؛ استخدم الأداة <span style="font-family:courier new,courier,monospace;">klist</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo klist -k /etc/krb5.keytab</pre><p dir="rtl">يشير الخيار <span style="font-family:courier new,courier,monospace;">‎-k</span> إلى أن الملف هو ملف <span style="font-family:courier new,courier,monospace;">keytab</span>.</p><ol start="5"><li><p dir="rtl">هنالك حاجة لوجود ملف <span style="font-family:courier new,courier,monospace;">kpropd.acl </span>في كل مركز لتوزيع المفاتيح الذي يعرض كل مراكز توزيع المفاتيح للحقل؛ على سبيل المثال، أَنشِئ في مركز توزيع المفاتيح الرئيسي والثانوي الملف <span style="font-family:courier new,courier,monospace;">‎/etc/krb5kdc/kpropd.acl</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">host/kdc01.example.com@EXAMPLE.COM
host/kdc02.example.com@EXAMPLE.COM</pre><ol start="6"><li><p dir="rtl">أنشِئ قاعدة بيانات فارغة في المركز الثانوي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_util -s create</pre><ol start="7"><li><p dir="rtl">ابدأ الآن عفريت <span style="font-family:courier new,courier,monospace;">kpropd</span>، الذي يستمع إلى الاتصالات من أداة <span style="font-family:courier new,courier,monospace;">kprop</span>؛ تستخدم أداة <span style="font-family:courier new,courier,monospace;">kprop </span>لنقل ملفات التفريغ:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kpropd -S</pre><ol start="8"><li><p dir="rtl">من الطرفية في مركز توزيع المفاتيح الرئيسي، أنشئ ملف تفريغ من قاعدة بيانات المبادئ:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_util dump /var/lib/krb5kdc/dump</pre><ol start="9"><li><p dir="rtl">استخرج ملف<span style="font-family:courier new,courier,monospace;"> keytab</span> في مركز توزيع المفاتيح الرئيسي وانقله إلى ‎<span style="font-family:courier new,courier,monospace;">/etc/krb5.keytab</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kadmin -q "ktadd -k keytab.kdc01 host/kdc01.example.com"
sudo mv keytab.kdc01 /etc/krb5.keytab</pre><p dir="rtl"><strong>ملاحظة</strong>: تأكد من وجود مضيف مرتبط مع <span style="font-family:courier new,courier,monospace;">kdc01.example.com</span> قبل استخراج Keytab.</p><ol start="10"><li><p dir="rtl">استخدم الأداة <span style="font-family:courier new,courier,monospace;">kprop</span> لدفع التغيرات إلى قاعدة البيانات في KDC الثانوي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.com</pre><p dir="rtl"><strong>ملاحظة</strong>: يجب أن تَظهر رسالة SUCCEEDED إذا تمت عملية «النسخ» بنجاح، إذا كانت هنالك رسالة خطأ، فتحقق من <span style="font-family:courier new,courier,monospace;">‎/var/log/syslog </span>في مركز توزيع المفاتيح الثانوي لمزيدٍ من المعلومات.</p><p dir="rtl">ربما ترغب بإنشاء مهمة مجدولة لتحديث قاعدة البيانات في مركز توزيع المفاتيح الثانوي كل فترة زمنية؛ ما يلي سيدفع التغييرات إلى قاعدة البيانات كل ساعة (لاحظ أن السطر الطويل قد جُزِّء لجزأين لكي يتسع في عرض الصفحة):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># m h dom mon dow command
0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump &amp;&amp;
/usr/sbin/kprop -r EXAMPLE.COM -f /var/lib/krb5kdc/dump kdc02.example.com</pre><ol start="11"><li><p dir="rtl">أنشئ ملف <span style="font-family:courier new,courier,monospace;">stash</span> في المركز الثانوي لكي يُحفَظ به مفتاح Kerberos الرئيسي (Master Key):</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo kdb5_util stash</pre><ol start="12"><li><p dir="rtl">في النهاية، شغل عفريت <span style="font-family:courier new,courier,monospace;">krb5-kdc</span> في المركز الثانوي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service krb5-kdc start</pre><p dir="rtl">يجب أن يكون المركز الثانوي قادرًا على إعطاء البطاقات للحقل؛ يمكنك اختبار ذلك بإيقاف عفريت<span style="font-family:courier new,courier,monospace;"> krb5-kdc</span> في المركز الرئيسي؛ ثم استخدام <span style="font-family:courier new,courier,monospace;">kinit</span> لطلب بطاقة، وإذا جرى كل شيء على ما يرام، فيجب أن تحصل على بطاقة من مركز توزيع المفاتيح الثانوي؛ عدا ذلك، تحقق من <span style="font-family:courier new,courier,monospace;">‎/var/log/syslog</span> و ‎<span style="font-family:courier new,courier,monospace;">/var/log/auth.log</span> في مركز توزيع المفاتيح الثانوي.</p><h2 dir="rtl">عميل Kerberos للينكس</h2><p dir="rtl">يشرح هذا القسم ضبط نظام لينُكس كعميل Kerberos؛ هذا سيسمح بالوصول إلى أيّة خدمة تستخدم Kerberos بعد أن يستطيع المستخدم تسجيل دخوله إلى النظام.</p><h3 dir="rtl">التثبيت</h3><p dir="rtl">لكي يتم الاستيثاق إلى حقل Kerberos؛ فإن حزمتَيّ<span style="font-family:courier new,courier,monospace;"> krb5-user</span> و <span style="font-family:courier new,courier,monospace;">libpam-krb5</span> مطلوبتان؛ بالإضافة إلى غيرها من الحزم غير المطلوبة لكنها تسهل عملك؛ أدخِل الأمر الآتي في مِحَث الطرفية لتثبيت هذه الحزم:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config</pre><p dir="rtl">تسمح حزمة <span style="font-family:courier new,courier,monospace;">auth-client-config</span> بضبط PAM ضبطًا بسيطًا للاستيثاق من مصادر عدّة، وستُخزِّن حزمة <span style="font-family:courier new,courier,monospace;">libpam-ccreds</span> اعتماديات الاستيثاق مما يسمح لك بتسجيل الدخول في حال لم يكن مركز توزيع المفاتيح متاحًا؛ ستفيد هذه الحزمة الحواسيب المحمولة، التي يمكن أن تستوثق باستخدام Kerberos عندما تكون في شبكة الشركة، لكنها تحتاج إلى الوصول عندما تكون خارج الشبكة أيضًا.</p><h3 dir="rtl">الضبط</h3><p dir="rtl">لضبط العميل، أدخل ما يلي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg-reconfigure krb5-config</pre><p dir="rtl">سيُطلَب منك إدخال اسم حقل Kerberos؛ أيضًا إن لم لديك DNS مضبوط مع سجلات Kerberos SRV؛ فستظهر قائمة تسألك عن اسم مضيف مركز توزيع المفاتيح وخادوم إدارة الحقل.</p><p dir="rtl">يضيف <span style="font-family:courier new,courier,monospace;">dpkg-reconfigure</span> قيودًا إلى ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/krb5.conf</span> للحقل الخاص بك، يجب أن تحصل على قيود شبيهة بالآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[libdefaults]
        default_realm = EXAMPLE.COM
...
[realms]
        EXAMPLE.COM = {
                kdc = 192.168.0.1
                admin_server = 192.168.0.1
        }</pre><p dir="rtl"><strong>ملاحظة:</strong> إذا ضَبطت <span style="font-family:courier new,courier,monospace;">uid</span> لكلٍ من مستخدمي شبكتك الموثوقين ليبدأ من 5000؛ كما هو منصوح به في قسم «التثبيت» من درس <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">OpenLDAP</a>، فتستطيع عندها أن تخبر pam بأن يستوثق باستخدام مستخدمي Kerberos عندما يكون uid أكبر من 5000:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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</pre><p dir="rtl">هذا ما سيتجنب الطلب لكلمات مرور (غير موجودة) لمستخدم موثوق محليًا عند تغيير كلمة المرور باستخدام <span style="font-family:courier new,courier,monospace;">passwd</span>.</p><p dir="rtl">يمكنك اختبار الضبط بطلب بطاقة باستخدام الأداة <span style="font-family:courier new,courier,monospace;">kinit</span>، على سبيل المثال:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kinit steve@EXAMPLE.COM
Password for steve@EXAMPLE.COM:</pre><p dir="rtl">يمكن عرض التفاصيل عند إعطاء بطاقة باستخدام klist:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">ثم استخدم <span style="font-family:courier new,courier,monospace;">auth-client-config</span> لضبط وحدة <span style="font-family:courier new,courier,monospace;">libpam-krb5</span> لطلب بطاقة أثناء تسجيل الدخول:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo auth-client-config -a -p kerberos_example</pre><p dir="rtl">يجب أن تحصل الآن على بطاقة بعد عملية استيثاق ناجحة.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>للمزيد من المعلومات حول نسخة MIT من Kerberos، راجع موقع «<a rel="external nofollow" href="http://web.mit.edu/Kerberos/">MIT Kerberos</a>».</li><li>توجد بعض التفاصيل في صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/Kerberos">Kerberos</a>».</li><li>الكتاب من O'Reilly المسمى «<a rel="external nofollow" href="http://oreilly.com/catalog/9780596004033/">Kerberos: The Definitive Guide</a>» هو مرجع ممتاز أثناء ضبط Kerberos.</li><li>تستطيع أيضًا القدوم إلى قناتَيّ ‎#ubuntu-server و ‎#kerberos على خادوم IRC الشهير <a rel="external nofollow" href="http://freenode.net/">Freenode</a> إذا كانت لديك أسئلة حول Kerberos.</li></ul><p dir="rtl">ترجمة -وبتصرف- للمقال <a href="https://help.ubuntu.com/lts/serverguide/kerberos.html" rel="external nofollow">Ubuntu Server Guide: Kerberos</a>.</p>
]]></description><guid isPermaLink="false">181</guid><pubDate>Sun, 17 Jan 2016 12:05:34 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x645;&#x646; &#x62E;&#x627;&#x62F;&#x648;&#x645; OpenLDAP &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D9%85%D9%86-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r179/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-auth.png.2e1babe8f90cc6a9102f9f08526a7d23.png" /></p>

<p dir="rtl">تعرفنا في المقالين السابقين على كيفية <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">تثبيت وضبط خادوم OpenLDAP على أوبنتو</a> و كيفية القيام بعملية <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%A7%D9%84%D8%AA%D9%86%D8%A7%D8%B3%D8%AE-%D9%81%D9%8A-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r178/">التناسخ</a> لتفادي توقف الخادوم.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-auth.png.45110ac8ae0b4f0487039f7c1d439f7e.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="11009" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-auth.thumb.png.24b00364d0b70d729c28b42c2cbbd47a.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-openldap-auth.thumb.png.24"></a></p><h2 dir="rtl">استيثاق LDAP</h2><p dir="rtl">بعد أن أصبح عندك خادوم LDAP يعمل جيدًا، فستحتاج إلى تثبيت مكتبات على جهاز العميل التي تعلم كيف ومتى عليها أن تتصل إلى الخادوم؛ يتم ذلك في أوبنتو تقليديًا بتثبيت حزمة <span style="font-family:courier new,courier,monospace;">libnss-ldap</span>؛ ستجلب هذه الحزمة أدواتٍ أخرى، وستساعدك في خطوة الضبط؛ ثبت الآن الحزمة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install libnss-ldap</pre><p dir="rtl">ستُسأل عن معلوماتٍ حول خادوم LDAP؛ إذا ارتكبت خطأً هنا، فتستطيع المحاولة مرة أخرى بالأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg-reconfigure ldap-auth-config</pre><p dir="rtl">ستظهر نتائج مربع الحوار السابق في ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/ldap.conf</span>، إذا تطلَّب الخادوم خياراتٍ غير موجودة في القائمة، فعليك تعديل هذا الملف وفقًا لها.</p><p dir="rtl">اضبط LDAP لاستخدامه مع NSS:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo auth-client-config -t nss -p lac_ldap</pre><p dir="rtl">اضبط النظام لاستخدام LDAP للاستيثاق:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo pam-auth-update</pre><p dir="rtl">اختر LDAP وأيّة آليات استيثاق أخرى قد تحتاج لها من القائمة.</p><p dir="rtl">تستطيع الآن تسجيل الدخول بتصاريح مبنية على LDAP.</p><p dir="rtl">سيحتاج عملاء LDAP إلى الإشارة إلى عدّة خواديم إذا اُستخدِم الاستنساخ؛ يجب أن تضع شيئًا شبيهًا بالسطر الآتي في ملف<span style="font-family:courier new,courier,monospace;"> ‎/‎etc/ldap.conf</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">uri ldap://ldap01.example.com ldap://ldap02.example.com</pre><p dir="rtl">إذا نَفِذَت مهلة (timeout) الطلب، فسيحاول العميل الوصول إلى المستهلك (<strong>ldap02</strong>) إذا لم يستجيب المزود (<strong>ldap01</strong>).</p><p dir="rtl">إذا كنت تريد استخدام LDAP لتخزين مستخدمي سامبا، فإن عليك ضبط سامبا ليستوثق عبر LDAP، وسنشرح ذلك في الدرس القادم.</p><p dir="rtl"><strong>ملاحظة: </strong>بديل عن حزمة <span style="font-family:courier new,courier,monospace;">libnss-ldap </span>هي حزمة<span style="font-family:courier new,courier,monospace;"> libnss-ldapd</span>؛ التي ستجلب معها حزمة nscd الذي قد لا نرغب فيها؛ احذفها ببساطة بعد التثبيت.</p><h2 dir="rtl">إدارة المستخدمين والمجموعات</h2><p dir="rtl">تأتي حزمة <span style="font-family:courier new,courier,monospace;">ldap-utils </span>مع أدوات كافية لإدارة الدليل، لكن السلسلة الكبيرة من الإعدادات المطلوبة قد تصعِّب استخدامها؛ تحتوي حزمة <span style="font-family:courier new,courier,monospace;">ldapscripts</span> على سكربتات متعلقة بهذه الأدوات التي يجدها بعض الأشخاص أسهل في الاستخدام.</p><p dir="rtl">ثبِّت الحزمة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install ldapscripts</pre><p dir="rtl">ثم عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/ldapscripts/ldapscripts.conf</span> حتى يصبح شبيهًا بالآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">أنشِئ الآن الملف<span style="font-family:courier new,courier,monospace;"> ldapscripts.passwd</span> لكي يستطيع rootDN الوصول إلى الدليل:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo sh -c "echo -n 'secret' &gt; /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapscripts.passwd</pre><p dir="rtl"><strong>ملاحظة: </strong>ضع كلمة المرور الخاصة بمستخدم rootDN بدلًا من «secret».</p><p dir="rtl">أصبحت السكربتات جاهزةً لإدارة دليلك؛ هذه بضعة أمثلة حول طريقة استخدامها:</p><ul><li><p dir="rtl">إنشاء مستخدم جديد:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapadduser george example</pre><p dir="rtl">هذا ما سيُنشِئ مستخدمًا بمعرِّف george ويضبط مجموعة المستخدم الرئيسية إلى example.</p><ul><li><p dir="rtl">تغيير كلمة مرور المستخدم:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapsetpasswd george
Changing password for user uid=george,ou=People,dc=example,dc=com
<strong>New Password:
New Password (verify):</strong></pre><ul><li><p dir="rtl">حذف مستخدم:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapdeleteuser george</pre><ul><li><p dir="rtl">إضافة مجموعة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapaddgroup qa</pre><ul><li><p dir="rtl">حذف مجموعة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapdeletegroup qa</pre><ul><li><p dir="rtl">إضافة مستخدم إلى مجموعة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapaddusertogroup george qa</pre><p dir="rtl">عليك أن ترى الآن خاصية <span style="font-family:courier new,courier,monospace;">memberUid </span>لمجموعة qa ذات القيمة george.</p><ul><li><p dir="rtl">إزالة مستخدم من مجموعة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapdeleteuserfromgroup george qa</pre><p dir="rtl">يجب أن تزال الآن الخاصية <span style="font-family:courier new,courier,monospace;">memberUid</span> من المجموعة qa.</p><ul><li><p dir="rtl">يسمح لك سكربت <span style="font-family:courier new,courier,monospace;">ldapmodifyuser</span> بإضافة أو حذف أو استبدل خاصيات المستخدم؛ يستخدم هذا السكربت البنية العامة لأداة <span style="font-family:courier new,courier,monospace;">ldapmodify</span>، على سبيل المثال:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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
<strong>replace: gecos
gecos: George Carlin</strong></pre><p dir="rtl">يجب أن يصبح الآن المستخدم gecos باسم «George Carlin».</p><ul><li><p dir="rtl">ميزة جميلة من ميزات <span style="font-family:courier new,courier,monospace;">ldapscripts</span> هو نظام القوالب؛ تسمح لك القوالب بتخصيص خاصيات المستخدم، والمجموعة، وكائنات الجهاز؛ فعلى سبيل المثال، لتفعيل قالب user، عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/ldapscripts/ldapscripts.conf</span> مغيّرًا:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">UTEMPLATE="/etc/ldapscripts/ldapadduser.template"</pre><p dir="rtl">هنالك عينات عن القوالب في مجلد <span style="font-family:courier new,courier,monospace;">‎/etc/ldapscripts</span>، انسخ أو أعد تسمية ملف<span style="font-family:courier new,courier,monospace;"> ldapadduser.template.sample</span> إلى <span style="font-family:courier new,courier,monospace;">‎/etc/ldapscripts/ldapadduser.template</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \
/etc/ldapscripts/ldapadduser.template</pre><p dir="rtl">عدِّل القالب الجديد ليضيف الخاصيات التي تريدها؛ سيُنشِئ ما يلي مستخدمين جدد بقيمة <span style="font-family:courier new,courier,monospace;">inetOrgPerson</span> للخاصية <span style="font-family:courier new,courier,monospace;">objectClass</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn: uid=&lt;user&gt;,&lt;usuffix&gt;,&lt;suffix&gt;
objectClass: inetOrgPerson
objectClass: posixAccount
cn: &lt;user&gt;
sn: &lt;ask&gt;
uid: &lt;user&gt;
uidNumber: &lt;uid&gt;
gidNumber: &lt;gid&gt;
homeDirectory: &lt;home&gt;
loginShell: &lt;shell&gt;
gecos: &lt;user&gt;
description: User account
title: Employee</pre><p dir="rtl">لاحظ القيمة <span style="font-family:courier new,courier,monospace;">&lt;ask&gt;</span> المُستخدَمة للخاصية <span style="font-family:courier new,courier,monospace;">sn</span>؛ وهي ما سيجعل <span style="font-family:courier new,courier,monospace;">ldapadduser</span> يسألك عن قيمتها.</p><p dir="rtl">هنالك أدوات في هذه الحزمة لم نشرحها هنا، هذه هي قائمةٌ كاملةٌ بها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldaprenamemachine
ldapadduser
ldapdeleteuserfromgroup
ldapfinger
ldapid
ldapgid
ldapmodifyuser
ldaprenameuser
lsldap
ldapaddusertogroup
ldapsetpasswd
ldapinit
ldapaddgroup
ldapdeletegroup
ldapmodifygroup
ldapdeletemachine
ldaprenamegroup
ldapaddmachine
ldapmodifymachine
ldapsetprimarygroup
ldapdeleteuser</pre><h2 dir="rtl">النسخ الاحتياطي والاسترجاع</h2><p dir="rtl">الآن يجب أن يعمل LDAP كما نريده تمامًا، فحان الآن الوقت للتحقق من أن عملنا يمكن أن يُستَرجَع وقت الحاجة.</p><p dir="rtl">كل ما نحتاج هو طريقة لنسخ قاعدة بيانات ldap احتياطيًا، وخصوصًا السند الخلفي (backend التي هي <strong>cn=config</strong>) والواجهة الأمامية (frontend التي هي <strong>dc=example,dc=com</strong>)؛ إذا كنت ستنسخ هذه القواعد نسخًا احتياطيًا إلى- ولِنَقُل- ‎<span style="font-family:courier new,courier,monospace;">/export/backup</span>، فإننا سنستخدم <span style="font-family:courier new,courier,monospace;">slapcat</span> كما هو موضَّح في السكربت الآتي المدعو ‎<span style="font-family:courier new,courier,monospace;">/usr/local/bin/ldapbackup</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">#!/bin/bash

BACKUP_PATH=/export/backup
SLAPCAT=/usr/sbin/slapcat

nice ${SLAPCAT} -n 0 &gt; ${BACKUP_PATH}/config.ldif
nice ${SLAPCAT} -n 1 &gt; ${BACKUP_PATH}/example.com.ldif
nice ${SLAPCAT} -n 2 &gt; ${BACKUP_PATH}/access.ldif
chmod 640 ${BACKUP_PATH}/*.ldif</pre><p dir="rtl"><strong>ملاحظة:</strong> هذه الملفات هي ملفات نصية غير مضغوطة تحتوي كل شيء في قواعد بيانات LDAP بما فيها مخطط الشجرة، وأسماء المستخدمين، وكل كلمات المرور؛ لذلك ربما تفكر في جعل ‎<span style="font-family:courier new,courier,monospace;">/export/backup</span> قسمًا مشفرًا؛ وحتى كتابة سكربت يشفر هذه الملفات عند إنشائها، وربما تفعل كلا الأمرين، ولكن ذلك متعلقٌ بمتطلبات الأمن في نظامك.</p><p dir="rtl">كل ما يلزم الآن هو الحصول على سكربت مهام مجدولة (cron) لتشغيل هذا البرنامج كل فترة زمنية (ترى أنها مناسبة)؛ سيكون ملائمًا للكثيرين جدولة تنفيذ البرنامج مرة واحدة كل يوم؛ لكن قد يحتاج الآخرون إلى مراتٍ أكثر في اليوم؛ هذا مثال عن سكربت cron مدعو ‎<span style="font-family:courier new,courier,monospace;">/etc/cron.d/ldapbackup</span>، والذي سيعمل كل ليلة في تمام الساعة 22:45:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">MAILTO=backup-emails@domain.com
45 22 * * * root /usr/local/bin/ldapbackup</pre><p dir="rtl">وبعد إنشاء الملفات، يجب نقلها لخادوم النسخ الاحتياطي.</p><p dir="rtl">وعلى فرض أنك أعدت تثبيت <span style="font-family:courier new,courier,monospace;">ldap</span>، فإن عملية الاسترجاع ستكون شبيهةً بما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>المصدر الأساسي هو توثيق <a rel="external nofollow" href="http://www.openldap.org/">www.openldap.org</a>.</li><li>هنالك الكثير من صفحات الدليل للحزمة <span style="font-family:courier new,courier,monospace;">slapd</span>؛ هذه أهمها آخذين بعين الاعتبار المعلومات المقدمة في هذا الفصل:</li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">man slapd
man slapd-config
man slapd.access
man slapo-syncprov</pre><ul><li><p dir="rtl">صفحات الدليل الأخرى:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">man auth-client-config
man pam-auth-update</pre><ul dir="rtl"><li>صفحة ويكي مجتمع أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/OpenLDAPServer">OpenLDAP</a>» تحتوي مجموعةً من الملاحظات.</li><li>كتاب O'Reilly المدعو «<a rel="external nofollow" href="http://www.oreilly.com/catalog/ldapsa/">LDAP System Administration</a>».</li><li>كتاب Packt المدعو «<a rel="external nofollow" href="http://www.packtpub.com/OpenLDAP-Developers-Server-Open-Source-Linux/book">Mastering OpenLDAP</a>».</li></ul><p dir="rtl">ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/openldap-server.html">Ubuntu Server Guide: OpenLDAP Server</a>.</p>
]]></description><guid isPermaLink="false">179</guid><pubDate>Mon, 11 Jan 2016 20:58:25 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x627;&#x644;&#x62A;&#x646;&#x627;&#x633;&#x62E; &#x641;&#x64A; &#x62E;&#x627;&#x62F;&#x648;&#x645; OpenLDAP &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%A7%D9%84%D8%AA%D9%86%D8%A7%D8%B3%D8%AE-%D9%81%D9%8A-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r178/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-replication.png.dd3698a8985e1694b042d7b335feb969.png" /></p>

<p dir="rtl">تعرفنا في الدرس السابق على كيفية <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">تثبيت وضبط خادوم openldap على أوبنتو</a>، سنتعرف في هذا الدرس على التناسخ في خادوم OpenLDAP.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-replication.png.e7fc8b579d36ab3555b9ea6da5132538.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="10939" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap-replication.thumb.png.70a8383942f81fe261e5ccd1b739e399.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-openldap-replication.thumb"></a></p><h2 dir="rtl">التناسخ</h2><p dir="rtl">تتزايد أهمية خدمة <span style="font-family:courier new,courier,monospace;">LDAP</span> عندما تزداد أنظمة الشبكات المُعتَمِدة عليها؛ تكون الممارسات العملية القياسية -في مثل هذه البيئة- هي بناء redundancy في LDAP لمنع توقف الخدمات إذا لم يعد يستجيب خادوم LDAP؛ يتم ذلك باستخدام تناسخ LDAP؛ نصل إلى التناسخ باستخدام محرك Syncrepl؛ الذي يسمح بمزامنة التغيرات باستخدام موديل «مستهلك-مزود»؛ نوع التناسخ الذي سنستخدمه في هذا الدرس هو دمج للنوعين الآتيين: <strong>refreshAndPersist</strong>، و <strong>delta-syncrepl</strong>؛ الذي يُرسِل فيه المزود القيود إلى المستهلك عند إنشائهم مباشرةً؛ بالإضافة إلى أنه لا تُرسَل جميع القيود، وإنما التغيرات التي حصلت فقط.</p><h3 dir="rtl">ضبط المزود</h3><p dir="rtl">سنبدأ بضبط المزود (Provider)</p><ol><li><p dir="rtl">أنشِئ ملف <span style="font-family:courier new,courier,monospace;">LDIF</span> بالمحتويات الآتية وسمِّه <span style="font-family:courier new,courier,monospace;">provider_sync.ldif</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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
-
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</pre><p dir="rtl">غيّر قيمة <strong>rootDN</strong> في ملف LDIF ليُطابِق الذي عندك في الدليل.</p><ol start="2"><li><p dir="rtl">لا يجب تعديل إعدادات apparmor لبرمجية slapd لتحديد موقع قاعدة بيانات accesslog، لأن الملف <span style="font-family:courier new,courier,monospace;">‎/etc/apparmor/local/usr.sbin.slapd </span>يحتوي على الأسطر الآتية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">/var/lib/ldap/accesslog/ r,
/var/lib/ldap/accesslog/** rwk,</pre><p dir="rtl">أنشِئ مجلدًا، وهيّء ملف ضبط قاعدة البيانات، وأعد تحميل apparmor:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><ol start="3"><li><p dir="rtl">أضف المحتويات الجديدة؛ وأعد تشغيل العفريت بسبب التعديل في apparmor:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif
sudo service slapd restart</pre><p dir="rtl">لقد ضُبِطَ المزود بنجاح.</p><h3 dir="rtl">ضبط المستهلك</h3><p dir="rtl">عليك الآن ضبط المستهلك.</p><ol><li><p dir="rtl">تثبيت البرمجية باتباع تعليمات قسم «<a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/">التثبيت</a>»؛ وتأكد أن قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span> مماثلة للمزود؛ وتحديدًا تأكد من أن المخططات ولاحقة قاعدة البيانات هي نفسها.</p></li><li><p dir="rtl">أنشِئ ملف LDIF بالمحتويات الآتية وسمِّه<span style="font-family:courier new,courier,monospace;"> consumer_sync.ldif</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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="(&amp;(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on
type=refreshAndPersist retry="60 +" syncdata=accesslog
-
add: olcUpdateRef
olcUpdateRef: ldap://ldap01.example.com</pre><p dir="rtl">تأكد أن قيم الخاصيات الآتية صحيحة:</p><ul dir="rtl"><li><strong>provider</strong> (اسم مضيف المزود –<span style="font-family:comic sans ms,cursive;">ldap01.example.com </span>في هذا المثال– أو عنوان IP).</li><li><strong>binddn</strong> (الاسم الفريد للمدير الذي تستخدمه).</li><li><strong>credentials</strong> (كلمة مرور المدير الذي تستخدمه).</li><li><strong>searchbase</strong> (لاحقة قاعدة البيانات التي تستخدمها).</li><li><strong>olcUpdateRef</strong> (اسم مضيف أو عنوان IP لخادوم المزود).</li><li><strong>rid</strong> عدد من ثلاثة أرقام يعرف النسخة، يجب أن يكون لكل مستهلك رقم rid واحد على الأقل).</li></ul><ol start="3"><li><p dir="rtl">أضف المحتويات الجديدة:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif</pre><p dir="rtl">لقد انتهيت، يجب أن يبدأ الآن تزامن قاعدتَيّ البيانات (ذاتَيّ اللاحقة <strong>dc=example,dc=com</strong>).</p><h3 dir="rtl">الاختبار</h3><p dir="rtl">بعد بدء الاستنساخ، تستطيع مراقبته بتشغيل الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldapsearch -z1 -LLLQY EXTERNAL -H ldapi:/// -s base contextCSN

dn: dc=example,dc=com
contextCSN: 20120201193408.178454Z#000000#000#000000</pre><p dir="rtl">عندما تتوافق المخرجات في المزود والمستهلك (<strong>20120201193408.178454Z#000000#000#000000</strong> في المثال السابق) في كلا الجهازين؛ فستكون عملية الاستنساخ قد تمَّت؛ وفي كل مرة يُجرى فيها تعديل في المزود، فإن القيمة ستُعدَّل وكذلك يجب أن تُعدَّل قيمة ناتج الأمر السابق في المستهلك أو المستهلكين.</p><p dir="rtl">إذا كان اتصالك ضعيفًا، أو كان حجم قاعدة بيانات ldap كبيرًا، فربما يحتاج contextCSN في المستهلك وقتًا ليطابق مثيله في المزود؛ لكنك تعلم أن العملية قيد الإجراء لأن contextCSN في المستهلك يزداد مع الزمن.</p><p dir="rtl">إذا كان contextCSN في المستهلك مفقودًا، أو كان لا يطابق المزود؛ فعليك إيقاف العملية والبحث عن سبب المشكلة قبل الإكمال، جرب التحقق من سجلات slapd‏ (syslog) وملفات auth في المزود للتأكد فيما إذا كانت طلبات الاستيثاق من المستهلك قد نجحت أم لا؛ وفيما إذا أعادت طلبياته للحصول على بيانات (ستشبه عبارات ldapsearch كثيرًا) أيّة أخطاء.</p><p dir="rtl">لاختبار إذا كان يعمل؛ جرب طلب DN في قاعدة البيانات في المستهلك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b dc=example,dc=com dn</pre><p dir="rtl">يجب أن تشاهد المستخدم «john» والمجموعة «miners» بالإضافة إلى عقدتَيّ «People» و «Groups».</p><h2 dir="rtl">التحكم في الوصول</h2><p dir="rtl">إدارة أي نوع من الوصول (قراءة، أو كتابة ...إلخ.) التي يجب أن يحصل عليها المستخدمون للموارد تدعى «التحكم في الوصول» (access control)؛ تعليمات الضبط المستخدمة تسمى «قوائم التحكم في الوصول» (access control lists) أو ACL.</p><p dir="rtl">عندما نُثبِّت حزمة slapd، فستُضبَط قوائم مختلفة للتحكم في الوصول؛ سنلقي نظرةً على بعض نتائج هذه القيم الافتراضية؛ وسنحصل بذلك على فكرة عن كيفية عمل قوائم التحكم بالوصول وكيفية ضبطها.</p><p dir="rtl">لكي نحصل على ACL فعال لطلبية LDAP، فسنحتاج إلى أن ننظر إلى سجلات قوائم التحكم بالوصول لقاعدة البيانات التي تُجرى الطلبيات عليها، بالإضافة إلى واجهة أمامية (frontend) خاصة لقاعدة البيانات؛ قوائم التحكم بالوصول المتعلقة بالنقطة الأخيرة تسلك سلوكًا افتراضيًا في حالة لم تتطابق النقطة الأولى؛ الواجهة الأمامية لقاعدة البيانات هي ثاني ما «تنظر» إليه قوائم التحكم بالوصول؛ وأول ما ستُطبِّقه قوائم التحكم بالوصول هو أول ما سُيطابَق («first match wins») بين مصدرَيّ قوائم التحكم بالوصول السابقَين؛ ستعطي الأوامر الآتية، على التوالي وبالترتيب، قيم ACL لقاعدة بيانات hdb ‏(«<strong>dc=example,dc=com</strong>») والقيم المتعلقة بالواجهة الأمامية لقاعدة البيانات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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
lcAccess:  {1}to dn.base="" by * read
olcAccess: {2}to * by self write by dn="cn=admin,dc=example,dc=com" write by *
              read</pre><p dir="rtl"><strong>ملاحظة:</strong> يملك rootDN دائمًا جميع الحقوق لقاعدة بياناته؛ تضمينها في قوائم التحكم بالوصول يوفر توضيحًا للضبط؛ لكنه يؤدي إلى تخفيض في أداء slapd.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">أول قائمة تحكم بالوصول هي مهمة ومحورية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous
              auth by dn="cn=admin,dc=example,dc=com" write by * none</pre><p dir="rtl">يمكن أن يعبر عنها بطريقة أخرى لتسهيل فهمها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">تركيبة قوائم التحكم بالوصول (هنالك قاعدتين) تجبر ما يلي:</p><ul dir="rtl"><li>الوصول المجهول 'auth' موفر إلى خاصية userPassword لكي يتم الاتصال الابتدائي؛ ربما هذا عكس البديهي، نحتاج إلى 'by anonymous auth' حتى لو لم نكن نريد الوصول المجهول إلى شجرة بيانات الدليل. بعد أن تتصل النهاية البعيدة، فعندها يمكن أن يقع الاستيثاق (انظر النقطة الآتية).</li><li>يمكن أن يحدث الاستيثاق لأن جميع المستخدمين لديهم وصول 'read' (بسبب 'by self write') لخاصية <span style="font-family:courier new,courier,monospace;">userPassword</span>.</li><li>عدا ذلك، فلا يمكن الوصول إلى خاصية <span style="font-family:courier new,courier,monospace;">userPassword</span> من أي مستخدمين آخرين؛ مع استثناء rootDN، الذي يملك وصولًا كاملًا إليها.</li><li>لكي يغير المستخدمون كلمات مرورهم، باستخدام <span style="font-family:courier new,courier,monospace;">passwd</span> أو غيرها من الأدوات، فإن خاصية <span style="font-family:courier new,courier,monospace;">shadowLastChange</span> يجب أن تكون متاحةً بعد الاستيثاق من المستخدم.</li></ul><p dir="rtl">يمكن البحث في شجرة DIT السابقة بسبب '<strong>by * read</strong>' في:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">to *
        by self write
        by dn="cn=admin,dc=example,dc=com" write
        by * read</pre><p dir="rtl">إذا لم يكن هذا مرغوبًا فعليك تعديل ACL؛ ولكي يكون الاستيثاق جبريًا أثناء طلب bind، فيمكنك بشكل بديل (أو بالمشاركة مع ACL المعدلة) استخدام التعليمة '<span style="font-family:courier new,courier,monospace;">olcRequire: authc</span>'.</p><p dir="rtl">وكما ذُكِر سابقًا، لا يوجد حساب إدارة مُنشَأ لقاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>. لكن هنالك هوية SASL التي تملك الوصول الكامل إليها؛ والتي تمثل root أو sudo؛ ها هي ذا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth</pre><p dir="rtl">سيعرض الأمر الآتي قوائم التحكم بالوصول (ACLs) لقاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">ولما كانت هذه هوية SASL، فإننا نحتاج إلى استخدام آلية SASL عندما نستخدم أداة LDAP كما رأينا ذلك للعديد من المرات في هذا الكتاب؛ هذه الآلية خارجية؛ انظر إلى الأمر السابق كمثال، لاحظ أنه:</p><ol dir="rtl"><li>يجب أن تستخدم sudo لكي تصبح بهوية الجذر لكي تطابق قوائم التحكم بالوصول.</li><li>الآلية الخارجية (EXTERNAL) تعمل باستخدام IPC (مقابل نطاقات UNIX) الذي يعني أنه عليك استخدام صيغة ldapi URI.</li></ol><p dir="rtl">طريقة موجزة للحصول على جميع قوائم التحكم بالوصول:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcAccess=*)' olcAccess olcSuffix</pre><p dir="rtl">هنالك المزيد من الأمور التي يجب الحديث عنها في موضوع التحكم في الوصول؛ راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man slapd.access</span>.</p><h2 dir="rtl"><a rel="external nofollow" name="7.1.8.TLS%7Coutline"></a><abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr></h2><p dir="rtl">عند الاستيثاق لخادوم OpenLDAP فمن الأفضل استخدام جلسة مشفرة؛ ويمكن أن يتم ذلك باستخدام أمن طبقة النقل (Transport Layer Security‏ [<abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>]).</p><p dir="rtl">هنا، سنكون «سلطة الشهادة» (Certificate Authority) الخاصة بنا وبعدها سنُنشِئ ونوقع شهادة خادوم LDAP؛ ولما كان slapd مُصَرَّفًا بمكتبة gnutls، فسنستخدم الأداة certtool لإكمال هذه المهام.</p><ol><li><p dir="rtl">ثبت حزمتَيّ <span style="font-family:courier new,courier,monospace;">gnutls-bin</span> و <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>-cert</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install gnutls-bin ssl-cert</pre><ol start="2"><li><p dir="rtl">أنشِئ مفتاحًا خاصًا لسلطة الشهادة:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo sh -c "certtool --generate-privkey &gt; /etc/ssl/private/cakey.pem"</pre><ol start="3"><li><p dir="rtl">أنشئ الملف/القالب <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/ca.info</span> لتعريف سلطة الشهادة:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cn = Example Company
ca
cert_signing_key</pre><ol start="4"><li><p dir="rtl">أنشِئ شهادة سلطة شهادات موقعة ذاتيًا:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo certtool --generate-self-signed \
--load-privkey /etc/ssl/private/cakey.pem \
--template /etc/ssl/ca.info \
--outfile /etc/ssl/certs/cacert.pem</pre><ol start="5"><li><p dir="rtl">اصنع مفتاحًا خاصًا للخادوم:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo certtool --generate-privkey \
--bits 1024 \
--outfile /etc/ssl/private/ldap01_slapd_key.pem</pre><p dir="rtl"><strong>ملاحظة:</strong> استبدل <span style="font-family:courier new,courier,monospace;">ldap01</span> في اسم الملف باسم مضيف خادومك؛ ستساعدك تسمية الشهادة والمفتاح للمضيف والخدمة التي تستخدمها في توضيح الأمور.</p><ol start="6"><li><p dir="rtl">أنشئ ملف المعلومات ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/ldap01.info </span>الذي يحتوي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">organization = Example Company
cn = ldap01.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 3650</pre><p dir="rtl">الشهادة السابقة صالحة لعشرة أعوام، عدِّل هذه القيمة وفقًا لمتطلباتك.</p><ol start="7"><li><p dir="rtl">أنشِئ شهادة الخادوم:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">أنشئ الملف <span style="font-family:courier new,courier,monospace;">certinfo.ldif</span> بالمحتويات الآتية (عدلها وفقًا لمتطلباتك؛ حيث اعتبرت أمثلتنا أن الشهادات مُنشَأة باستخدام <a rel="external nofollow" href="https://www.cacert.org">https://www.cacert.org</a>):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">استخدم الأمر <span style="font-family:courier new,courier,monospace;">ldapmodify</span> لإخبار <span style="font-family:courier new,courier,monospace;">slapd</span> عن عمل <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> عبر قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ssl/certinfo.ldif</pre><p dir="rtl">وعلى النقيض من الاعتقاد الشائع؛ لا تحتاج إلى استخدام <span style="font-family:courier new,courier,monospace;">ldaps‎://‎</span> في ‎<span style="font-family:courier new,courier,monospace;">/etc/default/slapd</span> لكي تستخدم التشفير، كل ما عليك امتلاكه هو:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">SLAPD_SERVICES="ldap:/// ldapi:///"</pre><p dir="rtl"><strong>ملاحظة:</strong> أصبح LDAP عبر <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>‏ (<strong>dlaps://</strong>‎) مهجورًا لتفضيل StartTLS، يشير الأخير إلى جلسة LDAP (تستمع على منفذ TCP ذي الرقم 389) التي تصبح محميةً بواسطة <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSl</abbr>؛ حيث LDAPS -مثل HTTPS- هو بروتوكول منفصل مشفر منذ البداية (encrypted-from-the-start) الذي يعمل على منفذ TCP ذي الرقم 636.</p><p dir="rtl">اضبط الملكية والأذونات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">أعد تشغيل خدمة OpenLDAP:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service slapd restart</pre><p dir="rtl">تحقق من سجلات المضيف (<span style="font-family:courier new,courier,monospace;">‎/var/log/syslog</span>) لترى إن بدأ تشغيل الخادوم بنجاح.</p><h2 dir="rtl">التناسخ و <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr></h2><p dir="rtl">إذا ضبَطت التناسخ بين الخواديم، فمن الممارسات الشائعة هي تشفير (StartTLS) بيانات النسخ المارة في الشبكة لتفادي التنصت عليها؛ وهذا منفصل عن استخدام التشفير والاستيثاق كما فعلنا سابقًا؛ سنبني في هذا القسم على استيثاق <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>.</p><p dir="rtl">سنفترض هنا أنك ضبطت الاستنساخ بين المزود والمستهلك وفقًا للقسم «التناسخ»؛ وضبطت <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> للاستيثاق في المزود وفقًا للقسم «<abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>».</p><p dir="rtl">وكما ذكر سابقًا؛ هدف التناسخ (بالنسبة لنا) هو أن تكون خدمة LDAP ذات إتاحية كبيرةً؛ ولمّا كنا نستخدم <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> للاستيثاق في المزود فإننا نحتاج إلى نفس الأمر في المستهلك؛ بالإضافة إلى ذلك، نريد أن تكون بيانات الاستنساخ المنقولة مشفرةً، وما بقي ليُفعَل هو إنشاء مفتاح وشهادة للمستهلك ثم الضبط وفقًا لذلك، وسنولد المفتاح/الشهادة في المزود؛ لكي نتجنب إنشاء شهادة أخرى لسلطة الشهادات، ثم سننقل ما يلزمنا إلى المستهلك.</p><ol><li><p dir="rtl">في المزود:</p></li></ol><p dir="rtl">أنشِئ مجلدًا (الذي سيستخدم في النقل النهائي)، ثم ولِّد مفتاح المستهلك الخاص:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mkdir ldap02-ssl
cd ldap02-ssl
sudo certtool --generate-privkey \
--bits 1024 \
--outfile ldap02_slapd_key.pem</pre><p dir="rtl">أنشئ ملف المعلومات <span style="font-family:courier new,courier,monospace;">ldap02.info</span> للخادوم المستهلك، وعدِّل قيمه وفقًا لمتطلباتك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">organization = Example Company
cn = ldap02.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 3650</pre><p dir="rtl">أنشِئ شهادة المستهلك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">احصل على نسخة من شهادة سلطة الشهادات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cp /etc/ssl/certs/cacert.pem .</pre><p dir="rtl">لقد انتهينا الآن، انقل مجلد ldap02-<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr> إلى المستهلك؛ حيث استخدمنا هنا scp (عدّل الأمر وفقًا لمتطلباتك):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cd ..
scp -r ldap02-ssl user@consumer:</pre><ol start="2"><li><p dir="rtl">في المستهلك:</p></li></ol><p dir="rtl">ضبط استيثاق <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">أنشئ الملف <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/certinfo.ldif</span> وفيه المحتويات الآتية (عدِّلها وفقًا لمتطلباتك):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">اضبط قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f certinfo.ldif</pre><p dir="rtl">اضبط <span style="font-family:courier new,courier,monospace;">‎/etc/default/slapd</span> في المزود (<span style="font-family:courier new,courier,monospace;">SLAPD_SERVICES</span>).</p><ol start="3"><li><p dir="rtl">في المستهلك:</p></li></ol><p dir="rtl">اضبط <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> للتناسخ من جهة المستهلك، وعدِّل خاصية <span style="font-family:courier new,courier,monospace;">olcSyncrepl</span> الموجودة مسبقًا بتتبع بعض خيارات <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr>؛ وبفعل ذلك، سنرى للمرة الأولى كيف نعدل قيمة خاصية ما.</p><p dir="rtl">أنشئ الملف <span style="font-family:courier new,courier,monospace;">consumer_sync_tls.ldif</span> بالمحتويات الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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="(&amp;(objectClass=auditWriteObject)(reqResult=0))"
 schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog
 starttls=critical tls_reqcert=demand</pre><p dir="rtl">الخيارات الإضافية تحدد، على التوالي وبالترتيب، أن على المستهلك استخدام StartTLS وأن شهادة CA مطلوبةٌ للتحقق من هوية المزود، ولاحظ أيضًا صيغة LDIF لتعديل قيم خاصية ما ('replace').</p><p dir="rtl">نفِّذ هذه التعديلات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f consumer_sync_tls.ldif</pre><p dir="rtl">ثم أعد تشغيل <span style="font-family:courier new,courier,monospace;">slapd</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service slapd restart</pre><ol start="4"><li><p dir="rtl">على المزود:</p></li></ol><p dir="rtl">تأكد من أن جلسة <abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> قد بدأت؛ وذلك عبر السجل <span style="font-family:courier new,courier,monospace;">‎/var/log/syslog</span>، بافتراض أنك أعدت مستوى التسجيل إلى 'conns'، وعليه سترى رسائل شبيهة بالآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/openldap-server.html">Ubuntu Server Guide: OpenLDAP Server</a>.</p>
]]></description><guid isPermaLink="false">178</guid><pubDate>Fri, 08 Jan 2016 13:04:35 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x627;&#x644;&#x634;&#x628;&#x643;&#x64A; &#x2013; &#x636;&#x628;&#x637; &#x62E;&#x627;&#x62F;&#x648;&#x645; OpenLDAP &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%E2%80%93-%D8%B6%D8%A8%D8%B7-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-openldap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r177/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap.png.6071aab206cc7fade8f2fd981e2b1522.png" /></p>

<p dir="rtl">البروتوكول الخفيف للوصول للدليل (Lightweight Directory Access Protocol) أو اختصارًا <strong>LDAP</strong>، هو بروتوكول لطلبيات وتعديل خدمة دليل مبني على X.500 يعمل عبر TCP/IP؛ الإصدارة الحالية من LDAP هي LDAPv3 كما هو معرَّف في <a rel="external nofollow" href="http://tools.ietf.org/html/rfc4510">RFC4510</a><a rel="external nofollow" name="sdfootnote1anc" href="#sdfootnote1sym">1</a>؛ والبرمجية المستخدمة في أوبنتو لتطبيق LDAPv3 هي OpenLDAP.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap.png.25ad47c194ffeba7965be81561ccd8ec.png"><img data-fileid="10938" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-openldap.thumb.png.173d535" src="https://academy.hsoub.com/uploads/monthly_2016_01/ubuntu-server-openldap.thumb.png.173d535640fd1c21e2aadc4b615d1328.png"></a></p><p dir="rtl">هذه هي بعض المصطلحات والمفاهيم الأساسية:</p><ul dir="rtl"><li>دليل LDAP هو شجرة من قيود البيانات (entries) التي تكون ذات هيكليّةٍ بطبيعتها، وتسمى شجرة معلومات الدليل (Directory Information Tree‏ [DIT]).</li><li>يتكون القيد من مجموعة من الخاصيات (attributes).</li><li>الخاصية لها نوع (type) يكون اسمًا أو شرحًا؛ وقيمةٌ واحدةٌ أو أكثر.</li><li>يجب أن تُعرِّف كل خاصية ما يسمى objectClass واحدًا على الأقل.</li><li>الخاصيات و objectClasses مُعرَّفةٌ في مخططات (schemas) حيث يُعتبَر objectClass نوعًا خاصًا من الخاصيات.</li><li>لكل قيد معرِّف خاص به هو «الاسم الفريد» (Distinguished Name  أو DN)؛ الذي يحتوي على «الاسم الفريد النسبي» (Relative Distinguished Name‏ [RDN]) متبوعًا بالاسم الفريد للقيد الأب.</li><li>الاسم الفريد للقيد ليس خاصيةً، بل يعتبر جزءًا من القيد نفسه.</li></ul><p dir="rtl"><strong>ملاحظة: </strong>المصطلحات «الكائن» (object)، و«الحاوية» (container)، و«العقدة» (node) لها دلالات خاصة، لكنها أساسيًا تعني «قيد» (entry)؛ لكن «قيد» هو المصطلح الصحيح تقنيًا.</p><p dir="rtl">على سبيل المثال، لدينا هنا قيدٌ واحدٌ يحتوي على 11 خاصية:</p><ul dir="rtl"><li><strong>اسمه الفريد:</strong> «cn=John Doe,dc=example,dc=com»</li><li><strong>واسمه الفريد النسبي (RDN) هو:</strong> «cn=John Doe»</li><li><strong>واسم الأب الفريد هو:</strong> «dc=example,dc=com»</li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">القيد السابق مكتوب بصيغة LDIF (صيغة تبادل البيانات في LDAP‏ [LDAP Data Interchange Format])؛ أيّة معلومات تضعها في شجرة معلومات الدليل (DIT) يجب أن تكون بهذه الصيغة؛ كما هي معرَّفة في <a rel="external nofollow" href="http://tools.ietf.org/html/rfc2849">RFC2849</a><a rel="external nofollow" name="sdfootnote2anc" href="#sdfootnote2sym">2</a>.</p><p dir="rtl">وعلى الرغم من أن هذا الفصل يستخدم LDAP للاستيثاق المركزي، لكنه يصلح لأي شيء فيه عدد كبير من طلبات الوصول لسندٍ خلفي (backend) تتمحور حول قراءة القيم المبنية على الخاصيات (name:value)؛ تتضمن الأمثلة على ذلك: دفترًا للعناوين، وقائمةً بعناوين البريد الإلكتروني، وضبطًا لخادوم البريد.</p><h2 dir="rtl">التثبيت</h2><p dir="rtl">لتثبيت عفريت خادوم <strong>OpenLDAP</strong> مع أدوات إدارة LDAP التقليدية؛ عليك تثبيت حزمتَيّ <span style="font-family:courier new,courier,monospace;">slapd</span> و <span style="font-family:courier new,courier,monospace;">ldap-utils</span> على التوالي وبالترتيب.</p><p dir="rtl">سيؤدي تثبيت<span style="font-family:courier new,courier,monospace;"> slapd</span> إلى إنشاء ضبط قادر على العمل مباشرةً؛ وخصوصًا إنشاء قاعدة بيانات تستطيع استخدامها لتخزين بياناتك؛ لكن اللاحقة (suffix أو DN الأساسية) ستُحدَّد من اسم نطاق الجهاز المحلي؛ إذا أردت شيئًا مختلفًا، فعدِّل ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/hosts </span>وبدِّل اسم النطاق باسمٍ ترغب في استخدامه كلاحقة؛ على سبيل المثال، إذا أردت أن تكون اللاحقة هي <strong><span style="font-family:arial,helvetica,sans-serif;">dc=example,dc=com</span></strong>، فعندها سيحتوي ملف <span style="font-family:courier new,courier,monospace;">hosts</span> على سطرٍ شبيه بالآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">127.0.1.1 hostname.example.com hostname</pre><p dir="rtl">تستطيع الرجوع إلى الإعدادات القديمة بعد تثبيت الحزمة.</p><p dir="rtl"><strong>ملاحظة:</strong> سنستخدم قاعدة بيانات ذات لاحقة<strong> dc=example,dc=com</strong>.</p><p dir="rtl">أكمل بتثبيت الحزمة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install slapd ldap-utils</pre><p dir="rtl">منذ إصدارة أوبنتو 8.10، صُمِّمَ slapd ليُضبَط داخل <span style="font-family:courier new,courier,monospace;">slapd</span> نفسه، باستخدام DIT خاصة به لهذا الغرض مما يسمح بأن يُعدَّ <span style="font-family:courier new,courier,monospace;">slapd</span> ديناميكيًّا دون الحاجة إلى إعادة تشغيل الخدمة؛ وستتكون قاعدة بيانات الضبط من مجموعة من ملفات LDIF النصية الموجودة في المجلد <span style="font-family:courier new,courier,monospace;">‎/etc/ldap/slapd.d</span>؛ طريقة العمل هذه معروفةٌ بعدَّة أسماء: طريقة <span style="font-family:courier new,courier,monospace;">slapd-config</span>، وطريقة RTC‏ (Real Time Configuration)، أو طريقة <span style="font-family:courier new,courier,monospace;">cn=config</span>؛ ما زلتَ تستطيع استخدام ملف الضبط التقليدي <span style="font-family:courier new,courier,monospace;">slapd.conf </span>لكن هذه الطريقة غير مستحسنة؛ وستلغى هذه الميزة تدريجيًا.</p><p dir="rtl"><strong>ملاحظة:</strong> تستخدم أوبنتو طريقة <span style="font-family:courier new,courier,monospace;">slapd-config</span> لضبط<span style="font-family:courier new,courier,monospace;"> slapd</span>، وكذلك هذا الدرس.</p><p dir="rtl">سيُطلَب منك أثناء التثبيت تعريف «الأوراق الاعتمادية الإدارية» (administrative credentials)؛ وهي الأوراق الاعتمادية المبنية على LDAP لقاعدة rootDN؛ افتراضيًا، يكون DN للمستخدم هو <strong>cn=admin,dc=example, dc=com</strong>؛ وأيضًا افتراضيًا لا يُنشَأ حساب إداري لقاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>؛ لذا عليك الاستيثاق خارجيًا للوصول إلى LDAP وسنرى كيفية فعل ذلك لاحقًا.</p><p dir="rtl">تأتي بعض المخططات الكلاسيكية (cosine، و nis، و inetorgperson) افتراضيًا مع slapd هذه الأيام؛ وهنالك أيضًا مخطط «core» المطلوب ليعمل أي مخطط آخر.</p><h2 dir="rtl">ما يجب فعله بعد التثبيت</h2><p dir="rtl">تُعِدّ عملية التثبيت شجرتين لمعلومات الدليل؛ واحدة لاستخدامها في ضبط <span style="font-family:courier new,courier,monospace;">slapd‏</span> (<span style="font-family:courier new,courier,monospace;">slapd-config</span>) وواحدة لبياناتك الشخصية (<strong>dc=example,dc=com</strong>)؛ لنلقِ نظرةً.</p><p dir="rtl">هذا ما تبدو عليه قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>؛ تذكَّر أن هذه القاعدة مبنية على LDIF وموجودة في ‎<span style="font-family:courier new,courier,monospace;">/etc/ldap/slapd.d:</span></p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">/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</pre><p dir="rtl"><strong>ملاحظة:</strong> لا تُعدِّل قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span> مباشرةً، أجرِ التعديلات باستخدام بروتوكول LDAP (عبر الأدوات الخاصة).</p><p dir="rtl">وهذا ما تبدو عليه شجرة معلومات الدليل <span style="font-family:courier new,courier,monospace;">slapd-config</span> عند طلبها بواسطة بروتوكول LDAP:</p><p dir="rtl"><strong>تنويه: في نسخة خادوم أوبنتو 14.10 وربما ما بعدها، قد لا يعمل الأمر الآتي بسبب <a rel="external nofollow" href="https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1392018">علِّة</a>.</strong></p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">شرح القيود السابقة:</p><ul dir="rtl"><li><strong>cn=config</strong>: الإعدادات العامة.</li><li><strong>cn=module{0},cn=config</strong>: وحدة مُحَمَّلة ديناميكيًا.</li><li><strong>cn=schema,cn=config</strong>: يحتوي على مخطط مستوى النظام (hard-coded).</li><li><strong>cn={0}core,cn=schema,cn=config</strong>: يحتوي على مخطط الأساس (hard-coded).</li><li><strong>cn={1}cosine,cn=schema,cn=config</strong>: المخطط cosine.</li><li><strong>cn={3}inetorgperson,cn=schema,cn=config</strong>: المخطط inetorgperson.</li><li><strong>olcBackend={0}hdb,cn=config</strong>: نوع تخزين 'hdb'.</li><li><strong>olcDatabase={-1}frontend,cn=config</strong>: قاعدة بيانات الواجهة (frontend)، الضبط الافتراضي لقواعد البيانات الأخرى.</li><li><strong>olcDatabase={0}config,cn=config</strong>: قاعدة بيانات ضبط slapd ‏(cn=config).</li><li><strong>olcDatabase={1}hdb,cn=config</strong>: نسخة قاعدة البيانات الخاصة بك (dc=example,dc=com).</li></ul><p dir="rtl">وهذا ما تبدو عليه شجرة معلومات الدليل<strong> dc=example,dc=com</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
dn: dc=example,dc=com
dn: cn=admin,dc=example,dc=com</pre><p dir="rtl">شرح القيود السابقة:</p><ul dir="rtl"><li><strong>dc=example,dc=com</strong>: أساس DIT.</li><li><strong>cn=admin,dc=example,dc=com</strong>: المدير (rootDN) لشجرة معلومات الدليل هذه (ضُبِط أثناء تثبيت الحزمة).</li></ul><h2 dir="rtl">تعديل وملء قاعدة البيانات</h2><p dir="rtl">لنضع بعض المحتويات في قاعدة البيانات؛ حيث سنضيف الآتي:</p><ul dir="rtl"><li>عقدة اسمها People (لتخزين المستخدمين).</li><li>عقدة اسمها Groups (لتخزين المجموعات).</li><li>مجموعة اسمها miners.</li><li>مستخدم اسمه john.</li></ul><p dir="rtl">أنشئ ملف <span style="font-family:courier new,courier,monospace;">LDIF</span> وسَمِّه<span style="font-family:courier new,courier,monospace;"> add_content.ldif</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl"><strong>ملاحظة:</strong> من المهم ألّا تتصادم قيم uid و gid في دليلك مع القيم المحلية؛ استخدم مجالات الأرقام الكبيرة؛ فابدأ مثلًا من 5000، وبتكبير قيم uid و gid في ldap، فإنك تسمح أيضًا بسهولة التحكم في ماذا يستطيع أن يفعله المستخدم المحلي، في مقابل ما يفعله مستخدم ldap؛ سنفصِّل هذا الموضوع لاحقًا.</p><p dir="rtl">أضف المحتويات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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"</pre><p dir="rtl">سنتحقق من إضافة المعلومات إضافةً صحيحةً باستخدام الأداة <span style="font-family:courier new,courier,monospace;">ldapsearch</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">شرح ماذا حصل:</p><ul dir="rtl"><li><strong>‎-x</strong>: ربط بسيط؛ لن تُستخدَم طريقة SASL الافتراضية.</li><li>‎<strong>-LLL</strong>: تعطيل طباعة معلوماتٍ إضافيةً.</li><li><strong>uid=john</strong>: «مُرَشِّح» (filter) للعثور على المستخدم john.</li><li><strong>cn gidNumber</strong>: طلب خاصيات معينة لإظهارها (القيمة الافتراضية هي إظهار جميع الخاصيات).</li></ul><h2 dir="rtl">تعديل قاعدة بيانات slapd</h2><p dir="rtl">يمكن أن تُطلَب أو تُعدَّل شجرة دليل المعلومات الخاصة بضبط <span style="font-family:courier new,courier,monospace;">slapd‏</span> (<span style="font-family:courier new,courier,monospace;">slapd-config</span>)؛ سنذكر هنا بعض الأمثلة:</p><p dir="rtl">استخدم الأمر <span style="font-family:courier new,courier,monospace;">idapmodify</span> لإضافة «فهرس» (خاصية DbIndex) إلى قاعدة بيانات ‎‎‎<strong>{1}hdb,cn=config‎</strong> (التي هي <strong>dc=example,dc=com</strong>)؛ أنشِئ ملفًا اسمه<span style="font-family:courier new,courier,monospace;"> uid_index.ldif</span> فيه المحتويات الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn: olcDatabase={1}hdb,cn=config
add: olcDbIndex
olcDbIndex: uid eq,pres,sub</pre><p dir="rtl">ثم نفِّذ الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f uid_index.ldif

modifying entry "olcDatabase={1}hdb,cn=config"</pre><p dir="rtl">تستطيع تأكيد التغيير بهذه الطريقة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">لنضف الآن مخططًا (schema)، يجب أولًا أن تحوَّل إلى صيغة LDIF؛ تستطيع إيجاد مخططات مُحوَّلة، وغير مُحوَّلة في مجلد <span style="font-family:courier new,courier,monospace;">‎/etc/ldap/schema</span>.</p><p dir="rtl"><strong>ملاحظة:</strong> حذف المخططات من قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span> ليس أمرًا بسيطًا؛ تدرب على إضافة المخططات على نظام خاص بالتجارب.</p><p dir="rtl">قبل إضافة أيّة مخططات، يجب أن تتحقق من أيّة مخططات قد ثبِّتَت مسبقًا (المخرجات الآتية هي المخرجات الافتراضية [out-of-the-box]):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">سنضيف مخطط CORBA في المثال الآتي:</p><ol><li><p dir="rtl">أنشِئ ملف ضبط التحويل المسمى <span style="font-family:courier new,courier,monospace;">schema_convert.conf</span> يتضمن الأسطر الآتية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><ol start="2"><li><p dir="rtl">أنشِئ مجلد المخرجات<span style="font-family:courier new,courier,monospace;"> ldif_output</span>.</p></li><li><p dir="rtl">حدد فهرس المخطط:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">slapcat -f schema_convert.conf -F ldif_output -n 0 | grep corba,cn=schema

cn={1}corba,cn=schema,cn=config</pre><p dir="rtl"><strong>ملاحظة:</strong> عندما «يحقن» (injects) ‏slapd الكائنات‏ التي لها نفس الاسم الفريد للأب؛ فإنه سيُنشِئ فهرسًا لهذا الكائن؛ ويحتوى الفهرس ضمن قوسين معقوفين: {X}.</p><ol start="4"><li><p dir="rtl">استخدم <span style="font-family:courier new,courier,monospace;">slapcat</span> للقيام بالتحويل:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">slapcat -f schema_convert.conf -F ldif_output -n0 -H \

ldap:///cn={1}corba,cn=schema,cn=config -l cn=corba.ldif</pre><p dir="rtl">المخطط المحوّل موجودٌ الآن في<strong> cn=corba.ldif</strong>.</p><ol start="5"><li><p dir="rtl">عدِّل cn=corba.ldif حتى تصل إلى الخاصيات الآتية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn: cn=corba,cn=schema,cn=config

...

cn: corba</pre><p dir="rtl">أزل الآن الأسطر الآتية من النهاية:</p><ol start="5"></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">structuralObjectClass: olcSchemaConfig
entryUUID: 52109a02-66ab-1030-8be2-bbf166230478
creatorsName: cn=config
createTimestamp: 20110829165435Z
entryCSN: 20110829165435.935248Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20110829165435Z</pre><p dir="rtl">قد تختلف قيم الخاصيات عندك.</p><ol start="6"><li><p dir="rtl">في النهاية، استخدم <span style="font-family:courier new,courier,monospace;">ldapadd</span> لإضافة مخطط جديد إلى شجرة معلومات دليل<span style="font-family:courier new,courier,monospace;"> slapd-config</span>:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f cn\=corba.ldif

adding new entry "cn=corba,cn=schema,cn=config"</pre><ol start="7"><li><p dir="rtl">تأكد من المخططات المُحَمَّلة:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl"><strong>ملاحظة:</strong> لكي يستوثق العملاء والتطبيقات الخارجية باستخدام LDAP، فإن عليك ضبط كل واحد منهم ليفعل ذلك؛ راجع توثيق تلك العملاء لمعلومات ملائمة عنهم.</p><h2 dir="rtl">التسجيل (Logging)</h2><p dir="rtl">لا غنى عن تفعيل تسجيل <span style="font-family:courier new,courier,monospace;">slapd</span> عند استخدام تطبيقات تعتمد على <span style="font-family:courier new,courier,monospace;">OpenLDAP</span>، لكن عليك تفعيله يدويًا بعد تثبيت البرمجيات؛ وإذا لم تفعل ذلك، فستظهر رسائل بدائية غير مفيدة فقط في السجلات؛ ويُفعَّل التسجيل، كغيره من ضبط <span style="font-family:courier new,courier,monospace;">slapd</span>، عبر قاعدة بيانات <span style="font-family:courier new,courier,monospace;">slapd-config</span>.</p><p dir="rtl">يأتي OpenLDAP مع عدّة أنظمة فرعية للتسجيل (مستويات)، تحتوي كلٌ منها على المستوى الأدنى منها؛ مستوى جيد للتجربة هو stats؛ هنالك المزيد من المعلومات حول الأنظمة الفرعية المختلفة في صفحة دليل <span style="font-family:courier new,courier,monospace;">man slapd-config</span>.</p><p dir="rtl">أنشِئ ملف<span style="font-family:courier new,courier,monospace;"> logging.ldif</span> بالمحتويات الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dn: cn=config
changetype: modify
add: olcLogLevel
olcLogLevel: stats</pre><p dir="rtl">طبِّق التعديل:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif</pre><p dir="rtl">وهذا ما سيُنتِج كميّةً كبيرةً من السجلات؛ وربما تحتاج للعودة وتقليل درجة الإسهاب عندما يصبح نظامك نظامًا إنتاجيًا (in production)، لكن ربما يجعل ضبط الإسهاب هذا محرك syslog في نظامك يعاني من كثرة الرسائل، وقد يتجاوز بعضها دون تسجيله:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">rsyslogd-2177: imuxsock lost 228 messages from pid 2547 due to rate-limiting</pre><p dir="rtl">قد تفكر في تغيير ضبط <span style="font-family:courier new,courier,monospace;">rsyslog</span>؛ ضع في ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/rsyslog.conf</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># Disable rate limiting
# (default is 200 messages in 5 seconds; below we make the 5 become 0)
$SystemLogRateLimitInterval 0</pre><p dir="rtl">ثم أعد تشغيل عفريت <span style="font-family:courier new,courier,monospace;">rsyslog</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service rsyslog restart</pre><p dir="rtl">ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/openldap-server.html">Ubuntu Server Guide: OpenLDAP Server</a>.</p>
]]></description><guid isPermaLink="false">177</guid><pubDate>Fri, 08 Jan 2016 11:18:38 +0000</pubDate></item><item><title>&#x627;&#x644;&#x625;&#x62F;&#x627;&#x631;&#x629; &#x639;&#x646; &#x628;&#x639;&#x62F; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; Zentyal &#x639;&#x644;&#x649; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-zentyal-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r174/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-zentyal.png.a928c7baa1fa141a7d0ab6217c6aab5e.png" /></p>

<p dir="rtl">إن <strong>Zentyal</strong> هو خادوم لينُكس صغير موجَّه للأعمال (business server)، يمكن أن يُضبَط كبوابة، أو مدير بنى تحتية، أو «مدير تهديد موحد» (Unified Threat Manager)، أو خادوم مكتبي، أو خادوم اتصالات موحد، أو تجميعٌ مما سبق؛ جميع الخدمات الشبكية المُدارة من Zentyal تندمج مع بعضها اندماجًا كبيرًا، مؤتمِتًا معظم المهام، مما يساعد في تلافي الأخطاء في ضبط الشبكة والإدارة، ويسمح بتقليل الوقت اللازم لضبط البرمجيات؛ Zentyal هو برمجية مفتوحة المصدر، ومنشورة وفق رخصة غنو العمومية (GPL) وتعتمد على أوبنتو كأساسٍ لها.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-zentyal.png.e1082d52c71b2e73f3286b3c902c8010.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="10406" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-zentyal.thumb.png.a5ceb383dd92e78f9021019596ba6ee9.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-remote-admin-zentyal.thumb"></a></p><p dir="rtl">تتضمن Zentyal سلسلةً من الحزم (حزمةٌ واحدةٌ عادةً لكل وحدة [module]) التي توفر واجهة ويب لضبط مختلف الخواديم أو الخدمات؛ ويُخزَّن الضبط في قاعدة بيانات Redis على نمط «مفتاح-قيمة»؛ لكن ضبط المستخدمين والمجموعات، والنطاقات (domains) يكون مبنيًا على OpenLDAP؛ وعندما تُضبَط أيّة خاصيات ضمن واجهة الويب، فستُعاد كتابة ملفات الإعدادات باستخدام قوالب ضبط مُوفَّرة من الوحدات؛ الميزة الأساسية من استخدام Zentyal هو واجهة رسومية موحدة لضبط جميع خدمات الشبكة مع دمجٍ ذي مستوىً عالٍ مع بعضها بعضًا.</p><h2 dir="rtl">التثبيت</h2><p dir="rtl">تتوفر إصدارة Zentyal 2.3 في مستودع Universe في أوبنتو 12.04؛ الوحدات المتوفرة هي:</p><ul dir="rtl"><li><strong>zentyal-core و zentyal-common</strong>: أساس واجهة Zentyal والمكتبات الشائعة لإطار العمل؛ وتتضمن أيضًا السجلات (logs) ووحدات الأحداث (events modules) التي تعطي مدير النظام واجهة لمشاهدة السجلات، وتوليد أحداث منها.</li><li><strong>zentyal-network</strong>: إدارة إعدادات الشبكة، من البطاقات (داعمةً عناوين IP الثابتة، أو DHCP، أو VLAN، أوالجسور، أو PPPoE)، إلى البوابات المتعددة عندما يكون هنالك أكثر من اتصال بالإنترنت؛ وموازنة الحِمل والتوجيه المتقدم، وجداول التوجيه الثابتة، و DNS الديناميكي.</li><li><strong>zentyal-objects و zentyal-services</strong>: توفير طبقة تجريدية (abstraction level) لعناوين الشبكة (على سبيل المثال، LAN بدلًا من 192.168.1.0/24) والمنافذ مسماةً على أسماء خدماتها (مثلًا، HTTP بدلًا من80/TCP).</li><li><strong>zentyal-firewall</strong>: ضبط قواعد iptables لحجب الاتصالات الممنوعة، واستخدام NAT وإعادة توجيه المنافذ.</li><li><strong>zentyal-ntp</strong>: تثبيت عفريت NTP لإبقاء ساعة الخادوم صحيحةً، وللسماح بعملاء الشبكة بمزامنة ساعاتهم مع ساعة الخادوم.</li><li><strong>zentyal-dhcp</strong>: ضبط خادوم ISC DHCP الذي يدعم مجالات الشبكة، وزمن «التأجير» الثابت، وغيرها من الخيارات المتقدمة مثل NTP، و WINS، و DNS الديناميكي، وإقلاع الشبكة مع PXE.</li><li><strong>zentyal-dns</strong>: إعداد خادوم ISC Bind9 على جهازك مع إمكانية التخزين المؤقت للطلبيات المحلية، أو كمُمرِّر، أو كخادوم استيثاق للنطاقات المضبوطة؛ ويسمح بضبط A، و CNAME، و MX، و NS، و TXT، وسجلات SRV.</li><li><strong>zentyal-ca</strong>: تضمين إدارة «سلطة الشهادات» (Certification Authority) مع Zentyal كي يتمكن المستخدمون من استخدام الشهادات للاستيثاق مع الخدمات، مثل OpenVPN.</li><li><strong>zentyal-openvpn</strong>: السماح بضبط عدة خواديم وعملاء <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> باستخدام OpenVPN مع ضبط ديناميكي للتوجيه باستخدام Quagga.</li><li><strong>zentyal-users</strong>: توفير واجهة لضبط وإدارة المستخدمين والمجموعات في OpenLDAP؛ الخدمات الأخرى في Zentyal تَستوثِق من المستخدمين باستخدام LDAP، مما يؤدي إلى وجود آلية مركزية لإدارة المستخدمين والمجموعات؛ من الممكن أيضًا مزامنة المستخدمين، وكلمات المرور، والمجموعات من خادوم Microsoft Active Directory.</li><li><strong>zentyal-squid</strong>: ضبط خدمتَيّ Squid و Dansguardian لتسريع التصفح، ويعود الفضل في ذلك إلى إمكانيات التخزين المؤقت وترشيح المحتوى.</li><li><strong>zentyal-samba</strong>: تسمح هذه الوحدة بضبط سامبا ودمجه مع ضبط LDAP موجود مسبقًا؛ ومن نفس الوحدة تستطيع تعريف سياسات لكلمات المرور، وإنشاء موارد مشتركة، وإسناد الأذونات.</li><li><strong>zentyal-printers</strong>: دمج CUPS مع سامبا والسماح، ليس فقط بضبط الطابعات، بل وإعطائها الأذونات بالاعتماد على مستخدمي ومجموعات LDAP.</li></ul><p dir="rtl">لتثبيت Zentyal، افتح الطرفية في الخادوم واكتب (حيث <span style="font-family:courier new,courier,monospace;">&lt;zentyal-module&gt;</span> هو اسم أحد الوحدات السابقة):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install &lt;zentyal-module&gt;</pre><p dir="rtl"><strong>ملاحظة:</strong> يُصدِر Zentyal إصدارًا واحدًا ثابتًا رئيسيًا في السنة (في أيلول/سبتمبر) مبنيٌ على آخر إصدارة أوبنتو طويلة الدعم (LTS)؛ يكون للإصدارات الثابتة أرقام رئيسية زوجية (مثلًا، 2.2، أو 3.0) والإصدارات التجريبية تكون أرقامها الرئيسية فردية (مثلًا 2.1، و 2.3)؛ تأتي أوبنتو 12.04 مع Zentyal بإصدار 2.3؛ إذا أردت الترقية إلى إصدارة ثابتة جديدة نُشِرَت بعد إصدار أوبنتو 12.04، فيمكنك استخدام «<a rel="external nofollow" href="https://launchpad.net/~zentyal/">Zentyal Team PPA</a>»؛ قد توفر لك الترقية إلى الإصدارات الثابتة تصحيحات لعللٍ لم تصل إلى الإصدار 2.3 الموجود في أوبنتو 12.04.</p><p dir="rtl"><strong>تنويه:</strong> إذا أردت المزيد من المعلومات حول إضافة الحزم من PPA؛ فراجع مقالة الويكي «<a rel="external nofollow" href="https://help.ubuntu.com/12.04/ubuntu-help/addremove-ppa.html">Add a Personal Pachage Archive PPA</a>».</p><p dir="rtl"><strong>ملاحظة:</strong> تستطيع إيجاد الحزم الآتية في<font face="courier new, courier, monospace"> </font><a rel="external nofollow" href="https://launchpad.net/~zentyal">Zentyal Team PPA</a>، لكن ليس في مستودعات Universe في أوبنتو:</p><ul dir="rtl"><li><strong>zentyal-antivirus</strong>: تضمين مضاد الفيروسات ClamAV مع وحدات أخرى مثل الخادوم الوسيط (proxy) ومشاركة الملفات، أو mailfilter.</li><li><strong>zentyal-asterisk</strong>: ضبط Asterisk لتوفير PBX بسيط مبني على الاستيثاق بواسطة LDAP.</li><li><strong>zentyal-bwmonitor</strong>: السماح بمراقبة استهلاك التراسل الشبكي من قِبَل عملاء شبكتك المحلية.</li><li><strong>zentyal-captiveportal</strong>: تضمين «captive portal» مع الجدار الناري، ومستخدمي ومجموعات LDAP.</li><li><strong>zentyal-ebackup</strong>: السماح بإنشاء نسخ احتياطية مجدولة على خادومك باستخدام أداة النسخ الاحتياطي الشهيرة «duplicity».</li><li><strong>zentyal-ftp</strong>: ضبط خادوم FTP مع استيثاق مبني على LDAP.</li><li><strong>zentyal-ids</strong>: تضمين نظام اكتشاف التطفل في الشبكة.</li><li><strong>zentyal-ipsec</strong>: السماح بضبط أنفاق IPsec باستخدام OpenSwan.</li><li><strong>zentyal-jabber</strong>: تضمين خادوم XMPP مع مستخدمي ومجموعات LDAP.</li><li><strong>zentyal-thinclients</strong>: حل يعتمد على عملاء «رقيقين» (thin clients) مبني على LTSP.</li><li><strong>zentyal-mail</strong>: تشكيلة خدمات البريد الإلكتروني كاملة، بما فيها Postfix و Dovecot مع خلفية LDAP.</li><li><strong>zentyal-mailfilter</strong>: ضبط amavisd مع خدمات البريد الإلكتروني لترشيح الرسائل العشوائية (spam) والفيروسات المرفقة بالرسائل.</li><li><strong>zentyal-monitor</strong>: تضمين collectd لمراقبة أداء الخادوم والخدمات التي تعمل.</li><li><strong>zentyal-pptp</strong>: ضبط خادوم PPTP <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr>.</li><li><strong>zentyal-raduis</strong>: تضمين FreeRADIUS مع مستخدمي ومجموعات LDAP.</li><li><strong>zentyal-software</strong>: واجهة بسيطة لإدارة وحدات Zentyal المثبتة، وتحديثات النظام.</li><li><strong>zentyal-trafficshaping</strong>: ضبط قواعد الحد من مرور البيانات للتضييق على التراسل الشبكي، وتحسين زمن التأخير (latency).</li><li><strong>zentyal-usercorner</strong>: السماح للمستخدمين بتعديل خاصيات LDAP الخاصة بهم باستخدام متصفح ويب.</li><li><strong>zentyal-virt</strong>: واجهة بسيطة لإنشاء وإدارة الأنظمة الوهمية المبنية على libvirt.</li><li><strong>zentyal-webmail</strong>: السماح بالوصول لبريدك عبر خدمة Roundcube webmail الشهيرة.</li><li><strong>zentyal-webserver</strong>: ضبط خادوم ويب أباتشي لاستضافة مختلف المواقع على جهازك.</li><li><strong>zentyal-zarafa</strong>: تضمين مجموعة Zarafa مع مجموعة Zentyal للبريد و LDAP.</li></ul><h2 dir="rtl">الخطوات الأولى</h2><p dir="rtl">يُسمَح لأي حساب في النظام ينتمي للمجموعة <span style="font-family:courier new,courier,monospace;">sudo</span> بتسجيل الدخول إلى واجهة Zentyal؛ إذا كنت تستخدم حساب المستخدم المُنشَأ أثناء التثبيت؛ فيجب أن يكون افتراضيًا في مجموعة <span style="font-family:courier new,courier,monospace;">sudo</span>.</p><p dir="rtl"><strong>تنويه:</strong> إذا كنت تستخدم مستخدمًا آخرَ لا ينتمي للمجموعة <span style="font-family:courier new,courier,monospace;">sudo</span>، فنفِّذ الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo adduser username sudo</pre><p dir="rtl">للوصول إلى واجهة الويب (Zentyal)، فتوجه إلى <a rel="external nofollow" href="https://localhost/">https://localhost/</a>‎ (أو عنوان IP للخادوم البعيد)، ولأن Zentyal يستخدم شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> موقّعة ذاتيًا، فعليك إضافة استثناء له في متصفحك.</p><p dir="rtl">ستشاهد لوحة التحكم (dashboard) بعد تسجيل الدخول، مع لمحة عن خادومك؛ لضبط أيّة خاصية من خاصيات الوحدات المثبتة، فاذهب إلى الأقسام المختلفة في القائمة التي على اليسار؛ عندما تعدل أيّة تعديلات، فسيظهر زر أحمر مكتوب عليه «Save changes»، الذي عليك الضغط عليه لحفظ كل تعديلات الضبط؛ لتطبيق هذه التعديلات على خادومك، فيجب أن تفعَّل الوحدة أولًا، وذلك من قيد «Module Status» على القائمة اليسرى؛ في كل مرة ستُفعِّل فيها وحدةً، فستظهر رسالة تطلب تأكيدك للقيام بالأفعال الضرورية، والتعديلات على خادومك وملفات ضبطه.</p><p dir="rtl"><strong>ملاحظة:</strong> إذا أردت تخصيص أي ملف ضبط لتنفيذ أفعال معينة (سكربتات أو أوامر) لضبط ميزات غير متوفرة في Zentyal، فضع قوالب ملفات الضبط المخصصة في<span style="font-family:courier new,courier,monospace;"> ‎/etc/zentyal/stubs/&lt;module&gt;‎/‎ </span>و «hooks» في ‎<span style="font-family:courier new,courier,monospace;">/etc/zentyal/hooks/&lt;module&gt;.&lt;action&gt;</span>‎‎.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>صفحة توثيق <a rel="external nofollow" href="http://doc.zentyal.org/">Zentyal</a> الرسمية.</li><li>راجع أيضًا صفحة توثيق <a rel="external nofollow" href="http://trac.zentyal.org/wiki/Documentation">Zentyal</a> الموفرة من المجتمع.</li><li>لا تنسَ أيضًا زيادة <a rel="external nofollow" href="http://forum.zentyal.org/">المنتدى</a> لدعم المجتمع، والتعقيبات، وطلبات الميزات ...إلخ</li></ul><p>ترجمة -وبتصرف- للمقال: <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/zentyal.html">Ubuntu Server Guide: Zentyal</a>.</p>
]]></description><guid isPermaLink="false">174</guid><pubDate>Mon, 28 Dec 2015 23:02:09 +0000</pubDate></item><item><title>&#x645;&#x632;&#x627;&#x645;&#x646;&#x629; &#x627;&#x644;&#x648;&#x642;&#x62A; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x628;&#x631;&#x648;&#x62A;&#x648;&#x643;&#x648;&#x644; NTP &#x639;&#x644;&#x649; &#x62E;&#x627;&#x62F;&#x648;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D9%85%D8%B2%D8%A7%D9%85%D9%86%D8%A9-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-ntp-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r171/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-time-sync-ntp.png.c57afb7cc826f6528f21a0cef52085d9.png" /></p>

<p dir="rtl">إن بروتوكول <strong>NTP</strong> هو بروتوكول TCP/IP، يُستخدَم لمزامنة الوقت عبر الشبكة؛ بكلماتٍ بسيطة: يطلب العميل الوقت الحالي من الخادوم ثم يستخدمه لمزامنة ساعته الداخلية.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-time-sync-ntp.png.cafbfbd77f6e6e03631972bdf2b4e936.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="10043" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-time-sync-ntp.thumb.png.01b768b55ffcb29a5b03f3a68e64ad3b.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-time-sync-ntp.thumb.png.01"></a></p><p dir="rtl">هنالك الكثير من التعقيدات خلف هذا التفسير البسيط، فهنالك درجات من خواديم NTP؛ فالدرجة الأولى من خواديم NTP تتصل بساعات ذريّة (atomic clock)، والدرجة الثانية والثالثة من الخواديم تُوزِّع الحِمل عبر الإنترنت؛ وحتى برمجية العميل هي برمجية معقدة أكثر بكثير مما تظن، فهنالك عامل لأخذ التأخير في الاتصالات بعين الاعتبار، وتعديل الوقت في طريقة لا تُفسِد وظيفة جميع العمليات التي تعمل في الخادوم؛ ولحسن الحظ أنَّ كل هذا التعقيد مخفيٌ عنك!</p><p dir="rtl">تستخدم أوبنتو <span style="font-family:courier new,courier,monospace;">ntpdate</span>، و <span style="font-family:courier new,courier,monospace;">ntpd</span>.</p><h2 dir="rtl">الأداة ntpdate</h2><p dir="rtl">يأتي أوبنتو افتراضيًا مع الأداة <span style="font-family:courier new,courier,monospace;">ntpdate</span>، وستعمل عند الإقلاع لتضبط وقتك وفقًا لخادوم NTP الخاص بأوبنتو:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ntpdate -s ntp.ubuntu.com</pre><h2 dir="rtl">عفريت ntpd</h2><p dir="rtl">يحسب عفريت ntp الانزياح في ساعة وقت النظام، ويعدِّلها باستمرار، لذلك لن يكون هنالك تصحيحات كبيرة ستؤدي إلى اختلال في السجلات (logs) على سبيل المثال. لكن سيكون ثمن ذلك هو القليل من طاقة المعالجة والذاكرة، ولكن هذا لا يُذكَر بالنسبة إلى الخواديم الحديثة.</p><h3 dir="rtl">التثبيت</h3><p dir="rtl">لتثبيت <span style="font-family:courier new,courier,monospace;">ntpd</span>، أدخل الأمر الآتي إلى الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install ntp</pre><h3 dir="rtl">الضبط</h3><p dir="rtl">عدِّل الملف ‎ <span style="font-family:courier new,courier,monospace;">/etc/ntp.conf</span>لإضافة أو إزالة الأسطر التي تحتوي على عناوين الخواديم، تُضبَط هذه الخواديم افتراضيًا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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</pre><p dir="rtl">بعد تعديل ملف الضبط، عليك إعادة تحميل <span style="font-family:courier new,courier,monospace;">ntpd</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ntp reload</pre><h3 dir="rtl">مشاهدة الحالة</h3><p dir="rtl">استخدم الأمر <span style="font-family:courier new,courier,monospace;">ntpq</span> لرؤية المزيد من المعلومات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><h3 dir="rtl">مصادر</h3><ul dir="rtl"><li>راجع صفحة الويكي «<a rel="external nofollow" href="https://help.ubuntu.com/community/UbuntuTime">Ubuntu Time</a>» لمزيد من المعلومات.</li><li>موقع <a rel="external nofollow" href="http://www.ntp.org/">ntp.org</a>: الموقع الرسمي لمشروع بروتوكول وقت الشبكة.</li></ul><p dir="rtl">ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/NTP.html">Ubuntu Server Guide: Time Synchronisation with NTP</a>.</p>
]]></description><guid isPermaLink="false">171</guid><pubDate>Fri, 25 Dec 2015 23:10:48 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x628;&#x631;&#x648;&#x62A;&#x648;&#x643;&#x648;&#x644; &#x636;&#x628;&#x637; &#x627;&#x644;&#x645;&#x636;&#x64A;&#x641; &#x62F;&#x64A;&#x646;&#x627;&#x645;&#x64A;&#x643;&#x64A;&#x627; (DHCP)</title><link>https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-%D8%B6%D8%A8%D8%B7-%D8%A7%D9%84%D9%85%D8%B6%D9%8A%D9%81-%D8%AF%D9%8A%D9%86%D8%A7%D9%85%D9%8A%D9%83%D9%8A%D8%A7-dhcp-r170/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/dhcp-intro.png.062d030a45a082c972b9930bdcb3be08.png" /></p>

<p dir="rtl">إن بروتوكول ضبط المضيف ديناميكيًّا (Dynamic Host Configuration Protocol) هو خدمة شبكة تُفعِّل إسناد إعدادات الشبكة إلى الحواسيب المضيفة من خادوم بدلًا من إعداد كل مضيف شبكي يدويًا؛ حيث لا تملك الحواسيب المُعدَّة كعملاءٍ لخدمة DHCP أيّة تحكم بالإعدادات التي تحصل عليها من خادوم DHCP.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/dhcp-intro.png.5fc4b6933defbc2ea90657668d598063.png"><img data-fileid="10037" class="ipsImage ipsImage_thumbnailed" alt="dhcp-intro.thumb.png.a4caa8df9bfb688f0cb" src="https://academy.hsoub.com/uploads/monthly_2015_12/dhcp-intro.thumb.png.a4caa8df9bfb688f0cb8a5a66eb3cd55.png"></a></p><p dir="rtl">إن أشهر الإعدادات الموفَّرة من خادوم DHCP إلى عملاء DHCP تتضمن:</p><ul dir="rtl"><li>عنوان IP وقناع الشبكة.</li><li>عنوان IP للبوابة الافتراضية التي يجب استخدامها.</li><li>عناوين IP لخواديم DNS التي يجب استعمالها.</li></ul><p dir="rtl">لكن يمكن أيضًا أن يوفِّر خادوم DHCP خاصيات الضبط الآتية:</p><ul dir="rtl"><li>اسم المضيف.</li><li>اسم النطاق.</li><li>خادوم الوقت.</li><li>خادوم الطباعة.</li></ul><p dir="rtl">من مزايا استخدام DHCP هو أن أي تغييرٍ في إعدادات الشبكة -على سبيل المثال تغيير عنوان خادوم DNS- سيتم في خادوم DHCP فقط، وسيُعاد ضبط جميع مضيفي الشبكة في المرة القادمة التي سيَطلُبُ فيها عملاء DHCP معلومات الإعدادات من خادوم DHCP؛ ويُسهِّل استعمال خادوم DHCP إضافة حواسيب جديدة إلى الشبكة، فلا حاجة للتحقق من توفر عنوان IP؛ وسيقل أيضًا التضارب في حجز عناوين IP.</p><p dir="rtl">يمكن أن يُوفِّر خادوم DHCP إعدادات الضبط باستخدام الطرق الآتية:</p><h3 dir="rtl">التوزيع اليدوي (Manual allocation) عبر عنوان MAC</h3><p dir="rtl">تتضمن هذه الطريقة استخدام DHCP للتعرف على عنوان مميز لعتاد كل كرت شبكة متصل إلى الشبكة، ثم سيوفِّر إعدادات ضبطٍ ثابتةً في كل مرة يتصل فيها عميل DHCP إلى خادوم DHCP باستخدام بطاقة الشبكة المعيّنة مسبقًا؛ وهذا يضمن أن يُسنَد عنوان معيّن إلى بطاقةٍ شبكيّةٍ معيّنة وذلك وفقًا لعنوان MAC.</p><h3 dir="rtl">التوزيع الديناميكي (Dynamic allocation)</h3><p dir="rtl">سيُسنِد خادوم DHCP -في هذه الطريقة- عنوان IP من مجموعة من العناوين (تسمى pool، أو في بعض الأحيان range أو scope) لمدة من الزمن (يسمى ذلك بالمصطلح lease) التي تُضبَط في الخادوم، أو حتى يخبر العميل الخادوم أنه لم يعد بحاجةٍ للعنوان بعد الآن؛ وسيحصل العملاء في هذه الطريقة على خصائص الضبط ديناميكيًّا وفق المبدأ «الذي يأتي أولًا، يُخدَّم أولًا»؛ وعندما لا يكون عميل DHCP متواجدًا على الشبكة لفترة محددة، فسينتهي وقت الضبط المخصص له، وسيعود العنوان المسند إليه إلى مجموعة العناوين لاستخدامه من عملاء DHCP الآخرين؛ أي أنَّه في هذه الطريقة، يمكن «تأجير» أو استخدام العنوان لفترة من الزمن؛ وبعد هذه المدة، يجب أن يطلب العميل من الخادوم أن يعيد تأجيره إياه.</p><h3 dir="rtl">التوزيع التلقائي (Automatic allocation)</h3><p dir="rtl">سيُسنِد خادوم DHCP -في هذه الطريقة- عنوان IP إسنادًا دائمًا إلى جهاز معين، ويتم اختيار هذه العنوان من مجموعة العناوين المتوفرة؛ يُضبَط عادةً DHCP لكي يُسنِد عنوانًا مؤقتًا إلى الخادوم، لكن يمكن أن يسمح خادوم DHCP بزمن تأجير «لا نهائي».</p><p dir="rtl">يمكن اعتبار آخر طريقتين «تلقائيتَين»، ﻷنه في كل حالة يُسنِد خادوم DHCP العنوان دون تدخل إضافي مباشر، الفرق الوحيد بينهما هو مدة تأجير عنوان IP؛ بكلماتٍ أخرى، هل ستنتهي صلاحية عنوان العميل بعد فترة من الزمن أم لا.</p><p dir="rtl">يأتي أوبنتو مع خادوم وعميل DHCP، الخادوم هو dhcpd‏ (dynamic host configuration protocol daemon)، والعميل الذي يأتي مع أوبنتو هو <span style="font-family:courier new,courier,monospace;">dhclient</span>، ويجب أن يثبَّت على جميع الحواسيب التي تريدها أن تُعَدّ تلقائيًا، كلا البرنامجين سهلُ التثبيت، وسيبدآن تلقائيًا عند إقلاع النظام.</p><h2 dir="rtl">التثبيت</h2><p dir="rtl">اكتب الأمر الآتي في مِحَث الطرفية لتثبيت dhcpd:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install isc-dhcp-server</pre><p dir="rtl">ربما تحتاج إلى تغيير الضبط الافتراضي بتعديل ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/dhcp/dhcpd.conf</span> ليلائم احتياجاتك والضبط الخاص الذي تريده.</p><p dir="rtl">ربما تحتاج أيضًا إلى تعديل ‎<span style="font-family:courier new,courier,monospace;">/etc/default/isc-dhcp-server</span> لتحديد البطاقات الشبكية التي يجب أن «يستمع» (listen) إليها عفريت dhcpd.</p><p dir="rtl"><strong>ملاحظة:</strong> رسالة عفريت dhcpd تُرسَل إلى syslog، انظر هناك لرسائل التشخيص.</p><h2 dir="rtl">الضبط</h2><p dir="rtl">ربما سيربكك ظهور رسالة خطأ عند انتهاء التثبيت، لكن الخطوات الآتية ستساعدك في ضبط الخدمة:</p><p dir="rtl">في الحالات الأكثر شيوعًا، كل ما تريد أن تفعله هو إسناد عناوين IP إسنادًا عشوائيًا، يمكن أن يُفعَل ذلك بالإعدادات الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># 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";
}</pre><p dir="rtl">نتيجة الإعدادات السابقة هي ضبط خادوم DHCP لإعطاء العملاء عناوين IP تتراوح من <span style="font-family:courier new,courier,monospace;">192.168.1.150</span> إلى <span style="font-family:courier new,courier,monospace;">192.168.1.200</span>، وسيُأجَّر عنوان IP لمدة 600 ثانية إذا لم يطلب العميل وقتًا محددًا؛ عدا ذلك، فسيكون وقت الإيجار الأقصى للعنوان هو 7200 ثانية؛ و«سينصح» الخادومُ العميلَ أن يستخدم <span style="font-family:courier new,courier,monospace;">192.168.1.254</span> كبوابة افتراضية، و <span style="font-family:courier new,courier,monospace;">192.168.1.1</span> و<span style="font-family:courier new,courier,monospace;"> 192.168.1.2 </span>كخادومَيّ DNS.</p><p dir="rtl">عليك إعادة تشغيل خدمة <span style="font-family:courier new,courier,monospace;">dhcpd</span> بعد تعديل ملف الضبط:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service isc-dhcp-server restart</pre><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>توجد بعض المعلومات المفيدة في صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/dhcp3-server">dhcp3-server</a>».</li><li>للمزيد من خيارات ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/dhcp/dhcpd.conf</span>، راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man dhcpd.conf</span>.</li><li>مقالة في ISC:‏ «<a rel="external nofollow" href="http://www.isc.org/software/dhcp">dhcp-server</a>».</li></ul><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/dhcp.html">Ubuntu Server Guide: Dynamic Host Configuration Protocol - DHCP</a>.</p><p>حقوق الصورة البارزة: <a href="http://www.freepik.com/free-vector/technology-template-in-flat-design_804803.htm" rel="external nofollow">Designed by Freepik</a>.</p>
]]></description><guid isPermaLink="false">170</guid><pubDate>Fri, 25 Dec 2015 22:54:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x641; &#x639;&#x644;&#x649; &#x628;&#x631;&#x648;&#x62A;&#x648;&#x643;&#x648;&#x644; TCP/IP &#x648;&#x628;&#x639;&#x636; &#x645;&#x646; &#x62E;&#x62F;&#x645;&#x627;&#x62A;&#x647;</title><link>https://academy.hsoub.com/devops/servers/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-tcpip-%D9%88%D8%A8%D8%B9%D8%B6-%D9%85%D9%86-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA%D9%87-r169/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-guide-tcp-ip.png.8c86ed1fe3aafc4828900f435d21913b.png" /></p>
<p dir="rtl">
	إن بروتوكول التحكم في نقل البيانات (Transmission Control Protocol) وبروتوكول الإنترنت (Internet Protocol) المسمى اختصارًا<strong> TCP/IP</strong> هو معيار يضم مجموعة بروتوكولاتٍ مطورةً في نهاية السبعينات من القرن الماضي من وكالة مشاريع أبحاث الدفاع المتقدمة (Defense Advanced Research Projects Agency‏ [DARPA])، كطرق للتواصل بين مختلف أنواع الحواسيب وشبكات الحواسيب؛ إن بروتوكول TCP/IP هو العصب المحرك للإنترنت، وهذا ما يجعله أشهر مجموعة بروتوكولات شبكيّة على وجه الأرض.
</p>

<p dir="rtl" style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-guide-tcp-ip.png.710836c133fad8ff132bf6a9c1bbd5ba.png" data-fileid="9941" data-fileext="png" rel=""><img alt="ubuntu-server-guide-tcp-ip.thumb.png.c6d" class="ipsImage ipsImage_thumbnailed" data-fileid="9941" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-guide-tcp-ip.thumb.png.c6deefbc8dffa04f8b78ce2b7e067c23.png"></a>
</p>

<h2 dir="rtl">
	TCP/IP
</h2>

<p dir="rtl">
	المكونان الرئيسيان من مكونات TCP/IP يتعاملان مع مختلف نواحي شبكة الحاسوب؛ بروتوكول الإنترنت -جزء «IP» من TCP/IP- هو بروتوكول عديم الاتصال (connectionless) يتعامل مع طريقة توجيه (routing) الرزم الشبكية مستخدمًا ما يسمى «IP Datagram» كوحدة رئيسية للمعلومات الشبكية؛ تتكون IP Datagram من ترويسة، يتبعها رسالة. إن بروتوكول التحكم في نقل البيانات هو «TCP» من TCP/IP، ويُمكِّن مضيفي الشبكة من إنشاء اتصالاتٍ يستطيعون استخدامها لتبادل مجاري البيانات (data streams)؛ ويَضمَن أيضًا بروتوكول TCP أن البيانات التي أُرسِلَت بواسطة تلك الاتصالات ستُسَلَّم وتصل إلى مضيف الشبكة المُستقبِل كما أُرسِلَت تمامًا وبنفس الترتيب من المُرسِل.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2 dir="rtl">
	ضبط TCP/IP
</h2>

<p dir="rtl">
	يتكون ضبط TCP/IP من عدِّة عناصر التي يمكن أن تُغيَّر بتعديل ملفات الإعدادات الملائمة، أو باستخدام حلول مثل خادوم «بروتوكول ضبط المضيف الديناميكي» (Dynamic Host Configuration Protocol‏ [DHCP])، الذي يمكن أن يُضبَط لتوفير إعدادات TCP/IP صالحة لعملاء الشبكة تلقائيًا، يجب أن تُضبط قيم تلك الإعدادات ضبطًا صحيحًا لكي تساعد في عمل الشبكة عملًا سليمًا في نظام أوبنتو عندك.
</p>

<p dir="rtl">
	عناصر الضبط الخاصة ببروتوكول TCP/IP ومعانيها هي:
</p>

<ul>
	<li>
		<p dir="rtl">
			<strong>عنوان IP:</strong> هو سلسة نصية فريدة يُعبَّر عنها بأربع مجموعات من أرقام تتراوح بين الصفر (0)، ومئتان وخمسٌ وخمسون (255)، مفصولةٌ بنقط، وكل أربعة أرقام تمثل ثمانية (8) بتات من العنوان الذي يكون طوله الكامل اثنان وثلاثون (32) بتًا، تُسمى هذه الصيغة باسم «dotted quad notation».
		</p>
	</li>
	<li>
		<p dir="rtl">
			<strong>قناع الشبكة:</strong> قناع الشبكة الفرعية (أو باختصار: قناع الشبكة [netmask])، هو قناع ثنائي يفصل قسم عنوان IP المهم للشبكة، عن قسم العنوان المهم للشبكة الفرعية (Subnetwork)؛ على سبيل المثال، في شبكة ذات الفئة C‏ (Class C network)، قناع الشبكة الافتراضي هو <span style="font-family:courier new,courier,monospace;">255.255.255.0</span>، الذي يحجز أول ثلاثة بايتات من عنوان IP للشبكة، ويسمح لآخر بايت من عنوان IP أن يبقى متاحًا لتحديد المضيفين على الشبكة الفرعية.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<strong>عنوان الشبكة:</strong> يمثل عنوان الشبكة (Network Address) البايتات اللازمة لتمثيل الجزء الخاص من الشبكة من عنوان IP، على سبيل المثال، المضيف صاحب العنوان <span style="font-family:courier new,courier,monospace;">12.128.1.2</span> في شبكة ذات الفئة A يستطيع استخدام <span style="font-family:courier new,courier,monospace;">12.0.0.0</span> كعنوان الشبكة، حيث يمثل الرقم 12 البايت الأول من عنوان IP (جزء الشبكة)، وبقية الأصفار في البايتات الثلاثة المتبقية تمثل قيم مضيفين محتملين في الشبكة؛ وفي مضيف شبكة يستخدم عنوان IP الخاص <span style="font-family:courier new,courier,monospace;">192.168.1.100</span> الذي يستخدم بدوره عنوان الشبكة <span style="font-family:courier new,courier,monospace;">192.168.1.0</span> الذي يحدد أول ثلاثة بايتات من شبكة ذات الفئة C والتي هي <span style="font-family:courier new,courier,monospace;">192.168.1</span>، وصفرًا الذي يُمثِّل جميع القيم المحتملة للمضيفين على الشبكة.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<strong>عنوان البث:</strong> عنوان البث (Broadcast Address) هو عنوان IP يسمح لبيانات الشبكة بأن تُرسَل إلى كل المضيفين معًا في شبكة محلية بدلًا من إرسالها لمضيف محدد. العنوان القياسي العام للبث لشبكات IP هو <span style="font-family:courier new,courier,monospace;">255.255.255.255</span>، لكن لا يمكن استخدام هذا العنوان لبث الرسائل لكل مضيف على شبكة الإنترنت، لأن الموجهات (routers) تحجبها؛ ومن الملائم أن يُضبَط عنوان البث لمطابقة شبكة فرعية محددة، على سبيل المثال، في شبكة خاصة ذات الفئة C،‏ أي <span style="font-family:courier new,courier,monospace;">192.168.1.0</span>، يكون عنوان البث <span style="font-family:courier new,courier,monospace;">192.168.1.255</span>؛ تُولَّد رسائل البث عادةً من بروتوكولات شبكيّة مثل بروتوكول استبيان العناوين (Address Resolution Protocol‏ [ARP])، وبروتوكول معلومات التوجيه (Routing Information Protocol‏ [RIP]).
		</p>
	</li>
	<li>
		<p dir="rtl">
			<strong>عنوان البوابة:</strong> إن عنوان البوابة (Gateway Address) هو عنوان IP الذي يمكن الوصول عبره إلى شبكة معينة أو إلى مضيف معين على شبكة؛ فإذا أراد أحد مضيفي الشبكة التواصل مع مضيفٍ آخر، ولكن المضيف الآخر ليس على نفس الشبكة، فيجب عندئذٍ استخدام البوابة؛ في حالات عديدة، يكون عنوان البوابة في شبكةٍ ما هو الموجه (router) على تلك الشبكة، الذي بدوره يُمرِّر البيانات إلى بقية الشبكات أو المضيفين كمضيفي الإنترنت على سبيل المثال. يجب أن تكون قيمة عنوان البوابة صحيحةً، وإلا فلن يستطيع نظامك الوصول إلى أي مضيف خارج حدود شبكته نفسها.
		</p>
	</li>
	<li>
		<p dir="rtl">
			<strong>عنوان خادوم الأسماء:</strong> عناوين خادوم الأسماء (Nameserver Addresses) تمثل عناوين IP لخواديم خدمة أسماء المضيفين DNS، التي تستطيع استبيان (resolve) أسماء مضيفي الشبكة وتحويلها إلى عناوين IP؛ هنالك ثلاث طبقات من عناوين خادوم الأسماء، التي يمكن أن تُحدَّد بترتيب استخدامها: خادوم الأسماء الرئيسي (Primary)، وخادوم الأسماء الثانوي (Secondary)، وخادوم الأسماء الثلاثي (Tertiary)، ولكي يستطيع نظامك استبيان أسماء أسماء مضيفي الشبكة وتحويلها إلى عناوين IP الموافقة لهم، فيجب عليك تحديد عناوين خادوم الأسماء الذي تثق به لاستخدامه في ضبط TCP/IP لنظامك؛ في حالاتٍ عديدة، تُوفَّر هذه العناوين من موزع خدمة شبكتك، لكن هنالك خواديم أسماء عديدة متوفرة مجانًا للعموم، كخواديم Level3‏ (Verizon) بعناوين IP تتراوح بين <span style="font-family:courier new,courier,monospace;">4.2.2.1</span> إلى<span style="font-family:courier new,courier,monospace;"> 4.2.2.6</span>.
		</p>
	</li>
</ul>

<p dir="rtl">
	<strong>تنبيه:</strong> إن عنوان IP، وقناع الشبكة، وعنوان الشبكة، وعنوان البث، وعنوان البوابة تُحدَّد عادةً بالإمكان الملائمة لها في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/network/interfaces</span>، عناوين خادوم الأسماء تُحدَّد عادة في قسم nameserver في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/resolve.conf</span>، للمزيد من المعلومات، راجع صفحة الدليل لكلٍ من <span style="font-family:courier new,courier,monospace;">interfaces</span> و <span style="font-family:courier new,courier,monospace;">resolv.conf</span> على التوالي وبالترتيب، وذلك بكتابة الأوامر الآتية في محث الطرفية:
</p>

<p dir="rtl">
	للوصول إلى صفحة دليل <span style="font-family:courier new,courier,monospace;">interfaces</span>، اكتب الأمر الآتي:
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">man interfaces</pre>

<p dir="rtl">
	وللوصول إلى صفحة دليل <span style="font-family:courier new,courier,monospace;">resolv.conf</span>:
</p>

<pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">man resolv.conf</pre>

<h2 dir="rtl">
	توجيه IP
</h2>

<p dir="rtl">
	يمثِّل توجيه IP‏ (IP Routing) الوسائل اللازمة لتحديد واكتشاف الطرق في شبكات TCP/IP بالإضافة إلى تحديد بيانات الشبكة التي ستُرسَل، يَستخدِم التوجيه ما يسمى «جداول التوجيه» (routing tables) لإدارة تمرير رزم بيانات الشبكة من مصدرها إلى وجهتها؛ وذلك عادة بواسطة عقد شبكيّة وسيطة تسمى «موجهات» (routers)؛ وهنالك نوعان رئيسيان من توجيه IP: التوجيه الثابت (static routing)، والتوجيه الديناميكي (dynamic routing).
</p>

<p dir="rtl">
	يشتمل التوجيه الثابت على إضافة توجيهات IP يدويًّا إلى جدول توجيهات النظام، ويتم ذلك عادةً بتعديل جدول التوجيهات باستخدام الأمر route؛ يتمتع التوجيه الثابت بعدِّة مزايا تميزه عن التوجيه الديناميكي، كسهولة استخدامه في الشبكات الصغيرة، وقابلية التوقع (يُحسَب جدول التوجيهات مسبقًا دائمًا، وهذا ما يؤدي إلى استخدام نفس المسار في كل مرة)، ويؤدي إلى حِملٍ قليل على الموجهات الأخرى ووصلات الشبكة نتيجةً لعدم استخدام بروتوكولات التوجيه الديناميكي؛ لكن يواجه التوجيه الثابت بعض الصعوبات أيضًا؛ فعلى سبيل المثال، التوجيهُ الثابتُ محدودٌ للشبكات الصغيرة، ولا يمكن أن يتوسَّع توسعًا سهلًا، ويصعب عليه التأقلم مع نقصان أو فشل معدات الشبكة في الطريق المسلوك نتيجةً للطبيعة الثابتة لذاك الطريق.
</p>

<p dir="rtl">
	يُعتَمَد على التوجيه الديناميكي في الشبكات الكبيرة ذات احتمالات عديدة للطرق الشبكية المسلوكة من المصدر إلى الوجهة، وتُستخدَم بروتوكولات توجيه خاصة، كبروتوكول معلومات الموجه (Router Information Protocol [RIP])، الذي يتولَّى أمر التعديلات التلقائية في جداول التوجيه، مما يجعل من التوجيه الديناميكي أمرًا ممكنًا؛ وللتوجيه الديناميكي مزايا عدّة عن التوجيه الثابت، كإمكانية التوسع بسهولة، والتأقلم مع نقصان أو فشل معدات الشبكة خلال الطريق المسلوك في الشبكة، بالإضافة إلى الحاجة لإعداداتٍ قليلةٍ نسبيًا لجداول التوجيه، ﻷن الموجهات تعلم عن وجود وتوفر بعضها بعضًا؛ وهذه الطريقة تمنع حدوث مشاكل في التوجيه نتيجةً لخطأ بشري في جداول التوجيه. لكن التوجيه الديناميكي ليس كاملًا، ويأتي مع عيوب، كالتعقيد، والحِمل الزائد على الشبكة بسبب التواصل بين الموجهات، التي لا تفيد المستخدمين المباشرين فوريًا، وتستهلك التراسل الشبكي.
</p>

<h2 dir="rtl">
	بروتوكولَي TCP و UDP
</h2>

<p dir="rtl">
	إن بروتوكول TCP هو بروتوكول مبني على الاتصال (connection-based)، ويوفر آليةً لتصحيح الأخطاء، وضمانةً لتسليم البيانات عبر ما يُعرَف بالمصطلح «التحكم في الجريان» (flow control)، يُحدِّد التحكم في الجريان متى يجب إيقاف نقل البيانات، وإعادة إرسال الرزم التي أُرسِلَت سابقًا والتي واجهة مشاكل كالتصادمات (collisions)؛ إذ أنَّ التأكيد على الوصول الدقيق والكامل للبيانات عبر بروتوكول TCP هو أمر جوهري في عملية تبادل البيانات المهمة كالتحويلات في قواعد البيانات.
</p>

<p dir="rtl">
	أما بروتوكول UDP‏ (User Datagram Protocol) على الجهة الأخرى، هو بروتوكول عديم الاتصال (connectionless)، الذي نادرًا ما يتعامل مع عمليات نقل البيانات المهمة لأنه يفتقر إلى التحكم في جريان البيانات أو أيّة طريقة أخرى للتأكد من توصيل البيانات عمليًا؛ لكن بروتوكول UDP يُستخدَم استخدامًا شائعًا في التطبيقات كتدفق (streaming) الصوت والصورة، حيث أنه أسرع بكثير من TCP ﻷنه لا يحتوي على آليةٍ لتصحيح الأخطاء والتحكم في الجريان، وفي الأماكن التي لا يهم فيها فقدان بعض الرزم الشبكية كثيرًا.
</p>

<h2 dir="rtl">
	بروتوكول ICMP
</h2>

<p dir="rtl">
	إن بروتوكول ICMP‏ (Internet Control Messaging Protocol) هو إضافة إلى بروتوكول الإنترنت (IP) الذي يُعرَّف في RFC‏‏ (Request For Comments) ذي الرقم ‎#792 ويدعم التحكم في احتواء الرزم الشبكية والأخطاء ورسائل المعلومات، يُستخدَم بروتوكول ICMP بتطبيقات شبكيّة كأداة ping، التي تستطيع تحديد إذا ما كان جهازٌ ما متاحًا على الشبكة، أمثلة عن رسالة الخطأ المُعادَة من ICMP -التي تكون مفيدةً لمضيفي الشبكة وللأجهزة كالموجهات- تتضمن رسالتَي «Destination Unreachable» و «Time Exceeded».
</p>

<h2 dir="rtl">
	العفاريت
</h2>

<p dir="rtl">
	العفاريت (Daemons) هي تطبيقات نظام خاصة التي تعمل عادةً عملًا دائمًا في الخلفية، وتنتظر طلبياتٍ للوظائف التي توفرها من التطبيقات الأخرى، يتمحور عمل العديد من العفاريت حول الشبكة، وبالتالي فإن عددًا كبيرًا من العفاريت التي تعمل في الخلفية في نظام أوبنتو تُوفِّر وظائف تتعلق بالشبكة؛ بعض الأمثلة عن عفاريت الشبكة تتضمن «عفريت بروتوكول نقل النص الفائق» (HyperText Transport Protocol Daemon‏ [httpd])، الذي يوفر وظيفة خادوم الويب؛ و «عفريت الصدفة الآمنة» (Secure SHell Daemon‏ [sshd])، الذي يوفر طريقةً للدخول الآمن عن بُعد وإمكانيات نقل الملفات؛ و «عفريت بروتوكول الوصول إلى رسائل الإنترنت» (Internet Message Access Protocol Daemon‏ [imapd]) الذي يوفر خدمات البريد الإلكتروني...
</p>

<h2 dir="rtl">
	مصادر
</h2>

<ul dir="rtl">
	<li>
		تتوفر صفحات دليلٍ لبروتوكولي TCP و IP التي تحتوي على معلومات قيمّة.
	</li>
	<li>
		راجع أيضًا المصدر الآتي من IBM‏: «<a href="http://www.redbooks.ibm.com/abstracts/gg243376.html" rel="external nofollow">TCP/IP Tutorial and Technical Overview</a>».
	</li>
	<li>
		مصدرٌ أخرى هو كتاب «<a href="http://oreilly.com/catalog/9780596002978/" rel="external nofollow">TCP/IP Network Administration</a>» من O'Reilly.
	</li>
</ul>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://help.ubuntu.com/lts/serverguide/tcpip.html" rel="external nofollow">Ubuntu Server Guide: Networking TCP/IP</a>.
</p>
]]></description><guid isPermaLink="false">169</guid><pubDate>Wed, 23 Dec 2015 00:14:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x636;&#x628;&#x637; &#x625;&#x639;&#x62F;&#x627;&#x62F;&#x627;&#x62A; &#x627;&#x644;&#x634;&#x628;&#x643;&#x627;&#x62A; &#x639;&#x644;&#x649; &#x62E;&#x627;&#x62F;&#x648;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r160/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-network-config.png.cbbd5d8cc2e730eb7a832ef51bf947d0.png" /></p>

<p dir="rtl">تتكون الشبكات من جهازين أو أكثر، كأنظمة الحواسيب والطابعات وغيرها من المعدات المتعلقة بها والتي يمكن أن تتصل إما باستخدام كبل فيزيائي أو بالروابط اللاسلكية؛ وذلك لمشاركة وتوزيع المعلومات بين الأجهزة المتصلة.</p><p dir="rtl">يوفر هذا الدرس معلوماتٍ عامة وأخرى متخصصة تتعلق بالشبكات، وتتضمن لمحةً عن مفاهيم الشبكة، ونقاشًا مفصَّلًا عن بروتوكولات الشبكة الشائعة.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-network-config.png.556fc212fcef1b64d54d06aeb2df2ada.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="9770" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-network-config.thumb.png.a3306a6a5cff40088041ca73f597e43f.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-network-config.thumb.png.a"></a></p><p dir="rtl">تأتي أوبنتو مع عدد من الأدوات الرسومية لضبط أجهزة الشبكة، هذه السلسلة موجَّهة لمدراء الخواديم، وستركِّز على إدارة الشبكة من سطر الأوامر.</p><h2 dir="rtl">بطاقات إيثرنت</h2><p dir="rtl">تُعرَّف بطاقات إيثرنت (Ethernet interfaces) في النظام باستخدام الاسم الاصطلاحي <strong>ethX</strong>، حيث تمثل X قيمةً رقميةً، وتُعرَّف أول بطاقة إيثرنت بالاسم <strong>eth0</strong>، والثانية بالاسم <strong>eth1</strong>، وهَلُّمَ جرًا للبقية، حيث تُرتَّب ترتيبًا رقميًا.</p><h3 dir="rtl">التعرف على بطاقات إيثرنت</h3><p dir="rtl">يمكنك استخدام الأمر <span style="font-family:courier new,courier,monospace;">ifconfig</span> كما يلي للتعرف على جميع بطاقات إيثرنت بسرعة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ifconfig -a | grep eth
eth0 Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a</pre><p dir="rtl">برمجيةٌ أخرى تساعدك في التعرف على جميع بطاقات الشبكة المتوفرة في نظامك هي الأمر <span style="font-family:courier new,courier,monospace;">lshw</span>؛ يُظهِر الأمر <span style="font-family:courier new,courier,monospace;">lshw</span> في المثال الآتي بطاقة إيثرنت واحدة باسمها المنطقي <strong>eth0</strong>، مع معلومات الناقل (bus) وتفاصيل التعريف وكل الإمكانيات المدعومة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><h3 dir="rtl">الأسماء المنطقية لبطاقات إيثرنت</h3><p dir="rtl">تُعرَّف الأسماء المنطقية للبطاقات في الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/udev/rules.d/70-persistent-net.rules</span>، إذا أردت التحكم في بطاقة التي ستحصل على اسم منطقي معين، فابحث عن السطر الذي يطابق عنوان MAC الفيزيائي للبطاقة، وعدِّل قيمة <strong>NAME=ethX</strong> إلى الاسم المنطقي المطلوب؛ أعد إقلاع النظام لتطبيق التغيرات التي أجريتها.</p><h3 dir="rtl">إعدادات بطاقة إيثرنت</h3><p dir="rtl">إن <strong>ethtool</strong> هو برنامج يُظهِر ويعدِّل إعدادات بطاقة إيثرنت كالمفاوضة التلقائية (auto-negotiation)، وسرعة المنفذ، ونمط duplex (اتصال باتجاه وحيد، أم باتجاهين)، وخاصية الاستيقاظ عند وصول إشارة معينة من شبكة WoL‏ (Wake-on-LAN)؛ هذا البرنامج غير مثبَّت افتراضيًا، لكنه متوفر في المستودعات للتثبيت:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install ethtool</pre><p dir="rtl">ما يلي مثالٌ عن عرض الميزات المدعومة، وضبط إعدادات بطاقة إيثرنت:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">التغيرات التي أُجريت بالأداة <span style="font-family:courier new,courier,monospace;">ethtool</span> هي تغيرات مؤقتة، وستزول بعد إعادة الإقلاع، إذا أردت الحفاظ على تلك الخيارات، فأضف أمر <span style="font-family:courier new,courier,monospace;">ethtool</span> الذي تريده إلى عبارة pre-up (التي تُنفَّذ عند تهيئة البطاقة وقبل استخدامها)، في ملف الإعدادات <span style="font-family:courier new,courier,monospace;">‎/etc/network/interfaces</span>.</p><p dir="rtl">يوضح المثال الآتي كيف يمكن ضبط إعدادات بطاقة مُعرَّفة على أنها <strong>eth0</strong> بسرعة منفذ تساوي 1000Mb/s وتعمل في نمط full duplex (اتصال باتجاهين):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">auto eth0
iface eth0 inet static
pre-up /sbin/ethtool -s eth0 speed 1000 duplex full</pre><p dir="rtl"><strong>ملاحظة: </strong>على الرغم من أن المثال السابق يستخدم الطريقة «static»، إلا أنه يعمل مع الطرق الأخرى أيضًا، كاستخدام DHCP؛ فالغرض من المثال السابق هو توضيح المكان الصحيح لوضع عبارة pre-up في ملف إعدادات البطاقة وحسب.</p><h2 dir="rtl">عناوين IP</h2><p dir="rtl">سيشرح القسم الآتي طريقة إعداد عناوين IP لنظامك، وضبط البوابة (gateway) الافتراضية اللازمة للتواصل على الشبكة المحلية والإنترنت.</p><h3 dir="rtl">إسناد مؤقت لعنوان IP</h3><p dir="rtl">يمكن استخدام الأوامر القياسية عند الضبط المؤقت للشبكة، كالأمر <span style="font-family:courier new,courier,monospace;">ip</span> و <span style="font-family:courier new,courier,monospace;">ifconfig</span> و <span style="font-family:courier new,courier,monospace;">route</span> التي يمكنك إيجادها في أغلب أنظمة تشغيل غنو/لينُكس؛ تسمح لك هذه الأوامر بضبط الإعدادات التي تأخذ حيز التنفيذ فوريًا، لكنها ليست دائمة؛ أي أنها لن تبقى مُفعَّلةً بعد إعادة التشغيل.</p><p dir="rtl">لضبط عنوان IP مؤقتًا، استخدم الأمر <span style="font-family:courier new,courier,monospace;">ifconfig</span> بالطريقة الآتية: لتعديل عنوان IP وقناع الشبكة الفرعية (subnet mask) لمطابقة متطلبات الشبكة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0</pre><p dir="rtl">للتأكد من ضبط عنوان IP للبطاقة <strong>eth0</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">لضبط البوابة الافتراضية، يمكنك استخدام الأمر route بالطريقة الآتية: حيث عليك تغيير عنوان البوابة الافتراضية لمطابقة متطلبات شبكتك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo route add default gw 10.0.0.1 eth0</pre><p dir="rtl">يمكنك استخدام الأمر <span style="font-family:courier new,courier,monospace;">route</span> بهذه الطريقة للتأكد من ضبط البوابة الافتراضية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">إذا كنت تحتاج إلى DNS لإعدادات شبكتك المؤقتة، فيمكنك إضافة عناوين IP لخواديم DNS في الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/resolv.conf</span>، لكن ليس من المستحسن عمومًا تعديل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/resolv.conf</span> مباشرةً، لكن هذا ضبط مؤقت وغير دائم؛ يوضح المثال الآتي طريقة إضافة عناوين خادومَي DNS إلى ملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/resolv.conf</span>؛ التي يجب أن تُبدَّل إلى الخواديم الملائمة لشبكتك؛ شرحٌ مطول عن ضبط إعدادات عميل DNS سيأتي في القسم الآتي.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nameserver 8.8.8.8
nameserver 8.8.4.4</pre><p dir="rtl">إذا لم تعد بحاجة لهذا الضبط وتريد مسح كل إعدادات IP من بطاقة معينة، فعليك استخدام الأمر <span style="font-family:courier new,courier,monospace;">ip</span> مع الخيار <span style="font-family:courier new,courier,monospace;">flush</span> كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ip addr flush eth0</pre><p dir="rtl"><strong>ملاحظة: </strong>عملية إزالة ضبط IP باستخدام الأمر <span style="font-family:courier new,courier,monospace;">ip</span> لا تمسح محتويات ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/resolv.conf</span>، فعليك حذف أو تعديل محتوياته يدويًا.</p><h3 dir="rtl">إسناد ديناميكي لعنوان IP (عميل DHCP)</h3><p dir="rtl">لإعداد الخادوم لكي يستخدم DHCP لإسناد العنوان ديناميكيًا، فأضف الطريقة dhcp إلى عبارة «عائلة العنوان» (address family) في inet للبطاقة المطلوبة في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/network/interfaces</span>، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم <strong>eth0</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">auto eth0
iface eth0 inet dhcp</pre><p dir="rtl">بإضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر <span style="font-family:courier new,courier,monospace;">ifup</span> الذي يهيّء DHCP باستخدام <span style="font-family:courier new,courier,monospace;">dhclient</span>.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifup eth0</pre><p dir="rtl">لتعطيل البطاقة يدويًا، يمكنك استخدام الأمر <span style="font-family:courier new,courier,monospace;">ifdown</span>، الذي بدوره يهيّء عملية الإطلاق (release) الخاصة بنظام DHCP، ويوقف عمل البطاقة.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifdown eth0</pre><h3 dir="rtl">إسناد عنوان IP ثابت</h3><p dir="rtl">لإعداد نظامك لاستخدام عنوان IP ثابت، فاستخدم الطريقة static في عبارة «عائلة العنوان» في inet للبطاقة المطلوبة في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/network/interfaces</span>، يفترض المثال الآتي أنك تُعِدّ بطاقة إيثرنت الأولى المعرَّفة باسم <strong>eth0</strong>، عدِّل العنوان (address) وقناع الشبكة (netmask) والبوابة (gateway) إلى القيم التي تتطلبها شبكتك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1</pre><p dir="rtl">بعد إضافة ضبط للبطاقة كما في المثال السابق، يمكنك أن تفعِّل البطاقة باستخدام الأمر <span style="font-family:courier new,courier,monospace;">ifup</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifup eth0</pre><p dir="rtl">يمكنك استخدام الأمر <span style="font-family:courier new,courier,monospace;">ifdown</span> لتعطيل البطاقة يدويًا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifdown eth0</pre><h3 dir="rtl">بطاقة loopback</h3><p dir="rtl">إن بطاقة loopback (التي هي المضيف المحلي)، معرَّفة من النظام بالاسم lo، ولها عنوان IP الافتراضي 127.0.0.1، ويمكن أن تُعرَض باستخدام الأمر <span style="font-family:courier new,courier,monospace;">ifconfig</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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)</pre><p dir="rtl">افتراضيًا، يجب أن يكون هنالك سطران في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/network/interfaces</span> مسؤولان عن ضبط بطاقة loopback تلقائيًا، ومن المستحسن أن تبقي على الإعدادات الافتراضية ما لم يكن لك غرضٌ محدد من تغييرها؛ مثال على السطرين الافتراضيين:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">auto lo
iface lo inet loopback</pre><h2 dir="rtl">استبيان الأسماء</h2><p dir="rtl">إن استبيان الأسماء (Name resolution) الذي يتعلق بشبكات IP، هو عملية ربط عناوين IP إلى أسماء المضيفين، جاعلًا من السهل تمييز الموارد على الشبكة؛ سيشرح القسم الآتي كيف يُعَدّ النظام لاستبيان الأسماء باستخدام DNS، وسجلات أسماء المضيفين الثابتة (static hostname records).</p><h3 dir="rtl">ضبط إعدادات عميل DNS</h3><p dir="rtl">تقليديًا، كان الملف<span style="font-family:courier new,courier,monospace;"> ‎/etc/resolv.conf</span> ملف ضبطٍ ثابتٍ لا تحتاج لتعديله إلا نادرًا، أو كان يُعدَّل تلقائيًا عبر عميل DHCP؛ أما حاليًا فيمكن أن يُبدِّل الحاسوب بين شبكةٍ وأخرى من حين لآخر، وأصبح يُستخدَم إطار العمل <strong>resolvconf</strong> لتَتَبُّع هذه التغيرات وتحديث إعدادات استبيان الأسماء تلقائيًا؛ في الواقع هو وسيط بين البرامج التي توفر معلومات استبيان الأسماء، والتطبيقات التي تحتاج إلى تلك المعلومات.</p><p dir="rtl">يُغَذَّى Resolvconf بالمعلومات عبر مجموعة من السكربتات التي تتعلق بإعدادات بطاقة الشبكة، الفرق الوحيد بالنسبة للمستخدم هي أن أيّة تعديلات حدثت على ملف <span style="font-family:courier new,courier,monospace;">‎/etc/resolv.conf</span> ستُفقَد عندما تُعاد كتابته كل مرة يُشغِّل فيها حدثٌ ما resolvconf؛ فبدلًا من ذلك، يستخدم resolvconf عميل DHCP وملف <span style="font-family:courier new,courier,monospace;">‎/etc/network ‎/interfaces</span> لتوليد قائمة بخواديم الأسماء والنطاقات ليضعها في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/resolv.conf</span>، الذي هو الآن وصلةٌ رمزية (symlink):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">/etc/resolv.conf -&gt; ../run/resolvconf/resolv.conf</pre><p dir="rtl">لضبط استبيان الأسماء، أضف عناوين IP لخواديم الأسماء الملائمة لشبكتك في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/network ‎/interfaces</span>، يمكنك إضافة قائمة بحث اختيارية للاحقة DNS ‏(DNS suffix search-lists) لمطابقة أسماء نطاقات الشبكة، ولكل خيار ضبط <span style="font-family:courier new,courier,monospace;">resolv.conf</span> صالح، يمكنك تضمين سطر واحد يبدأ باسم الخيار مع السابقة dns‎-‎ مما ينتج ملفًا شبيهًا بالملف الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">يمكن أن يُستخدَم الخيار <span style="font-family:courier new,courier,monospace;">search</span> مع عدِّة أسماء نطاقات، وستُلحَق طلبيات DNS في التسلسل الذي أُدخِلَت به؛ على سبيل المثال، ربما يكون لشبكتك نطاقات فرعية يجب البحث فيها؛ نطاق رئيسي «example.com»، ونطاقين فرعيين «sales.example.com»، و «dev.example.com».</p><p dir="rtl">إذا كنت تريد البحث في عدِّة نطاقات فرعية، فسيكون ملف الضبط كالآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl">إذا كنت تحاول عمل <span style="font-family:courier new,courier,monospace;">ping</span> للمضيف ذي الاسم server1، فسيطلب النظام تلقائيًا طلبية DNS لاسم النطاق الكامل (Fully Qualified Domain Name [‏FQDN])، في الترتيب الآتي:</p><ol dir="rtl"><li>server1.<strong>example.com</strong></li><li>server1.<strong>sales.example.com</strong></li><li>server1.<strong>dev.example.com</strong></li></ol><p dir="rtl">إذا لم يُعثَر على أيّة مطابقات، فسيزودنا خادوم DNS بنتيجة «notfound»، وستفشل طلبية DNS.</p><h3 dir="rtl">أسماء المضيفين الثابتة</h3><p dir="rtl">يمكن تعريف أسماء ثابتة للمضيفين تربط بين اسم المضيف وعنوان IP في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/hosts</span>؛ المدخلات في ملف hosts ستسبق طلبيات DNS افتراضيًا، هذا يعني لو أن نظامك حاول تفسير اسم مضيف، وكان هذا الاسم يطابق مدخلةً في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/hosts</span>، فلن يحاول البحث في سجلات DNS؛ وفي بعض حالات الاستخدام -وخصوصًا عندما لا يُتَطَّلب الوصول إلى الإنترنت- يمكن أن تتعرف الخواديم الموصولة بعدد قليل من الموارد الشبكية على بعضها باستخدام أسماء المضيفين الثابتة بدلًا من DNS.</p><p dir="rtl">المثال الآتي هو ملف <span style="font-family:courier new,courier,monospace;">hosts</span>، حيث نجد عددًا من الخواديم المحلية قد عُرِّفَت بأسماء مضيفين بسيطة، وأسماءٍ بديلة، وأسماء النطاقات الكاملة المكافئة لها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl"><strong>ملاحظة:</strong> لاحظ أن كل خادوم من الخواديم في المثال السابق قد أُعطي أسماءً بديلةً بالإضافة إلى أسمائها الأساسية، وأسماء النطاقات الكاملة؛ حيت رُبِطَ server1 مع الاسم <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">vpn</abbr>، و server2 يُشار إليه بالاسم mail، و server3 بالاسم www، و server4 بالاسم file.</p><h3 dir="rtl">ضبط تبديل خدمة الأسماء</h3><p dir="rtl">الترتيب الذي يتبّعه نظامك لاختيار طريقةٍ لتحويل أسماء المضيفين إلى عناوين IP مُتَحَّكَمٌ به من ملف إعدادات «مُبَدِّل خدمة الأسماء» (Name Service Switch‏ [NSS]) الموجود في <span style="font-family:courier new,courier,monospace;">‎/etc/nsswitch.conf</span>؛ وكما ذُكِرَ في القسم السابق، فإن أسماء المضيفين الثابتة المعرَّفة في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/hosts</span> تسبق استخدام سجلات DNS؛ المثال الآتي يحتوي على السطر المسؤول عن ترتيب البحث عن أسماء المضيفين في ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/nsswitch.conf</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4</pre><ul dir="rtl"><li><strong>files:</strong> المحاولة أولًا للحصول على العناوين من ملف أسماء المضيفين الثابتة في ‎<span style="font-family:courier new,courier,monospace;">/etc/hosts</span>.</li><li><strong>mdns4_minimal: </strong>محاولة الحصول على العناوين باستخدام Mulitcast DNS.</li><li><strong>[NOTFOUND=return]:</strong> تعني أن أي جواب يكون notfound أتى من عملية<span style="font-family:courier new,courier,monospace;"> mdns4_minimal</span> السابقة سيُعامَل بموثقية، ولن يحاول النظام الاستمرار في محاولة الحصول على جواب.</li><li><strong>dns:</strong> تمثل طلبية Unicast DNS قديمة.</li><li><strong>mdns4:</strong> تمثل طلبية Mulitcast DNS.</li></ul><p dir="rtl">لتعديل ترتيب طرائق استبيان الأسماء (name resolution) المذكورة آنفًا، يمكنك بكل بساطة تعديل قيمة عبارة «hosts» للقيمة التي تريدها؛ على سبيل المثال، لو كنت تفضل استخدام Unicast DNS القديم، بدلًا من Mulitcast DNS، فتستطيع تغيير تلك السلسلة النصية في ملف ‎ <span style="font-family:courier new,courier,monospace;">/etc/nsswitch.conf</span>كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">hosts: files dns [NOTFOUND=return] mdns4_minimal mdns4</pre><h2 dir="rtl">إنشاء الجسور</h2><p dir="rtl">إنشاء جسر (bridge) بين عدة بطاقات شبكية هو ضبط متقدم جدًا، لكنه مفيد كثيرًا في حالات عديدة، أحد تلك الحالات هو إنشاء جسر بين عدة اتصالات شبكية، ثم استخدام جدار ناري لترشيح (filter) ما يمر بين قسمين من الشبكة؛ حالةٌ أخرى هي استخدام إحدى البطاقات لتمكين «الآلات الوهمية» (Virtual Machines) من الوصول إلى الشبكة الخارجية؛ يشرح المثال الآتي الحالة الأخيرة.</p><p dir="rtl">قبل ضبط إعدادات الجسر، عليك تثبيت حزمة <span style="font-family:courier new,courier,monospace;">bridge-utils</span>، أدخِل الأمر الآتي في الطرفية لتثبيت هذه الحزمة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install bridge-utils</pre><p dir="rtl">ثم اضبط الجسر بتعديل ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/network/interfaces</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p dir="rtl"><strong>ملاحظة:</strong> أدخِل القيم الملائمة لبطاقتك الفيزيائية، والشبكة عندك.</p><p dir="rtl">ثم شغِّل بطاقة الجسر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ifup br0</pre><p dir="rtl">يجب أن تعمل بطاقة الجسر تلقائيًا الآن، تُوفِّر الأداة <span style="font-family:courier new,courier,monospace;">brctl</span> معلوماتٍ حول حالة الجسر، وتتحكم بالبطاقات التي تكوِّن جزءًا من الجسر؛ راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man brctl</span> لمزيد من المعلومات.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>هنالك وصلات في صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/Network">Network</a>» تشير إلى مقالات تشرح الضبط المتقدم جدًا للشبكة.</li><li>صفحة الدليل الخاصة بالبرمجية <span style="font-family:courier new,courier,monospace;">resolvconf</span> فيها بعض المعلومات عن <span style="font-family:courier new,courier,monospace;">resolvconf</span>.</li><li>صفحة دليل <span style="font-family:courier new,courier,monospace;">man interfaces</span> تحتوي على تفاصيل عن خياراتٍ أخرى لملف ‎<span style="font-family:courier new,courier,monospace;">/etc/network ‎/interfaces</span>.</li><li>صفحة دليل <span style="font-family:courier new,courier,monospace;">man dhclient</span> تحتوي على تفاصيل عن الخيارات الأخرى لضبط إعدادات عميل DHCP.</li><li>للمزيد من المعلومات حول ضبط عميل DNS، راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man resolver</span>؛ راجع أيضًا الفصل السادس من الكتاب المنشور من O'Reilly‏: «<a rel="external nofollow" href="http://oreilly.com/catalog/linag2/book/ch06.html">Linux Network Administrator's Guide</a>»؛ الذي هو مصدر جيد للمعلومات حول ضبط resolver، وخدمة الأسماء.</li><li>لمزيد من المعلومات حول الجسور، راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man brctl</span>، وصفحة <a rel="external nofollow" href="http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge">Networking-bridge</a> في موقع مؤسسة لينُكس (Linux Foundation).</li></ul><div id="sdfootnote1"><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/network-configuration.html">Ubuntu Server Guide: Network Configuration</a>.</p></div>
]]></description><guid isPermaLink="false">160</guid><pubDate>Sat, 19 Dec 2015 21:52:58 +0000</pubDate></item><item><title>&#x625;&#x62F;&#x627;&#x631;&#x629; &#x627;&#x644;&#x62D;&#x632;&#x645; &#x639;&#x644;&#x649; &#x646;&#x633;&#x62E;&#x629; &#x627;&#x644;&#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x645;&#x646; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D8%B9%D9%84%D9%89-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r156/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-package-managment.png.685132e810b967f6a86daa130f232c06.png" /></p>

<p dir="rtl">توفر أوبنتو نظام إدارةَ حزمٍ شاملٍ للتثبيت والترقية والضبط وإزالة البرمجيات، بالإضافة إلى توفير الوصول إلى أكثر من 35000 حزمة برمجيات منظَّمة؛ وأيضًا من ميزات نظام إدارة الحزم حل مشاكل الاعتماديات، والتحقق من وجود تحديثات للبرمجيات.</p><p dir="rtl">هنالك عدة أدوات متوفرة للتعامل مع نظام إدارة الحزم الخاص بأوبنتو، بدءًا من الأدوات البسيطة التي تعمل من سطر الأوامر، التي يمكن بسهولةٍ أتمتةُ عملها من مدراء النظام، ووصولًا إلى واجهة رسومية بسيطة تكون سهلةً على الوافدين الجدد لنظام أوبنتو.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-package-managment.png.f1a69dd91f839f50738285b9f07192dd.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="9774" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-package-managment.thumb.png.7cf30a00f53ffd2d36ea4e1dc13f6fa0.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-package-managment.thumb.pn"></a></p><h2 dir="rtl">مقدمة</h2><p dir="rtl">أُشتُق نظام إدارة الحزم في أوبنتو من نفس النظام المستخدم في توزيعة دبيان غنو/لينُكس. تحتوي ملفات الحزم على جميع الملفات اللازمة، والبيانات الوصفية، والتعليمات لتشغيل وظيفة معينة أو برنامج محدد على حاسوبك العامل بنظام تشغيل أوبنتو.</p><p dir="rtl">تكون لملفات حزم دبيان عادةً اللاحقة «‎<span style="font-family:courier new,courier,monospace;">.deb</span>»، وتتواجد غالبًا في «مستودعات» (repositories)، التي هي مجموعات من الحزم الموجودة في وسائط مختلفة، كأقراص CD-ROM، أو على الإنترنت؛ تلك الحزم مُصرَّفة (compiled) مسبقًا إلى صيغة ثنائية في غالب الأحيان، لذلك يكون تثبيتها سريعًا، وبالتالي لا تحتاج لبناء البرمجية من المصدر.</p><p dir="rtl">تَستخدم حزمٌ عديدةٌ معقدةٌ المصطلحَ «الاعتماديات» (dependencies)؛ الاعتماديات هي الحزم الإضافية التي تتطلبها حزمة رئيسية ﻷداة الوظيفة المطلوبة أداءً سليمًا؛ على سبيل المثال، حزمة تركيب الكلام المسماة festival تعتمد على حزمة <span style="font-family:courier new,courier,monospace;">libasound2</span>، التي توفر مكتبة الصوت ALSA الضرورية لتشغيل الصوت، ولكي يعمل festival عملًا صحيحًا، يجب أن يُثبَّت هو وجميع اعتمادياته؛ حيث تُجري أدوات إدارة البرمجيات في أوبنتو ذلك تلقائيًا.</p><h2 dir="rtl">الأداة dpkg</h2><p dir="rtl"><strong>dpkg</strong> هو مدير حزم للأنظمة المبينة على دبيان؛ حيث يمكنه تثبيت، وحذف، وبناء الحزم، ولكن على النقيض من بقية أنظمة إدارة الحزم، لا يمكنه أن يُنزِّل ويُثبِّت الحزم أو اعتمادياتها تلقائيًا؛ سيغطي هذا القسم استخدام <strong>dpkg</strong> لإدارة الحزم المثبتة محليًا:</p><ul><li><p dir="rtl">اكتب الأمر الآتي في الطرفية لعرض كل الحزم المثبتة على النظام:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dpkg -l</pre><ul><li><p dir="rtl">وبالاعتماد على عدد الحزم المثبتة على نظامك، يمكن أن يُولِّد الأمر السابق ناتجًا ضخمًا من البيانات؛ تستطيع تمرير الناتج عبر أنبوب للأداة <span style="font-family:courier new,courier,monospace;">grep</span> لمعرفة فيما إذا كانت حزمة معينة قد ثُبِّتَت على النظام:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dpkg -l | grep apache2</pre><p dir="rtl">استبدل اسم الحزم التي تريد البحث عنها، أو جزءًا منه، أو تعبيرًا نمطيًا (regular expression)، باسم الحزمة<strong> <span style="font-family:courier new,courier,monospace;">apache2</span></strong>.</p><ul><li><p dir="rtl">لعرض الملفات المثبتة بواسطة حزمة ما، في هذه الحالة حزمة <strong>ufw</strong>، فأدخِل الأمر:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dpkg -L ufw</pre><ul><li><p dir="rtl">إذا لم تكن متأكدًا أيّة حزمة قد ثبتت ملفًا ما، فالأمر<span style="font-family:courier new,courier,monospace;"> dpkg -S</span> سيخبرك ذلك، على سبيل المثال:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dpkg -S /etc/host.conf
base-files: /etc/host.conf</pre><p dir="rtl">تُظهِر المخرجات أنَّ الملف <span style="font-family:courier new,courier,monospace;">‎/etc/host.conf</span> ينتمي إلى الحزمة base-files.</p><p dir="rtl"><strong>ملاحظة:</strong> العديد من الملفات تولَّد تلقائيًا أثناء عملية تثبيت الحزمة، وعلى الرغم من أن تلك الملفات موجودة في نظام الملفات، فقد لا يعلم <span style="font-family:courier new,courier,monospace;">dpkg -S</span> أيّة حزمة تنتمي إليها تلك الملفات.</p><ul><li><p dir="rtl">بإمكانك تثبيت ملف حزمة <span style="font-family:courier new,courier,monospace;">‎.deb </span>بالأمر الآتي:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg -i zip_3.0-4_i386.deb</pre><p dir="rtl">ضع اسم ملف الحزمة التي تريد تثبيتها عندك بدلًا من <span style="font-family:courier new,courier,monospace;">zip_3.0-4_i386.deb</span>.</p><ul><li><p dir="rtl">يمكن إلغاء تثبيت حزمة معينة باﻷمر:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg -r zip</pre><p dir="rtl"><strong>تحذير:</strong> ليس من المستحسن في معظم الحالات إلغاء تثبيت الحزم باستخدام <strong>dpkg</strong>، من الأفضل استخدام مدير حزم يستطيع حل مشاكل الاعتماديات للتأكد من أن النظام في حالة «متينة»، فعلى سبيل المثال، استخدام <span style="font-family:courier new,courier,monospace;">dpkg -r zip</span> سيحذف حزمة zip، لكن أيّة حزم تعتمد عليها ستبقى مثبتةً ولكنها لن تعمل بصورة صحيحة.</p><p dir="rtl">للمزيد من خيارات <strong>dpkg</strong>، راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man dpkg</span>.</p><h2 dir="rtl">الأداة Apt-Get</h2><p dir="rtl">إن الأداة<strong> apt-get</strong> هي أداة سطر أوامر مفيدة جدًا، إذ تتعامل مع «أداة التحزيم المتقدمة» (Advanced Packaging Tool‏ [APT])، وتُنفِّذ مهامًا كتثبيت حزم البرمجيات الجديدة، وترقية الحزم البرمجية الموجودة، وتحديث فهرس قائمة الحزم، وحتى ترقية كامل نظام أوبنتو.</p><p dir="rtl">كون هذه الأداة أداةً سطرية (أي تعمل من سطر الأوامر)، فإن للأداة <span style="font-family:courier new,courier,monospace;">apt-get</span> مزايا كثيرةً تتميز بها عن غيرها من أدوات إدارة الحزم المتوفرة في أوبنتو لمدراء الخواديم، إحدى تلك المزايا هي سهولة الاستخدام في جلسات الطرفية البسيطة (عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>)، وقابلية الاستخدام في سكربتات إدارة الأنظمة، التي يمكن أن تؤتمت باستخدام أداة جدولة المهام cron.</p><p dir="rtl">بعض الأمثلة للاستخدامات الشائعة للأداة <span style="font-family:courier new,courier,monospace;">apt-get</span>:</p><h3 dir="rtl">تثبيت حزمة</h3><p dir="rtl">عملية تثبيت الحزم باستخدام أداة <span style="font-family:courier new,courier,monospace;">apt-get</span> هي عمليةٌ سهلةٌ جدًا؛ فعلى سبيل المثال، اكتب الأمر الآتي لتثبيت حزمة ماسح الشبكة <strong>nmap</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install nmap</pre><h3 dir="rtl">حذف حزمة</h3><p dir="rtl">أيضًا عملية حذف حزمة (أو حزم) هي عملية مباشرة جدًا؛ فلحذف الحزمة التي ثبتناها في المثال السابق، فإننا نستخدم الأمر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get remove nmap</pre><p dir="rtl"><strong>تلميح: </strong>يمكنك تحديد أكثر من حزمة لتثبَّت أو تحذف، وذلك بتمرير أسماء تلك الحزم كوسائط للأمر <span style="font-family:courier new,courier,monospace;">apt-get</span> مفصولةً بفراغات.</p><p dir="rtl">إن إضافة الخيار ‎<span style="font-family:courier new,courier,monospace;">--purge</span> إلى الأمر<span style="font-family:courier new,courier,monospace;"> apt-get remove</span> سيجعل <span style="font-family:courier new,courier,monospace;">apt-get</span> يحذف ملفات إعدادات الحزمة أيضًا، ربما يكون -أو لا يكون- هذا ما تريده؛ استخدم هذا الخيار بعد أخذ الحيطة والحذر.</p><h3 dir="rtl">تحديث فهرس قائمة الحزم</h3><p dir="rtl">إن فهرس حزم <strong>APT</strong> هو قاعدة بيانات للحزم المتوفرة في المستودعات المعرَّفة في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/apt/sources.list</span> وفي مجلد ‎<span style="font-family:courier new,courier,monospace;">/etc/apt/sources.list.d</span>؛ فلتحديث فهرس الحزم المحلي والحصول على آخر التعديلات التي أُجريَت على المستودعات، فعليك تنفيذ الأمر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get update</pre><p dir="rtl">العمليات التي أجريت بواسطة الأداة <span style="font-family:courier new,courier,monospace;">apt-get</span>، كتثبيت وحذف الحزم، ستُسجَّل في ملف السجل ‎<span style="font-family:courier new,courier,monospace;">/var/log‎/dpkg.log</span>.</p><p dir="rtl">للمزيد من المعلومات حول استخدام APT، راجع «<a rel="external nofollow" href="http://debian.org/doc/user-manuals#apt-howto">دليل مستخدم </a><a rel="external nofollow" href="http://debian.org/doc/user-manuals#apt-howto">APT</a><a rel="external nofollow" href="http://debian.org/doc/user-manuals#apt-howto"> </a><a rel="external nofollow" href="http://debian.org/doc/user-manuals#apt-howto">في دبيان</a>»، أو اكتب:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">apt-get help
</pre><h2 dir="rtl">الأداة Aptitude</h2><p dir="rtl">سيعطيك تشغيل <strong>Aptitude</strong> دون خيارات سطر الأوامر واجهةً نصيةً لنظام التحزيم المتقدم (APT)، العديد من وظائف إدارة الحزم الشائعة، كالتثبيت، والحذف، والترقية يمكن إجراؤها في Aptitude بأمرٍ ذي حرفٍ واحد، الذي يكون عادةً بأحرفٍ ذاتُ حالةٍ صغيرة.</p><p dir="rtl">يعمل Aptitude جيدًا في البيئات النصية التي تكون طرفياتٍ دون واجهة رسومية، لعدم حدوث تضارب في أزرار الأوامر؛ يمكنك بدء واجهة ذات قوائم من Aptitude بكتابة الأمر الآتي في مِحَث الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo aptitude</pre><p dir="rtl">ستشاهد شريط القائمة في أعلى الشاشة عندما يبدأ Aptitude، وجزأين تحته، يحتوي الجزء العلوي على تصنيفات الحزم، كالحزم الجديدة، والحزم غير المثبتة؛ وأما الجزء السفلي فيحتوي على معلومات تتعلق بالحزم وتصنيفاتها.</p><p dir="rtl">عملية استخدام Aptitude لإدارة الحزم هي عملية مباشرة إلى حدٍ ما؛ وتجعلُ واجهةُ المستخدمِ من المهام الشائعة أمرًا هينًا ليقام به؛ ما يلي أمثلةٌ عن كيفية تنفيذ وظائف إدارة الحزم الأساسية في Aptitude:</p><h3 dir="rtl">تثبيت الحزم</h3><p dir="rtl">لتثبيت حزمة ما، حدِّد الحزمة في تصنيف «الحزم غير المثبتة»، وذلك باستخدام أزرار الأسهم في الحاسوب وزر <strong style="line-height: 22.4px;">Enter</strong>، علِّم على الحزم المُراد تثبيتها ثم اضغط على زر <strong>+</strong>، حيث سيتبدَّل لون مدخلة الحزمة إلى اللون الأخضر، مما يشير إلى أنها قد حُدِّدَت للتثبيت؛ اضغط الآن على الزر <strong>g</strong> لإظهار ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على <strong>g</strong> مرةً أخرى، وسيُطلَب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على <strong style="line-height: 22.4px;">Enter</strong>، وسيُطلَب منك إدخال كلمة المرور، أدخل كلمة المرور لتصبح جذرًا؛ في النهاية، اضغط على <strong>g</strong> مرةً أخرى، فستُسأل عن تنزيل تلك الحزمة اضغط على <strong style="line-height: 22.4px;">Enter</strong> للمتابعة، ثم ستُجرى عملية تنزيل وتثبيت الحزمة.</p><h3 dir="rtl">حذف الحزم</h3><p dir="rtl">لحذف حزمة ما، حدد الحزمة في تصنيف «الحزم المثبتة»، وذلك باستخدام أزرار الأسهم في الحاسوب وزر <strong style="line-height: 22.4px;">Enter</strong>، علِّم على الحزم المُراد حذفها ثم اضغط على زر <strong>-</strong>، حيث سيتبدَّل لون مدخلة الحزمة إلى اللون الوردي، مما يشير إلى أنها قد حُدِّدَت للحذف؛ اضغط الآن على الزر <strong>g</strong> لإظهار ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على <strong>g</strong> مرةً أخرى، وسيطلب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على <strong style="line-height: 22.4px;">Enter</strong>، وسيُطلب منك إدخال كلمة المرور، أدخل كلمة المرور لتصبح جذرًا؛ في النهاية، اضغط على <strong>g</strong> مرةً أخرى، واضغط على <strong style="line-height: 22.4px;">Enter</strong> للمتابعة، ثم ستُجرى عملية إزالة الحزمة.</p><h3 dir="rtl">تحديث فهرس الحزم</h3><p dir="rtl">لتحديث فهرس الحزم، اضغط ببساطة على الزر <strong>u</strong>، وستُسأل عمّا إذا كنت تريد أن تصبح جذرًا وتكمل التحديث، اضغط على <strong style="line-height: 22.4px;">Enter</strong>، وستُطالب بكلمة المرور، أدخل كلمة المرور لتصبح جذرًا، وسيبدأ تحديث فهرس الحزم؛ اضغط على <strong style="line-height: 22.4px;">Enter</strong> على زر OK في مربع الحوار الذي سيظهر عندما تنتهي عملية التنزيل.</p><h3 dir="rtl">ترقية الحزم</h3><p dir="rtl">لترقية الحزم، عليك أولًا تحديث فهرس الحزم كما وضِّح سابقًا، ثم اضغط على الحرف <strong>U</strong> لتحديد جميع الحزم التي لها تحديثات، اضغط الآن على الزر <strong>g</strong> حيث سيُعرَض لك ملخص عن الأفعال التي ستُجرى على الحزم، اضغط على <strong>g </strong>مرة أخرى، وسيُطلب منك أن تصبح جذرًا لإكمال التثبيت، اضغط على <strong>Enter</strong>، وستُطالب بكلمة المرور، أدخل كلمة مرور الجذر ثم اضغط على <strong>g</strong> مرة أخرى، وستُسأل عن تنزيل الحزم، اضغط على <strong style="line-height: 22.4px;">Enter</strong> للإكمال، وستبدأ عملية ترقية الحزم.</p><p dir="rtl">العمود الأول من المعلومات الظاهر في الجزء العلوي في قائمة الحزم يعرض حالة الحزمة، المفاتيح الآتية تصف حالة الحزمة:</p><ul dir="rtl"><li><strong>i</strong>: الحزمة مثبتة.</li><li><strong>c</strong>: الحزمة غير مثبتة، لكن إعدادات الحزمة ما زالت باقيةً على النظام.</li><li><strong>p</strong>: حذفت الحزمة حذفًا كاملًا من النظام (هي وإعداداتها).</li><li><strong>v</strong>: حزمة ظاهرية (Virtual package).</li><li><strong>B</strong>: حزمة محطمة (Broken package).</li><li><strong>u</strong>: ملفات الحزمة قد فُكَّ ضغطها، لكن الحزمة لم تُعَدّ بعد.</li><li><strong>C</strong>: الحزمة نصف مضبوطة، أي أن الضبط قد فشل، ويلزمه إصلاح.</li><li><strong>H</strong>: الحزمة نصف مثبتة، فشل الحذف، ويلزمه إصلاح.</li></ul><p dir="rtl">للخروج من Aptitude، اضغط على حرف <strong>q</strong>، ووافق أنك تريد الخروج؛ يمكن الوصول لوظائف عديدة من وظائف Aptitude بالضغط على زر F10.</p><h3 dir="rtl">استخدام Aptitude في سطر الأوامر</h3><p dir="rtl">يمكنك استخدام Aptitude كأداةٍ سطرية (تعمل من سطر الأوامر) استخدامًا شبيهًا باستخدام <span style="font-family:courier new,courier,monospace;">apt-get</span>؛ فلتثبيت حزمة nmap مع جميع الاعتماديات اللازمة، كما في مثال <span style="font-family:courier new,courier,monospace;">apt-get</span>، فسنستخدم الأمر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo aptitude install nmap</pre><p dir="rtl">ولحذف نفس الحزمة، سنستخدم الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo aptitude remove nmap</pre><p dir="rtl">راجع صفحات الدليل <span style="font-family:courier new,courier,monospace;">man</span> لمزيد من المعلومات حول الخيارات السطرية للأداة aptitude.</p><h2 dir="rtl">التحديثات التلقائية</h2><p dir="rtl">يمكن استخدام الحزمة <span style="font-family:courier new,courier,monospace;">unattended-upgrades</span> لتثبيت تحديثات الحزم تلقائيًا، ويمكن ضبطها لتحديث كل الحزم، أو تثبيت التحديثات الأمنية فقط؛ لكن أولًا يجب تثبيت الحزمة بإدخال الأمر الآتي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install unattended-upgrades</pre><p dir="rtl">لضبط <span style="font-family:courier new,courier,monospace;">unattended-upgrades</span>، عدِّل مما يلي في ملف ‎ <span style="font-family:courier new,courier,monospace;">/etc/apt/apt.conf.d/50unattended-upgrades</span> ليوافق ما تحتاج:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Unattended-Upgrade::Allowed-Origins {
    "Ubuntu trusty-security";
//  "Ubuntu trusty-updates";
};</pre><p dir="rtl">ويمكن أيضًا وضع بعض الحزم في «القائمة السوداء» مما يؤدي إلى عدم تحديثها تلقائيًّا؛ لإضافة حزمة ما إلى القائمة السوداء:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};</pre><p dir="rtl">ملاحظة: الإشارة «<strong>//</strong>» تعمل كتعليق (comment)، أي أن كل ما يتبع <strong>//</strong> لن يُفسَّر.</p><p dir="rtl">لتفعيل التحديثات التلقائية، عدِّل ملف <span style="font-family:courier new,courier,monospace;">‎/etc/apt/apt.conf.d/10periodic</span> واضبط إعدادات <span style="font-family:courier new,courier,monospace;">apt</span> المناسبة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";</pre><p dir="rtl">الضبط السابق يُحدِّث فهرس الحزم ويُنزِّل ويُثبِّت جميع الترقيات المتوفرة كل يوم و«يُنظِّف» أرشيف التنزيل المحلي كل أسبوع.</p><p dir="rtl"><strong>ملاحظة:</strong> يمكنك قراءة المزيد عن خيارات ضبط <span style="font-family:courier new,courier,monospace;">apt</span> الزمنية في ترويسة سكربت ‎<span style="font-family:courier new,courier,monospace;">/etc/cron.daily ‎/apt</span>.</p><p dir="rtl">سيُسجَّل ناتج <span style="font-family:courier new,courier,monospace;">unattended-upgrades</span> إلى ملف ‎<span style="font-family:courier new,courier,monospace;">/var/log/unattended-upgrades</span>.</p><h2 dir="rtl">الإشعارات</h2><p dir="rtl">ضبط المتغير <span style="font-family:courier new,courier,monospace;">Unattended-Upgrade::Mail</span> في ملف <span style="font-family:courier new,courier,monospace;">‎/etc/apt/apt.conf.d/50unattended-upgrades</span> سيجعل <span style="font-family:courier new,courier,monospace;">unattended-upgrades </span>يرسل بريدًا إلكترونيًا إلى مدير النظام يُفصِّل فيه الحزم التي تحتاج إلى ترقية، أو التي تتعرض لمشاكل.</p><p dir="rtl">حزمة أخرى مفيدة هي <strong>apticron</strong>، التي تضبط عملًا مجدولًا (cron) لإرسال بريد إلكتروني لمدير النظام، يحتوي على معلومات حول أيّة حزم في النظام لها تحديثات متوفرة، وملخص عن التغيرات في كل حزمة.</p><p dir="rtl">أدخِل الأمر الآتي في سطر الأوامر لتثبيت حزمة <strong>apticron</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install apticron</pre><p dir="rtl">بعد انتهاء تثبيت الحزمة، عدِّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/apticron/apticron.conf </span>لضبط عنوان البريد الإلكتروني والخيارات الأخرى:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">EMAIL="root@example.com"

</pre><h2 dir="rtl">الضبط</h2><p dir="rtl">الضبط الخاص بمستودعات أداة التحزيم المتقدمة (APT) مُخزَّنٌ في ملف <span style="font-family:courier new,courier,monospace;">etc/apt/sources.list/</span> ومجلد ‎<span style="font-family:courier new,courier,monospace;">/etc/apt/sources.list.d</span>، ستُذكَر معلومات عن طريقة إضافة أو إزالة المستودعات من الملف في هذا القسم.</p><p dir="rtl">بإمكانك تعديل الملف لتفعيل المستودعات أو تعطيلها؛ على سبيل المثال، لتعطيل ضرورة إدراج القرص المضغوط الخاص بأوبنتو في كل مرة تُجرى فيها عملية على الحزم، فضع رمز التعليق قبل السطر الموافق لقرص CD-ROM، الذي يظهر في أول الملف:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"># no more prompting for CD-ROM please
# deb cdrom:[Ubuntu 14.04 _Trusty Tahr_ - Release i386 (20111013.1)]/ trusty main restricted</pre><h2 dir="rtl">مستودعات إضافية</h2><p dir="rtl">بالإضافة إلى مستودعات الحزم الرسمية المدعومة المتوفرة لأوبنتو، هنالك مستودعات مصانة من المجتمع تمنحك إمكانية تثبيت الآلاف من الحزم الإضافية، أشهر اثنين منها هما مستودعا «Universe» و «Multiverse»، هذان المستودعان غير مدعومين من أوبنتو رسميًا؛ لكنهما مصانان من المجتمع، حيث يوفران حزمًا آمنة لاستخدامها على حاسوبك.</p><p dir="rtl"><strong>ملاحظة:</strong> قد يكون في الحزم الموجودة في مستودع «Multiverse» مشاكلٌ في الترخيص مما يمنع من توزيعها مع نظام التشغيل الحر، وقد يكونون غير قانونيين في منطقتك.</p><p dir="rtl"><strong>تحذير</strong>: لاحظ أن أيًّا من مستودعي «Universe» و «Multiverse» لا يحتويان حزمًا مدعومةً رسميًا من أوبنتو، وهذا يعني أنها قد لا تكون هنالك تحديثات أمنية لتلك الحزم.</p><p dir="rtl">هنالك مصادر عديدة للحزم، وأحيانًا توفر تلك المصادر حزمةً واحدةً فقط، في هذه الحالة، تكون مصادر الحزمة موفرة من مطور تطبيق واحد؛ يجب أن تكون حذرًا جدًا عند استخدام مصادر غير قياسية للحزم؛ وعليك -على أي حال- البحث عن المصدر جيدًا قبل القيام بأية عملية تثبيت، فقد تجعل بعض تلك الحزم من النظام غير مستقرٍ أو لا يؤدي وظائفه في بعض الجوانب.</p><p dir="rtl">تكون مستودعات «Universe» و «Multiverse» مفعَّلة افتراضيًا، لكن إذا أردت تعطيلها، فعدّل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/apt/sources.list </span>وضَعْ تعليقًا قبل الأسطر الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">deb <a rel="external nofollow" href="http://archive.ubuntu.com/ubuntu">http://archive.ubuntu.com/ubuntu</a> trusty universe multiverse
deb-src <a rel="external nofollow" href="http://archive.ubuntu.com/ubuntu">http://archive.ubuntu.com/ubuntu</a> trusty universe multiverse

deb <a rel="external nofollow" href="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> trusty universe
deb-src <a rel="external nofollow" href="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> trusty universe
deb <a rel="external nofollow" href="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> trusty-updates universe
deb-src <a rel="external nofollow" href="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> 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</pre><h2 dir="rtl">مصادر</h2><p dir="rtl">أغلبية المعلومات التي أُعطِيت في هذا الدرس موجودةٌ في صفحات الدليل، التي يتوفر كثير منها على الإنترنت:</p><ul dir="rtl"><li>صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/InstallingSoftware">InstallingSoftware</a>» فيها بعض المعلومات.</li><li>للمزيد من التفاصيل عن dpkg، راجع صفحة الدليل <span style="font-family:courier new,courier,monospace;">man dpkg</span>.</li><li>مقالة «<a rel="external nofollow" href="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</a>»، وصفحة الدليل <span style="font-family:courier new,courier,monospace;">man apt-get</span>، توفر معلومات مفيدة عن كيفية استخدام<span style="font-family:courier new,courier,monospace;"> apt-get</span>.</li><li>راجع صفحة الدليل<span style="font-family:courier new,courier,monospace;"> man aptitude</span> للمزيد من الخيارات الخاصة بأداة Aptitude.</li><li>صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/Repositories/Ubuntu">Adding Repositories HOWTO</a>» تحتوي معلومات مفيدة عن طريقة إضافة المستودعات.</li></ul><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/package-management.html">Package Managment</a>.</p>
]]></description><guid isPermaLink="false">156</guid><pubDate>Mon, 14 Dec 2015 22:06:00 +0000</pubDate></item><item><title>&#x62A;&#x641;&#x631;&#x64A;&#x63A; &#x627;&#x646;&#x647;&#x64A;&#x627;&#x631; &#x627;&#x644;&#x646;&#x648;&#x627;&#x629; Kernel Crash &#x641;&#x64A; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%AA%D9%81%D8%B1%D9%8A%D8%BA-%D8%A7%D9%86%D9%87%D9%8A%D8%A7%D8%B1-%D8%A7%D9%84%D9%86%D9%88%D8%A7%D8%A9-kernel-crash-%D9%81%D9%8A-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r155/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/kernel-crash-dump.png.832e62273733cead558571c6db7b9e7b.png" /></p>

<p dir="rtl">يشير تفريغ انهيار النواة (Kernel Crash Dump) إلى جزء من محتويات ذاكرة الوصول العشوائي غير الدائمة التي تُنسَخ إلى القرص عندما يتعرض تنفيذ النواة إلى اضطراب ما.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/kernel-crash-dump.png.10ef2c6d5f501c697c85e2f66bdcfdaf.png"><img data-fileid="9301" class="ipsImage ipsImage_thumbnailed" alt="kernel-crash-dump.thumb.png.960aff9605a6" src="https://academy.hsoub.com/uploads/monthly_2015_12/kernel-crash-dump.thumb.png.960aff9605a620db3d4a061a10d36f9e.png"></a></p><p dir="rtl">الأحداث الآتية تسبب اضطراب النواة:</p><ul dir="rtl"><li>ارتياع النواة (Kernel Panic).</li><li>تقطعات غير مقنَّعة (Non Maskable Interrupts‏ [NMI]).</li><li>استثناءات تفحص الجهاز (Machine Check Exceptions ‏[MCE]).</li><li>عطب في العتاد.</li><li>تدخل يدوي.</li></ul><p dir="rtl">لبعض تلك الأحداث (الارتياع، أو NMI)، سيكون رد فعل النواة تلقائيًا، وتُطلَق آلية تفريغ انهيار النواة عبر <span style="font-family:courier new,courier,monospace;">kexec</span>، يلزم التدخلُ اليدوي في الحالات الأخرى للحصول على معلومات الذاكرة، وعندما تقع إحدى الأحداث السابقة، فيجب معرفة السبب الرئيسي للتمكن من تجنبه مستقبلًا؛ يمكن تحديد السبب بتفحص محتويات الذاكرة المنسوخة.</p><h2 dir="rtl">آلية تفريغ انهيار النواة</h2><p dir="rtl">عندما يحدث ارتياع النواة، فإن النواة تعتمد على آلية <span style="font-family:courier new,courier,monospace;">kexec</span> لتعيد الإقلاع بسرعة لنسخةٍ جديدةٍ من النواة في القسم المحفوظ من الذاكرة المحجوزة عندما أقلع النظام (انظر في الأسفل)، وهذا يسمح لمنطقة الذاكرة المتبقية أن تبقى دون أن تُلمَس لنسخها نسخًا آمنًا إلى وسيطة التخزين.</p><h3 dir="rtl">التثبيت</h3><p dir="rtl">تُثبَّت أداة تفريغ انهيار النواة بالأمر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install linux-crashdump</pre><h3 dir="rtl">الضبط</h3><p dir="rtl">عدِّل الملف ‎<span style="font-family:courier new,courier,monospace;">/etc/default/kdump-tool</span> مضيفًا السطر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">USER_KDUMP=1</pre><p dir="rtl">يجب إعادة إقلاع النظام بعد ذلك.</p><h3 dir="rtl">التحقق</h3><p dir="rtl">للتأكد من أن آلية تفريغ انهيار النواة مفعَّلة، فهنالك عدِّة أمور يجب التحقق منها، تأكد أولًا من أن مُعامِل الإقلاع crashkernel موجودٌ (لاحظ أن الأسطر الآتية قد قُسِّمَت لكي تظهر بشكلٍ سليم):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cat /proc/cmdline</pre><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">BOOT_IMAGE=/vmlinuz-3.2.0-17-server root=/dev/mapper/PreciseS-root ro
   crashkernel=384M-2G:64M,2G-:128M</pre><p>لمعامل crashkernel الشكل العام الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">crashkernel=&lt;range1&gt;:&lt;size1&gt;[,&lt;range2&gt;:&lt;size2&gt;,...][@offset]
   range=start-[end] 'start' is inclusive and 'end' is exclusive.</pre><p dir="rtl">لذا، لمعامل crashkernel الذي وجدناه في ملف <span style="font-family:courier new,courier,monospace;">‎/proc/cmdline</span>، سيكون لدينا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">crashkernel=384M-2G:64M,2G-:128M</pre><p dir="rtl">السطر السابق يعني الآتي:</p><ul dir="rtl"><li>إذا كانت قيمة الذاكرة في النظام أقل من 384 ميغابايت، فلا تُبقي على شيء (هذه هي حالة «الإنقاذ» [rescue]).</li><li>إذا كانت قيمة الذاكرة في النظام بين 384 ميغابايت و 2 غيغابايت (بما فيها 2 غيغابايت)، فحافظ على 64 ميغابايت.</li><li>إذا كان حجم الذاكرة في النظام أكبر من 2 غيغابايت، فحافظ عندها على 128 ميغابايت.</li></ul><p dir="rtl">ثانيًا، يجب التأكد من أن النواة قد حافظت على مكان الذاكرة المطلوبة للأداة <span style="font-family:courier new,courier,monospace;">kdump</span> باستخدام:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">dmesg | grep -i crash</pre><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">...
[ 0.000000] Reserving 64MB of memory at 800MB for crashkernel (System RAM: 1023MB)
</pre><h3 dir="rtl">اختبار آلية تفريغ انهيار النواة</h3><p dir="rtl"><strong>تحذير: </strong>سيؤدي اختبار آلية تفريغ انهيار النواة إلى إعادة إقلاع النظام، وقد يسبب ذلك فقدانًا للبيانات في بعض الأحيان إذا كان النظام تحت حِملٍ شديد؛ إذا أردت اختبار الآلية فتأكد من أن نظامك لا يجري أيّة عمليات مهمة، أو أنَّه تحت حمل خفيف جدًا.</p><p dir="rtl">تأكد من أن آلية <span style="font-family:courier new,courier,monospace;">SysRq</span> مُفعَّلة بالنظر إلى قيمة معامل النواة في <span style="font-family:courier new,courier,monospace;">‎/pro/sys/kernel/sysrq</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cat /proc/sys/kernel/sysrq</pre><p dir="rtl">إذا أُعيدَت القيمة 0، فإن تلك الميزة معطلة، وعليك تنفيذ الأمر الآتي لتفعيلها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo sysctl -w kernel.sysrq=1</pre><p dir="rtl">بعد فعل ذلك، يجب أن تصبح المستخدم الجذر حيث لا يكفي استخدام sudo؛ وعليك تنفيذ الأمر التالي كمستخدم جذر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"> echo c &gt; /proc/sysrq-trigger </pre><p dir="rtl">إذا كنت تستخدم اتصالًا شبكيًا، فستفقد تواصلك مع النظام ولهذا من الأفضل أن تختبر ذلك عندما تكون موصولًا للنظام عبر طرفية محلية، مما يجعل عملية تفريغ النواة ظاهرةً أمامك.</p><p dir="rtl">إن ناتج فحصٍ عادي سيكون شبيهًا بما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo -s
[sudo] password for ubuntu:
# echo c &gt; /proc/sysrq-trigger
[ 31.659002] SysRq : Trigger a crash
[ 31.659749] BUG: unable to handle kernel NULL pointer dereference at               (null)
[ 31.662668] IP: [&lt;ffffffff8139f166&gt;] sysrq_handle_crash+0x16/0x20
[ 31.662668] PGD 3bfb9067 PUD 368a7067 PMD 0
[ 31.662668] Oops: 0002 [#1] SMP
[ 31.662668] CPU 1
....</pre><p dir="rtl">لقد اُقتطِعَت بقية السجل، لكن يجب أن تشاهد أن النظام قد أعيد إقلاعه في مكان ما في السجل، حيث سترى السطر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Begin: Saving vmcore from kernel crash ...</pre><p dir="rtl">عند الإكمال، سيُعاد تشغيل النظام لحالته الاعتيادية، وستجد ملف تفريغ انهيار النواة في مجلد <span style="font-family:courier new,courier,monospace;">‎/var/crash</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ls /var/crash
linux-image-3.0.0-12-server.0.crash</pre><h2 dir="rtl">مصادر</h2><p dir="rtl">تفريغ انهيار النواة هو موضوع واسع يتحاج إلى خبرات في نواة لينُكس، تستطيع إيجاد المزيد من المعلومات حول الموضوع في:</p><ul dir="rtl"><li>توثيق <a rel="external nofollow" href="http://www.kernel.org/doc/Documentation/kdump/kdump.txt">kdump</a></li><li>الأداة <a rel="external nofollow" href="http://people.redhat.com/~anderson/">crash</a></li><li>مقالة «<a rel="external nofollow" href="http://www.dedoimedo.com/computers/crash-analyze.html">تحليل تفريغ انهيار نواة لينُكس</a>» (هذه المقالة مبنية على فيدورا، لكنها تشرح تحليل تفريغ النواة جيدًا).</li></ul><p dir="rtl">ترجمة -وبتصرّف- لـ <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/kernel-crash-dump.html">Kernel Crash Dump</a>.</p>
]]></description><guid isPermaLink="false">155</guid><pubDate>Sun, 13 Dec 2015 20:38:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x648;&#x627;&#x62C;&#x647;&#x629; &#x627;&#x644;&#x646;&#x633;&#x62E; &#x627;&#x644;&#x627;&#x62D;&#x62A;&#x64A;&#x627;&#x637;&#x64A; Bacula-web &#x639;&#x644;&#x649; Ubuntu</title><link>https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-bacula-web-%D8%B9%D9%84%D9%89-ubuntu-r154/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/bacula-web-ubuntu.png.640ec4bd6f48a744e1f91e1e5262a618.png" /></p>

<p dir="rtl">إنّ <strong>Bacula-web</strong> هو عبارة عن تطبيق ويب مكتوب بلغة PHP يُزوِّدنا بطريقة سهلة لعرض ملخصات ومخططات بيانية لوظائف النسخ الاحتياطي backup jobs التي تم تشغيلها مسبقًا، وبالرغم من أنّه لا يسمح لنا بالتحكم بـ Bacula بأي طريقة فهو يُزوِّدنا بواجهة رسوميّة بديلة لطريقة عرض الوظائف من الـ console، إنّ Bacula-web مفيد خاصّة للمستخدمين الجديدين على Bacula، حيث تُسهِّل علينا تقاريره فهم آلية عمل Bacula.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/bacula-web-ubuntu.png.29e76d605420b32a87dd6c00efe9f620.png"><img data-fileid="9135" class="ipsImage ipsImage_thumbnailed" alt="bacula-web-ubuntu.thumb.png.8f75def7548e" src="https://academy.hsoub.com/uploads/monthly_2015_12/bacula-web-ubuntu.thumb.png.8f75def7548e78b74155073e174127fd.png"></a></p><p dir="rtl">سنشرح في هذا الدّرس كيفيّة تثبيت Bacula-web على خادوم Ubuntu الذي تعمل عليه برمجيّة خادوم Bacula.</p><h2 dir="rtl">المتطلبات الأساسية</h2><p dir="rtl">يجب أن تمتلك من أجل متابعة الدّرس برمجيّة خادوم Bacula للنسخ الاحتياطي مُثبَّتة على خادوم Ubuntu لديك، تستطيع إيجاد تعليمات تثبيت Bacula هنا: <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81-%D8%AA%D8%AB%D8%A8%D8%AA-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-bacula-%D9%84%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D8%B9%D9%84%D9%89-ubuntu-1404-r144/">كيفيّة تثبيت خادوم Bacula على Ubuntu</a>.</p><p dir="rtl">يفترض هذا الدّرس أنّ خادوم Bacula لديك يستخدم قاعدة بيانات MySQL، إن كنت تستخدم قاعدة بيانات أخرى مثل PostgreSQL فتأكّد من أن تقوم بالضبط المناسب من أجل هذا الدّرس، ستحتاج إلى تثبيت وحدة PHP مناسبة والقيام بضبط أمثلة معلومات اتصال قاعدة البيانات.</p><p dir="rtl">فلنبدأ الآن.</p><h2 dir="rtl">تثبيت Nginx و PHP</h2><p dir="rtl">إنّ Bacula-web هو عبارة عن تطبيق PHP لذا نحتاج لتثبيت PHP وخادوم ويب، سنستخدم Nginx، إن أردت تعلم المزيد حول إعداد هذه البرمجيّة فتحقّق من هذا الدّرس LEMP tutorial.</p><p dir="rtl">نقوم بتحديث قوائم <strong>apt-get</strong> لدينا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get update</pre><p dir="rtl">نُثبِّت بعدها <span style="font-family:courier new,courier,monospace;">Nginx</span>، <span style="font-family:courier new,courier,monospace;">PHP-fpm</span>، وبعض الحِزَم الأخرى باستخدام<span style="font-family:courier new,courier,monospace;"> apt-get</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install nginx apache2-utils php5-fpm php5-mysql php5-gd</pre><p>نحن الآن جاهزون لإعداد PHP وNginx.</p><h3 dir="rtl">إعداد PHP-FPM</h3><p dir="rtl">نفتح ملف إعدادات <span style="font-family:courier new,courier,monospace;">PHP-FPM</span> باستخدام مُحرِّر النصوص الذي نفضّله، سنستخدم<strong> vi</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo vi /etc/php5/fpm/php.ini</pre><p dir="rtl">نبحث عن السطر الذي يُحدِّد <span style="font-family:courier new,courier,monospace;">cgi.fix_pathinfo</span>، نزيل التعليق عنه ونستبدل قيمته بـ 0، يجب أن يبدو كما يلي بعد أن ننتهي من ذلك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cgi.fix_pathinfo=0</pre><p dir="rtl">نبحث الآن عن الإعداد <span style="font-family:courier new,courier,monospace;">date.timezone</span>، نزيل التعليق عنه ونستبدل قيمته بقيمة المنطقة الزمنية لدينا، سنضع New York على سبيل المثال:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">date.timezone = America/New_York</pre><p dir="rtl">إن أردت الحصول على قائمة بكافّة المناطق الزمنية timezones فتحقّق من وثائق PHP.</p><p dir="rtl">نحفظ الملف ونخرج منه.</p><p dir="rtl">الآن وقد أصبح <span style="font-family:courier new,courier,monospace;">PHP-FPM</span> مُعدًّا بشكل صحيح فلنقم بإعادة تشغيله لتطبيق التغييرات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service php5-fpm restart</pre><h3 dir="rtl">إعداد Nginx</h3><p dir="rtl">حان الوقت الآن لإعداد Nginx ليُخدِّم تطبيقات PHP.</p><p dir="rtl">في البداية نقوم بإنشاء ملف <span style="font-family:courier new,courier,monospace;">htpasswd</span> لكي لا نسمح بالأشخاص غير المُصرَّح لهم بالنفاذ إلى Bacula-web، نستخدم الأمر<span style="font-family:courier new,courier,monospace;"> htpasswd</span> لإنشاء مستخدم مُدير admin، يُدعى "admin" (يجب أن تستخدم اسمًا آخر)، والذي يستطيع النفاذ إلى واجهة Bacula-web:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo htpasswd -c /etc/nginx/htpasswd.users admin</pre><p dir="rtl">ندخل كلمة السّر في المُحِث prompt، ونقوم بتحديد تذكر تسجيل الدخول هذا لأنّنا سنحتاجه للنفاذ إلى Bacula-web.</p><p dir="rtl">نفتح الآن ملف إعدادات كتلة block الخادوم الافتراضيّة في Nginx من خلال مُحرِّر نصوص، سنستخدم vi:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo vi /etc/nginx/sites-available/default</pre><p dir="rtl">نستبدل محتويات الملف بكتلة الشيفرة code التالية، احرص على تبديل القيمة server_name باسم نطاق خادومك أو عنوان IP الخاص به:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  root /usr/share/nginx/html;
  index index.php index.html index.htm;
  
  server_name server_domain_name_or_IP;
 
  auth_basic "Restricted Access";
  auth_basic_user_file /etc/nginx/htpasswd.users;

  location / {
    try_files $uri $uri/ =404;
  }

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}</pre><p dir="rtl">نقوم بحفظ الملف والخروج منه، يقوم هذا بإعداد Nginx لتخديم تطبيقات PHP وليستخدم ملف <span style="font-family:courier new,courier,monospace;">htpasswd</span> الذي أنشأناه سابقًا من أجل الاستيثاق authentication.</p><p dir="rtl">ولتطبيق التغييرات نعيد تشغيل Nginx:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nginx restart</pre><p dir="rtl">نحن الآن جاهزون لتنزيل Bacula-web.</p><h2 dir="rtl">تنزيل وإعداد Bacula-web</h2><p dir="rtl">نقوم بالانتقال إلى الدليل الرئيسي home لدينا وتنزيل إصدار Bacula-web الأخير على شكل ملف أرشيف، الإصدار الأخير في وقت كتابة هذا الدّرس هو 7.0.3:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cd ~
wget --content-disposition http://www.bacula-web.org/download.html?file=files/bacula-web.org/downloads/bacula-web-7.0.3.tgz</pre><p dir="rtl">نُنشِئ الآن دليلًا جديدًا اسمه bacula-web، وننتقل إليه، ثمّ نستخرج محتويات الأرشيف Bacula-web إليه:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mkdir bacula-web
cd bacula-web
tar xvf ../bacula-web-*.tgz</pre><p dir="rtl">ينبغي قبل نسخ الملفّات إلى جذر المستند document root لخادوم الويب لدينا أن نقوم بإعداده أولًا.</p><p dir="rtl">نقوم بالانتقال إلى دليل الإعدادات كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cd application/config</pre><p dir="rtl">يُزوِّدنا Bacula-web بعيّنة sample من الإعدادات، ننسخها كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cp config.php.sample config.php</pre><p dir="rtl">نقوم الآن بتحرير ملف الإعدادات ضمن مُحرِّر نصوص، سنستخدم vi:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">vi config.php</pre><p dir="rtl">نبحث بداخله عن:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">MySQL bacula catalog //</pre><p dir="rtl">ونزيل التعليق عن تفاصيل الاتصال، نضع أيضًا كلمة سر قاعدة بيانات Bacula الخاصّة بنا بدلًا من القيمة password (والتي يُمكِن إيجادها في المسار <span style="font-family:courier new,courier,monospace;">etc/bacula/bacula-dir.conf/</span> ضمن الإعداد "<span style="font-family:courier new,courier,monospace;">dbpassword</span>"):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">// MySQL bacula catalog
$config[0]['label'] = 'Backup Server';
$config[0]['host'] = 'localhost';
$config[0]['login'] = 'bacula';
$config[0]['password'] = 'bacula-db-pass';
$config[0]['db_name'] = 'bacula';
$config[0]['db_type'] = 'mysql';
$config[0]['db_port'] = '3306';</pre><p dir="rtl">نحفظ الملف ونخرج منه.</p><p dir="rtl">أصبح الآن Bacula-web مُعدًّا كما يجب، الخطوة الأخيرة هي وضع ملفّات التطبيق في المكان المناسب.</p><h2 dir="rtl">نسخ تطبيق Bacula-web إلى جذر المستند Document Root</h2><p dir="rtl">قمنا بإعداد Nginx ليستخدم <span style="font-family:courier new,courier,monospace;">usr/share/nginx/html/</span> كجذر المستند، ننتقل إلى هذا المسار ونحذف الملف <span style="font-family:courier new,courier,monospace;">index.html</span> الافتراضي باستخدام الأوامر التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cd /usr/share/nginx/html
sudo rm index.html</pre><p dir="rtl">ننقل الآن ملفّات Bacula-web إلى الموقع الحالي، وهو جذر مستند Nginx:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mv ~/bacula-web/* .</pre><p dir="rtl">نقوم بتغيير ملكيّة الملفّات إلى <span style="font-family:courier new,courier,monospace;">www-data</span>، وهو المستخدم العفريت (بالإنجليزية Daemon وهو برنامج يعمل في خلفيّة النظام) الذي يقوم بتشغيل Nginx:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo chown -R www-data: *</pre><p dir="rtl">الآن تمّ تثبيت Bacula-web بشكل كامل.</p><h2 dir="rtl">النفاذ إلى Bacula-web من خلال المتصفح</h2><p dir="rtl">أصبح الآن Bacula-web قابلًا للنفاذ على اسم نطاق خادومنا أو من خلال عنوان IP العام له.</p><p dir="rtl">ربّما ترغب الآن أن تختبر أنّ كل شيء مُعَد بشكل صحيح، ولحسن الحظ يُزوّدنا Bacula-web بصفحة اختبار test، نستطيع الوصول إليها بفتح الرابط التالي في متصفّح الإنترنت (مع وضع عنوان خادومنا بدلًا من server_public_IP):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">http://server_public_IP/test.php</pre><p dir="rtl">ينبغي أن نرى الآن جدول يُظهِر الحالة لمختلف عناصر Bacula-web، ويجب أن تملك كافّة العناصر علامة صح خضراء بجانبها، ما عدا وحدات قواعد البيانات التي لا نريدها، على سبيل المثال نحن نستخدم هنا MySQL لذا لا نحتاج لوحدات قواعد البيانات الأخرى:</p><p dir="rtl" style="text-align: center;"><a rel="external nofollow" name="_GoBack"></a><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/bacula1.png.9ab6e173a1d5736bdf3b65b7906cbe4f.png"><img data-fileid="9133" class="ipsImage ipsImage_thumbnailed" alt="bacula1.thumb.png.6ee935ccea24528d43b149" src="https://academy.hsoub.com/uploads/monthly_2015_12/bacula1.thumb.png.6ee935ccea24528d43b149bce00afeb6.png"></a></p><p dir="rtl">إن سار كل شيء على ما يرام فنحن الآن جاهزون لاستخدام الصفحة الرئيسيّة dashboard، نستطيع الوصول إليها عن طريق النقر على النص "Bacula-web" الموجود في الأعلى والأيسر، أو عن طريق زيارة خادومنا من خلال متصفّح الإنترنت:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">http://server_public_IP/</pre><p dir="rtl">يجب أن تبدو مماثلة لما يلي:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/bacula2.png.b64e8a5d9b0c9cc3a9e10c8e81058ddc.png"><img data-fileid="9134" class="ipsImage ipsImage_thumbnailed" alt="bacula2.thumb.png.8582c0e9bcd0e7945ef1da" src="https://academy.hsoub.com/uploads/monthly_2015_12/bacula2.thumb.png.8582c0e9bcd0e7945ef1da43f44ce64a.png"></a></p><h2 dir="rtl">الخاتمة</h2><p dir="rtl">أصبحنا مستعدين الآن لاستخدام Bacula-web لمراقبة مُختلَف وظائف Bacula وحالاتها بسهولة.</p><p dir="rtl">ترجمة -وبتصرّف- لـ <a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-install-bacula-web-on-ubuntu-14-04">How To Install Bacula-web on Ubuntu 14.04</a> لصاحبه Mitchell Anicas.</p>
]]></description><guid isPermaLink="false">154</guid><pubDate>Fri, 11 Dec 2015 20:56:00 +0000</pubDate></item><item><title>&#x62E;&#x635;&#x627;&#x626;&#x635; &#x645;&#x62A;&#x642;&#x62F;&#x645;&#x629; &#x644;&#x62F;&#x649; &#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x646;&#x633;&#x62E;&#x629; &#x627;&#x644;&#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x645;&#x646; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/servers/%D8%AE%D8%B5%D8%A7%D8%A6%D8%B5-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D9%84%D8%AF%D9%89-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r153/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-advanced-install.png.85adbd24cd1bbf351a6b89aa9386c5f5.png" /></p>

<p dir="rtl">بعد أن تطرّقنا في الدّرس السّابق إلى <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%D9%87-r152/">كيفية تنصيب نسخة الخواديم من نظام أوبنتو إضافة إلى كيفية إعداد مُختلف تطبيقاته</a>، سنستعرض في هذا المقال بعض الخصائص المُتقدّمة التي قد تحتاج إليها لدى تنصيبك للنّظام.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-advanced-install.png.29eeccfe43c44f98ac21e9a876b4cfb5.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="9773" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-advanced-install.thumb.png.f462c7153a9f8a5dd9a38f49366f9369.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-advanced-install.thumb.png"></a></p><h2 dir="rtl">RAID برمجي</h2><p dir="rtl">مصفوفة التعدد للأقراص المستقلة (Redundant Array of Independent Disks أو اختصارًا RAID) هي طريقة لاستخدام عدِّة أقراص صلبة لتوفير توازن بين زيادة مرونة ووثوقيّة تخزين البيانات، و/أو زيادة أداء القراءة والكتابة، وذلك بالاعتماد على مستوى RAID المطبَّق؛ ويمكن تطبيق RAID إما بطريقة برمجية (حيث يَعلم نظام التشغيل عن القرصين المستخدمين، ويصون العلاقة بينهما)، أو عن طريق العتاد (حيث يضاف متحكم خاص يجعل نظام التشغيل يعتقد أنه يتعامل مع قرص واحد، ويتحكم بالأقراص تحكمًا «خفيًا»).</p><p dir="rtl">النسخة البرمجية من RAID الموجودة في الإصدارات الحالية من لينُكس (وأوبنتو) هي مبنية على محرك «mdadm» الذي يعمل عملًا ممتازًا، وحتى أنه أفضل من متحكمات RAID «الفيزيائية»؛ سيدلُّك هذا القسم على طريقة تثبيت نسخة الخادوم من أوبنتو باستخدام قسمَي RAID1 على قرصين صلبين منفصلين، واحد من أجل نظام ملفات الجذر (/)، والآخر لذاكرة التبديل (swap).</p><h3 dir="rtl">التقسيم</h3><p dir="rtl">اتَّبِع تعليمات التثبيت إلى أن تصل إلى خطوة تقسيم الأقراص، عندها:</p><ol dir="rtl"><li>اختر طريقة التقسيم اليدوية.</li><li>اختر القرص الصلب الأول، ووافق على «هل تريد إنشاء جدول تجزئة جديد وفارغ على هذا الجهاز؟» ، أعد هذه الخطوة لجميع الأجهزة التي تريدها أن تصبح جزءًا من مصفوفة RAID.</li><li>اختر «المساحة المتاحة» في أول قرص، ثم حدد «إنشاء جزء [قسم] جديد».</li><li>اختر بعدها المساحة التخزينية لهذا القسم، سيكون هذا القسم هو القسم الخاص بذاكرة التبديل، والقاعدة العامة لحجم ذاكرة التبديل هي أن تكون ضعف حجم ذاكرة الوصول العشوائي (RAM)، اختر المساحة التخزينية للقسم، ثم اختر «أولي»، ثم «في البداية» (مكان بدء القطاعات).</li><li>ملاحظة: لا يُستحسَن دومًا أن يكون حجم ذاكرة التخزين ضعف حجم الذاكرة، وخصوصًا في الأنظمة التي تملك مقدارًا كبيرًا من الذاكرة، يتوقف حساب الحجم التخزيني لقسم ذاكرة التبديل على طريقة استخدام النظام.</li><li>اختر سطر «طريقة الاستخدام» من الأعلى، الذي يكون افتراضيًا «نظام ملفات Ext4»، وغيرّه إلى «حجم فيزيائي لمصفوفة RAID» (أو «الكتلة الجسمية لـ RAID») ، ثم اختر «انتهى إعداد الجزء [القسم]».</li><li>ولتهيئة قسم الجذر (/) فاختر «المساحة المتاحة» مرةً أخرى على القرص الصلب الأول، ثم اختر «إنشاء جزء [قسم] جديد».</li><li>اختر ما تبقى من مساحة القرص التخزينية، ثم اضغط على متابعة، ثم «أولي».</li><li>وكما في قرص ذاكرة التبديل، اختر «طريقة الاستخدام» ثم «حجم فيزيائي لمصفوفة RAID»، ثم اختر سطر «وسم إمكانية الإقلاع»، وغيرها إلى «ممكَّن»، ثم اختر «انتهى إعداد الجزء [القسم]».</li><li>أعد تنفيذ الخطوات من ثلاثة إلى ثمانية للأقراص والأقسام الأخرى.</li></ol><h3 dir="rtl">إعداد RAID</h3><p dir="rtl">بعد أن أُعِّدَت الأقسام، يمكن الآن ضبط المصفوفة:</p><ol dir="rtl"><li>عد إلى صفحة «تقسيم الأقراص» الرئيسية، ثم اختر «تهيئة مصفوفة RAID البرمجية» في الأعلى.</li><li>اختر «نعم» لكتابة التغيرات إلى القرص.</li><li>اختر «إنشاء جهاز MD».</li><li>لهذا المثال، اختر «RAID1»، لكن إن كنت تستخدم ضبطًا مختلفًا، فاختر النوع الملائم (RAID0، أو RAID1‎، أو‏ RAID5). <strong>ملاحظة: </strong>ستحتاج إلى ثلاثة أقراص على الأقل لاستخدام RAID5، أما استخدام RAID0 أو RAID1، فيلزمك قرصان فقط.</li><li>أدخِل رقم الأجهزة الفعالة (2)، أو مقدار الأقراص الصلبة التي عندك والتي ترغب باستخدامها في المصفوفة، ثم اختر «متابعة».</li><li>أدخل رقم الأقراص البديلة (في حالة حدوث عطب في أحد الأقراص)، الذي هو «0» افتراضيًا، ثم اختر «متابعة».</li><li>اختر الأقسام التي تريد استخدامها، عمومًا، ستكون sda1, sdb1, sdc1 ...إلخ. ستتطابق الأرقام غالبًا، وستختلف الأحرف للدلالة على اختلاف الأقراص الصلبة.</li><li>لقسم ذاكرة التبديل، اختر sda1، و sdb1، ثم اختر «متابعة» للذهاب للخطوة الآتية.</li><li>أعد الخطوات من ثلاثة إلى سبعة لقسم الجذر (/) باختيار sda2، و sdb2.</li><li>بعد انتهائك من الضبط، اختر «إنهاء».</li></ol><h3 dir="rtl">التهيئة</h3><p dir="rtl">يجب أن تحصل الآن على قائمة بالأقراص الصلبة وأجهزة RAID، الخطوة الآتية هي التهيئة وإعداد نقاط الوصل لأجهزة RAID؛ عامل جهاز RAID كقرص صلب، هيِّئه وصِلْه كالمعتاد.</p><ol dir="rtl"><li>اختر «‎#1» تحت قسم «RAID1 برمجي الجهاز ‎#0».</li><li>اختر «استخدام كـ»، ثم اختر «ذاكرة التبديل»، ثم «انتهى إعداد الجزء [القسم]».</li><li>ثم اختر «‎#1» تحت قسم «RAID1 برمجي الجهاز ‎#1».</li><li>اختر «طريقة الاستخدام»، ثم اختر «نظام ملفات Ext4 سجلي».</li><li>اختر «نقطة الوصل»، واضبطها على «/ - جذر نظام الملفات»، عدِّل الخيارات الأخرى كما تريد، ثم اختر «انتهى إعداد الجزء [القسم]».</li><li>في النهاية، اختر «إنهاء التجزئة، وكتابة التغيرات إلى القرص».</li></ol><p dir="rtl">إذا اخترت وضع قسم الجذر في مصفوفة RAID، فسيسألك المثبت إذا كنت تريد الإقلاع بحالة «منخفضة» (degraded)، راجع القسم «مصفوفة RAID ذات الحالة المتدهورة (degraded state)» للمزيد من التفاصيل.</p><p dir="rtl">يجب أن تُكمَل عملية التثبيت بشكلٍ اعتيادي.</p><h3 dir="rtl"><a rel="external nofollow" name="2.4.1.4.%D9%85%D8%B5%D9%81%D9%88%D9%81%D8%A9%20RAID%20%D8%B0%D8%A7%D8%AA%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D8%A7%D9%84%D9%85%D8%AA%D8%AF%D9%87%D9%88%D8%B1%D8%A9%20(degraded%20state)%7Coutline"></a><a rel="external nofollow" name="2.4.1.4.%D9%85%D8%B5%D9%81%D9%88%D9%81%D8%A9%20RAID%20%D8%B0%D8%A7%D8%AA%20%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D8%A9%20%D8%A7%D9%84%D9%85%D8%AA%D8%AF%D9%87%D9%88%D8%B1%D8%A9%20(degraded%20state)%7Coutline"></a> مصفوفة RAID ذات الحالة المتدهورة (degraded state)</h3><p dir="rtl">قد يحصل خلل في القرص في نقطة ما من حياة الحاسوب؛ وعندما يحصل ذلك وقت استخدام مصفوفة RAID برمجية، فسيضع نظام التشغيل المصفوفة في ما يدعى «الحالة المتدهورة» (degraded state).</p><p dir="rtl">إذا أصبحت المصفوفة في الحالة المتدهورة -ربما لحدوث تلف في البيانات- فعندها تحاول نسخة الخادوم من أوبنتو افتراضيًا الإقلاع إلى<span style="font-family:courier new,courier,monospace;"> initramfs</span> بعد ثلاثين ثانية، وعندما يكتمل إقلاع<span style="font-family:courier new,courier,monospace;"> initramfs</span>، فسيظهر مِحَث لمدة خمس عشرة ثانية يسمح لك بالاختيار بين إقلاع النظام أو محاولة استرداده يدويًا؛ ربما لا يكون الإقلاع إلى محث<span style="font-family:courier new,courier,monospace;"> initramfs</span> هو السلوك المطلوب، وخصوصًا إن كان الحاسوب في مكان بعيد عنك. يمكن إعداد الإقلاع إلى مصفوفة متدهورة بعدة طرق:</p><ul><li><p dir="rtl">الأداة <span style="font-family:courier new,courier,monospace;">dpkg-reconfigure</span> التي تستخدم لضبط السلوك الافتراضي؛ وستُسأل خلال العملية عن الخيارات الإضافية المتعلقة بالمصفوفة، كالمراقبة، وتنبيهات البريد ...إلخ. أدخِل الأمر الآتي لإعداد<span style="font-family:courier new,courier,monospace;"> mdadm</span>:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo dpkg-reconfigure mdadm</pre><ul><li><p dir="rtl">ستغير عملية<span style="font-family:courier new,courier,monospace;"> dpkg-reconfigure mdadm</span> ملف الإعدادات ‎<span style="font-family:courier new,courier,monospace;">/etc/initramfs-tools ‎/conf.d/mdadm</span>، لدى هذا الملف ميزة القدرة على الإعداد المسبق لسلوك النظام، ويمكن تعديله يدويًا:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">BOOT_DEGRADED=ture</pre><p dir="rtl"><strong>ملاحظة:</strong> يمكن تجاوز ملف الإعدادات باستخدام وسيط يمرر للنواة.</p><p dir="rtl">يَسمح استخدام وسيط يمرر للنواة لك أيضًا بإقلاع النظام من مصفوفة ذات الحالة المتدهورة كما يلي:</p><ul dir="rtl"><li>عندما يقلع الخادوم، اضغط على<span style="font-family:courier new,courier,monospace;"> Shift</span> لفتح قائمة جروب (Grub).</li><li>اضغط e لتعديل خيارات النواة.</li><li>اضغط على زر السم السفلي لتعليم سطر النواة.</li><li>أضف «<span style="font-family:courier new,courier,monospace;">bootdegraded=true</span>» (دون علامات الاقتباس) إلى نهاية السطر.</li><li>اضغط على <span style="font-family:courier new,courier,monospace;">Ctrl+x</span> لإقلاع النظام.</li></ul><p dir="rtl">بعد أن يُقلِع النظام، تستطيع إما إصلاح المصفوفة (انظر قسم «صيانة مصفوفات RAID» للتفاصيل) أو نسخ المعلومات المهمة إلى جهاز آخر بسبب عطب في العتاد.</p><h3 dir="rtl"><a rel="external nofollow" name="2.4.1.5.%D8%B5%D9%8A%D8%A7%D9%86%D8%A9%20%D9%85%D8%B5%D9%81%D9%88%D9%81%D8%A7%D8%AA%20RAID%7Coutline"></a><a rel="external nofollow" name="2.4.1.5.%D8%B5%D9%8A%D8%A7%D9%86%D8%A9%20%D9%85%D8%B5%D9%81%D9%88%D9%81%D8%A7%D8%AA%20RAID%7Coutline"></a> صيانة مصفوفات RAID</h3><p dir="rtl">يمكن أن تَعرِض الأداة <span style="font-family:courier new,courier,monospace;">mdadm </span>حالة المصفوفة، أو تستطيع إضافة أو إزالة أقراص في المصفوفة ...إلخ.</p><ul><li><p dir="rtl">لإظهار حالة مصفوفة أقراص، فأدخِل الأمر الآتي إلى الطرفية:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mdadm -D /dev/md0</pre><p dir="rtl">الخيار <span style="font-family:courier new,courier,monospace;">‎-D</span> يخبر <span style="font-family:courier new,courier,monospace;">mdadm</span> أن يُظهِر معلوماتٍ تفصيلية حول الجهاز <span style="font-family:courier new,courier,monospace;">‎/dev/md0</span>، استبدل مسار جهاز RAID المناسب بالمسار <span style="font-family:courier new,courier,monospace;">‎/dev/md0</span>.</p><ul><li><p dir="rtl">لعرض حالة قرص في مصفوفة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mdadm -E /dev/sda1</pre><p dir="rtl">ستُشابِه مخرجات الأمر السابق مخرجات الأمر <span style="font-family:courier new,courier,monospace;">mdadm -D</span>؛ عدِّل<span style="font-family:courier new,courier,monospace;"> ‎/dev/sda1</span> لكل قرص من أقراص المصفوفة.</p><ul><li><p dir="rtl">إذا عُطِبَ قرصٌ ما، فيجب أن يُزال من المصفوفة:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mdadm --remove /dev/mo0 /dev/sda1</pre><p dir="rtl">بدِّل كلًّا من ‎<span style="font-family:courier new,courier,monospace;">/dev/md0</span> و <span style="font-family:courier new,courier,monospace;">‎/dev/sda1</span> إلى جهاز RAID والقرص الملائمَين بالتوالي وبالترتيب.</p><ul><li><p dir="rtl">وبطريقة مشابهة، لإضافة قرص جديد:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo mdadm --add /dev/md0 /dev/sda1</pre><p dir="rtl">يمكن أن تُبَدَّل حالة القرص في بعض الأحيان إلى «مُعَاب» (faulty)، حتى وإن لم يكن فيه خلل فيزيائي؛ من المفيد في كثير من الأحيان إزالة القرص من المصفوفة، ثم إعادة إضافته؛ وهذا ما يجعل القرص يُزامَن مرةً أخرى مع المصفوفة؛ وإذا لم يزامن القرص مع المصفوفة، فهذا دليلٌ قويٌ على وجود مشكلة فيزيائية فيه.</p><p dir="rtl">يحتوي الملف ‎<span style="font-family:courier new,courier,monospace;">/proc/mdstat</span> على معلومات مفيدة حول حالة أجهزة RAID في النظام:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cat /proc/mdstat</pre><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
10016384 blocks [2/2] [UU]
unused devices: &lt;none&gt;</pre><p dir="rtl">الأمر الآتي رائع لمشاهدة حالة مزامنة قرص:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">watch -n1 cat /proc/mdstat</pre><p dir="rtl">اضغط على <span style="font-family:courier new,courier,monospace;">Ctrl+c</span> لإيقاف الأمر watch.</p><p dir="rtl">إذا احتجت لاستبدال قرص معطوب، فيجب أن يعاد تثبيت محمل الإقلاع «جروب» (grub) مرةً أخرى بعد استبدال القرص المعطوب بالجديد ومزامنته؛ أدخِل الأمر الآتي لتثبيت «جروب» على القرص الجديد:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo grub-install /dev/md0</pre><p dir="rtl">ضع اسم جهاز المصفوفة الملائم بدلًا من ‎<span style="font-family:courier new,courier,monospace;">/dev/md0</span>.</p><h3 dir="rtl">مصادر</h3><p dir="rtl">إن موضوع مصفوفات RAID هو موضوع معقد نتيجةً لوفرة الطرق التي يمكن ضبط RAID فيها، رجاءً راجع الروابط الآتية لمزيدٍ من المعلومات:</p><ul><li><p dir="rtl">المقالات التي تتحدث عن <a rel="external nofollow" href="https://help.ubuntu.com/community/Installation#raid">RAID</a> في ويكي أوبنتو.</p></li><li>مقالة بعنوان «<a rel="external nofollow" href="http://www.faqs.org/docs/Linux-HOWTO/Software-RAID-HOWTO.html">Software RAID HOWTO</a>».</li><li>كتاب «<a rel="external nofollow" href="http://oreilly.com/catalog/9781565927308/">Managing RAID on Linux</a>».</li></ul><h2 dir="rtl">مدير الحجوم المنطقية (LVM)</h2><p dir="rtl">يسمح مدير الحجوم المنطقية (Logical Volume Manager) لمدراء الأنظمة بإنشاء حجوم تخزينية على قرصٍ واحد أو أقراصٍ صلبة متعددة؛ ويمكن إنشاء حجوم LVM على أقسام في مصفوفة RAID أو على الأقسام الموجودة في قرص واحد، ويمكن أيضًا توسيع تلك الحجوم، مما يضيف مرونةً كبيرةً للنظام عندما تتغير المتطلبات التشغيلية.</p><h3 dir="rtl">لمحة عامة</h3><p dir="rtl">تأثيرٌ جانبي لقوة ومرونة LVM هو درجة كبيرةٌ من التعقيد؛ ويجدر بنا التعرف على بعض المصطلحات قبل الخوض في عملية تثبيت LVM:</p><ul dir="rtl"><li><strong>الحجم الفيزيائي (PV)</strong>: القرص الصلب الفيزيائي، أو قسم في قرص، أو قسم مصفوفة RAID برمجية؛ مهيئين للعمل كحجم LVM.</li><li><strong>مجموعة الحجوم (VG)</strong>: التي تُصنَع من حجم فيزيائي واحد أو أكثر؛ ويمكن أن تُوسَّع مجموعة الحجوم بإضافة المزيد من الحجوم الفيزيائية، حيث تكون مجموعة الحجوم كقرص صلب وهمي (virtual disk drive)، الذي يُنشَأ منه المزيد من الحجوم المنطقية.</li><li><strong>حجم منطقي (LV)</strong>: الذي يشبه القسم في الأنظمة الأخرى (التي ليست LVM)، حيث يُهيَّأ الحجم المنطقي بنظام الملفات المطلوب (‎Ext3، أو‏ XFS‎، أو‎‏ JFS ...إلخ.)، ويكون متوفرًا للوصل وتخزين البيانات.</li></ul><h3 dir="rtl">التثبيت</h3><p dir="rtl">سيشرح المثال في هذا القسم طريقة تثبيت نسخة الخادوم من أوبنتو مع وصل مجلد <span style="font-family:courier new,courier,monospace;">‎/srv</span> على حجم LVM، إذ سيُضاف حجمٌ فيزيائيٌ (PV) واحدٌ فقط أثناء عملية التثبيت، والذي يمثِّل جزءًا من مجموعة الحجوم؛ وسيضاف حجم فيزيائي آخر بعد التثبيت لشرح كيف يمكن أن تُوسَّع مجموعة الحجوم.</p><p dir="rtl">هنالك خياراتُ تثبيتٍ عدِّة لاستخدام LVM، الخيار الأول «موجّه - استخدام القرص بأكمله وإعداد LVM» الذي يسمح بإعطاء جزء من المساحة التخزينية المتوفرة لاستخدامها في LVM، والخيار الآخر «موجّه - استخدام القرص بأكمله وإعداد LVM مشفّر»، أو إعداد الأقسام وضبط LVM يدويًا؛ والطريقة الوحيدة لهذه اللحظة لإعداد النظام لاستخدام LVM والأقسام الاعتيادية أثناء التثبيت هو استخدام الطريقة اليدوية.</p><p dir="rtl">اتَّبِع خطوات التثبيت إلى أن تصل إلى خطوة «تقسيم الأقراص»، عندها:</p><ol dir="rtl"><li>في صفحة «تقسيم الأقراص»، اختر «يدويًا».</li><li>اختر القرص الصلب، ثم في الشاشة التالية اختر «نعم» للرد على الرسالة «هل تريد إنشاء جدول تجزئة جديد وفارغ على هذا الجهاز؟».</li><li>ثم أنشئ أقسام ‎<span style="font-family:courier new,courier,monospace;">/boot</span>، و <span style="font-family:courier new,courier,monospace;">swap</span>، و ‎<span style="font-family:courier new,courier,monospace;">/</span>‎ بأي نظام ملفات تريد.</li><li>ولإنشاء ‎<span style="font-family:courier new,courier,monospace;">/srv</span> باستخدام LVM، فأنشئ قسمًا منطقيًا جديدًا، ثم غير «طريقة الاستخدام» إلى «حجم فيزيائي لتخزين LVM»، ثم اختر «انتهى إعداد الجزء [القسم]».</li><li>اختر الآن «إعداد مدير الحجوم المنطقية» في الأعلى، ثم اختر «نعم» لكتابة التعديلات إلى القرص.</li><li>والآن اختر «إنشاء مجموعة حجوم» في «إعدادات LVM» في الشاشة التالية، ثم اختر اسمًا لمجموعة الحجوم، وليكن vg01، أو أي شيء يصفها أكثر من ذلك؛ وبعد اختيار الاسم، اختر القسم المُعَدّ لاستخدام LVM عليه، ثم «متابعة».</li><li>وبالعودة لصفحة «إعدادات LVM»، اختر «إنشاء حجم منطقي»، واختر مجموعة الحجوم المُنشَأة منذ قليل، وأدخل اسمًا للحجم المنطقي الجديد (على سبيل المثالsrv ﻷنه اسم نقطة الوصل المخطط لها) ثم اختر المساحة التخزينية، التي ستكون القسم بأكمله، لا تنسَ أنه يمكنك دائمًا زيادتها لاحقًا، ثم اختر «إنهاء» ويجب أن تعود لشاشة «تقسيم الأقراص».</li><li>لإضافة نظام ملفات إلى LVM الجديد، اختر القسم تحت «LVM VG vg01, LV srv»، أو أي اسم قد اخترته في الخطوة السابقة، ثم اختر «طريقة الاستخدام»، واضبط نظام الملفات كالمعتاد باختيار ‎/srv نقطةً للوصل، ثم اضغط على «انتهى إعداد الجزء [القسم]» عند الفراغ منه.</li><li>في النهاية، اختر «إنهاء التجزئة وكتابة التغيرات إلى القرص»، ثم وافق على إجراء التغيرات، وأكمل عملية التثبيت.</li></ol><p dir="rtl">هذه بعض الأدوات المفيدة لعرض المعلومات حول LVM:</p><ul dir="rtl"><li>الأمر <strong><span style="font-family:courier new,courier,monospace;">pvdisplay</span></strong>: عرض معلومات حول الحجوم الفيزيائية.</li><li>الأمر<strong><span style="font-family:courier new,courier,monospace;"> vgdisplay</span></strong>: عرض معلومات حول مجموعات الحجوم.</li><li>الأمر <strong><span style="font-family:courier new,courier,monospace;">lvdisplay</span></strong>: عرض معلومات حول الحجوم المنطقية.</li></ul><h3 dir="rtl">توسيع مجموعات الحجوم</h3><p dir="rtl">بإكمال مثالنا المتعلق بحجم LVM واستخدامه كنقطة وصل لمجلد ‎/srv‎‎، فسيناقش هذا القسم إضافة قرص صلب آخر، وإنشاء حجم فيزيائي (PV)، وإضافته إلى مجموعة الحجوم (VG)، وتوسيع الحجم المنطقي srv، ثم في النهاية توسيع نظام الملفات؛ يفترض هذا المثال أنَّ قرصًا صلبًا ثانيًا قد أُضيف إلى النظام، وفي هذا المثال، سيكون اسمه ‎ /dev/sdbوسنستخدم القرص بأكمله كحجمٍ فيزيائي (بإمكانك إنشاء أقسام واستخدامها كحجوم فيزيائية مختلفة).</p><p dir="rtl">تحذير: تأكد أنه ليس لديك قرص صلب باسم ‎<span style="font-family:courier new,courier,monospace;"> /dev/sdb</span>قبل تنفيذ الأوامر الآتية، قد تخسر بعض البيانات إذا نفَّذت هذه الأوامر على قرص غير فارغ.</p><ol><li><p dir="rtl">أولًا، أنشِئ الحجم الفيزيائي بتنفيذ الأمر الآتي في الطرفية:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo pvcreate /dev/sdb</pre><ol start="2"><li><p dir="rtl">وسِّع الآن مجموعة الحجوم (VG):</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo vgextend vg01 /dev/sdb</pre><ol start="3"><li><p dir="rtl">استخدم <span style="font-family:courier new,courier,monospace;">vgdisplay</span> لمعرفة الامتدادات الفيزيائية أو PE‏ (physical extents)، التي هي الامتدادات الفيزيائية الحرة / الحجم (الحجم التخزيني الذي حددته)، سنعتبر أن المساحة الفارغة هي ‏511 ‏PE‏ (مما يساوي2 غيغابايت إذا كان حجم PE هو 4 ميغابايت)، وسنستخدم كل المساحة الفارغة المتاحة، لا تنسَ استخدام رقم PE -أو الحجم التخزيني الحر- المتوفر عندك.</p><p dir="rtl">يمكن توسيع الحجم المنطقي بعدِّة طرق، وسنشرح كيف يمكن استخدام PE لتوسعة حجم منطقي:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo lvextend /dev/vg01/srv -l +511</pre><p dir="rtl">إن الخيار<span style="font-family:courier new,courier,monospace;"> ‎-l </span>يسمح بتوسعة الحجم المنطقي باستخدام PE، يسمح الخيار <span style="font-family:courier new,courier,monospace;">‎-L</span> للحجم المنطقي بأن يُوسَّع باستخدام الميغا، أو الغيغا، أو التيرابايت ...إلخ.</p><ol start="4"><li><p dir="rtl">حتى وإن كان من المفترض أنه باستطاعتك توسيع نظام ملفات ext3 أو ext4 دون فصله أولًا، لكن من العادات الجيدة فصله على أيّة حال وتفحص نظام الملفات؛ وبهذا لن تخرِّب شيئًا في اليوم الذي تريد فيه تقليل الحجم المنطقي (إذ يكون فصل نظام الملفات في هذه الحالة إلزاميًا).</p></li></ol><p dir="rtl">الأوامر الآتية ﻷنظمة الملفات EXT3 أو EXT4، إذا كنت تستخدم أنظمة ملفات أخرى، فتتوفر أدوات مختلفة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo umount /srv
sudo e2fsck -f /dev/vg01/srv</pre><p dir="rtl">الخيار <span style="font-family:courier new,courier,monospace;">‎-f</span> يجبر الأداة <span style="font-family:courier new,courier,monospace;">e2fsck</span> على تفحص نظام الملفات وإن كان يبدو «نظيفًا».</p><ol start="5"><li><p dir="rtl">في النهاية، غيِّر حجم نظام الملفات:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo resize2fs /dev/vg01/srv</pre><ol start="6"><li><p dir="rtl">ثم صِل نظام الملفات وتأكد من حجمه التخزيني:</p></li></ol><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mount /dev/vg01/srv /srv &amp;&amp; df -h /srv</pre><h3 dir="rtl">مصادر</h3><ul dir="rtl"><li>راجع المقالات حول <a rel="external nofollow" href="https://help.ubuntu.com/community/Installation#lvm">LVM</a> في ويكي أوبنتو.</li><li>انظر مقالة <a rel="external nofollow" href="http://tldp.org/HOWTO/LVM-HOWTO/index.html">LVM HOWTO</a> للمزيد من المعلومات.</li><li>مقالة أخرى جيدة هي «<a rel="external nofollow" href="http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html">Managing Disk Space with LVM</a>» في موقع O'Reilly المدعو linuxdevcenter.com.</li><li>للمزيد من المعلومات حول <span style="font-family:courier new,courier,monospace;">fdisk</span>، انظر صفحة الدليل الخاصة به.</li></ul><p dir="rtl">رجمة -وبتصرّف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/advanced-installation.html">Ubuntu Server Guide: Advanced Installation</a>.</p>
]]></description><guid isPermaLink="false">153</guid><pubDate>Wed, 09 Dec 2015 20:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x646;&#x635;&#x64A;&#x628; &#x646;&#x633;&#x62E;&#x629; &#x627;&#x644;&#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x645;&#x646; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x648;&#x625;&#x639;&#x62F;&#x627;&#x62F; &#x645;&#x62E;&#x62A;&#x644;&#x641; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A;&#x647;</title><link>https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%D9%87-r152/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-install.png.7d1a23c6a46afe4ab7e281ef04e8d029.png" /></p>

<p dir="rtl">أهلًا بك في سلسلة دليل إدارة خواديم أوبنتو!</p><p dir="rtl">ستجد هنا معلوماتٍ حول تثبيت وإعداد مختلف تطبيقات الخادوم؛ توضِّح هذه السلسلة طريقة إجراء المهام لتهيئة وتخصيص نظامك خطوةً بخطوة.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-install.png.fa31e01a4a635f7f51d6c23168bad435.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="9772" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-install.thumb.png.d7c0e472dd3a7106981253d222f52bcb.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-install.thumb.png.d7c0e472"></a></p><p dir="rtl">قبل أن نبدأ. ستجد خلال هذه السّلسلة إشارات من قبيل: "راجع القسم [اسم القسم]". يُقصد بذلك أقسام إما في نفس المقال (واصل قراءة المقال لتصله) أو في مقال آخر (إما سبق نشره أو سيُنشر لاحقًا) في نفس السّلسلة.</p><p dir="rtl">يوفر هذا الدرس لمحةً عامةً سريعةً عن تثبيت نسخة الخادوم من أوبنتو 14.04، للمزيد من المعلومات المفصَّلة، رجاءً راجع «<a rel="external nofollow" href="https://help.ubuntu.com/14.04/installation-guide/">دليل تثبيت أوبنتو</a>».</p><h2 dir="rtl">التحضير للتثبيت</h2><p dir="rtl">يشرح هذا القسم النواحي المختلفة التي يجب أن تؤخذ بعين الاعتبار قبل البدء بالتثبيت.</p><h3 dir="rtl">متطلبات النظام</h3><p dir="rtl">تدعم نسخة الخادوم من أوبنتو 14.04 ثلاث معماريات رئيسية: إنتل x86، و AMD64، و ARM؛ يعرض الجدول الآتي مواصفات العتاد المستحسنة؛ لكن اعتمادًا على استخدامك للنظام، ربما يمكنك تشغيل النظام بأقل من هذه المواصفات، لكن لا ينصح أبدًا بتجاهل هذه الاقتراحات.</p><p dir="rtl"><strong>الجدول 2-1: مواصفات العتاد المستحسنة</strong></p><style type="text/css">table{border-collapse: collapse;} td, th, table{border: 1px solid black;}</style><center><table dir="rtl" cellpadding="0" cellspacing="0"><colgroup><col><col><col><col><col></colgroup><tbody><tr><th rowspan="2"><p style="text-align: right;">    نوع التثبيت</p></th><th rowspan="2"><p style="text-align: right;">    المعالج</p></th><th rowspan="2"><p style="text-align: right;">  الذاكرة العشوائية  </p></th><th colspan="2"><p>مساحة القرص الصلب</p></th></tr><tr><th><p style="text-align: right;">  أساس النظام  </p></th><th><p style="text-align: right;">  جميع المهام مثبتة  </p></th></tr><tr><td><p style="text-align: center;">خادوم (قياسي)</p></td><td><p style="text-align: center;">1 غيغاهرتز</p></td><td><p style="text-align: center;">512 ميغابايت</p></td><td><p style="text-align: center;">1 غيغابايت</p></td><td><p style="text-align: center;">1.75 غيغابايت</p></td></tr><tr><td><p style="text-align: center;">  خادوم (الحد الأدنى)  </p></td><td><p style="text-align: center;">  300 ميغاهرتز  </p></td><td><p style="text-align: center;">192 ميغابايت</p></td><td><p style="text-align: center;">700 ميغابايت</p></td><td><p style="text-align: center;">1.4 غيغابايت</p></td></tr></tbody></table></center><p dir="rtl">توفر نسخة الخادوم أساسًا مشتركًا لجميع أنواع برمجيات الخادوم، حيث تمثل تصميمًا مصغرًا يوفر منصةً للخدمات المطلوبة، كخدمات مشاركة الملفات أو الطابعات، أو استضافة مواقع الويب، أو البريد الإلكتروني ...إلخ.</p><h3 dir="rtl">الاختلافات بين نسختي الخادوم وسطح المكتب</h3><p dir="rtl">هنالك بعض الاختلافات بين نسخة الخادوم وسطح المكتب في أوبنتو، عليك أن تلحظ أن كلا النسختين تَستخدمان مستودعات apt نفسها، مما يجعل من السهل تثبيت تطبيق من تطبيقات الخادوم على نسخة سطح المكتب، وكذلك هو الحال في نسخة الخادوم.</p><p dir="rtl">تكمن الاختلافات بين النسختين في عدم وجود بيئة النوافذ X في نسخة الخادوم، بالإضافة إلى عملية التثبيت، وخيارات النواة المختلفة.</p><h3 dir="rtl">اختلافات النواة</h3><p dir="rtl">في أوبنتو 10.10 وما قبلها، كان لنسختي الخادوم وسطح المكتب أنوية مختلفة؛ لكن أوبنتو لم تعد تفصل الأنوية الخاصة بالخواديم والأنوية الشاملة (generic)، حيث دمجتا في نواة شاملة واحدة لتقليل عبء صيانة النواة طوال فترة دعم الإصدارة.</p><p dir="rtl"><strong>ملاحظة: </strong>عندما تُشغِّل نسخة 64 بت من أوبنتو على معالجات 64 بت، فلن تكون محدودًا بسعة عناوين الذاكرة.</p><p dir="rtl">لرؤية جميع إعدادات خيارات النواة، تستطيع أن تلقي نظرةً على ‎<span style="font-family:courier new,courier,monospace;">/boot/config-3.13.0-server</span>، وأيضًا على كتاب «<a rel="external nofollow" href="http://www.kroah.com/lkn/">Linux Kernel in a Nutshell</a>» الذي هو مصدر رائع للمعلومات حول الخيارات المتوفرة.</p><h3 dir="rtl">النسخ الاحتياطي</h3><p dir="rtl">يجدر بك قبل تثبيت نسخة الخادوم من أوبنتو أن تتأكد أنَّ جميع البيانات على الخادوم قد نُسِخَت احتياطيًا، وسنفصِّل النسخ الاحتياطي في درسٍ لاحق.</p><p dir="rtl">إذا لم تكن هذه أول مرة يُثبَّت فيها نظام تشغيل على حاسوبك، فربما عليك إعادة تقسيم القرص الصلب لإيجاد مساحة فارغة لتثبيت أوبنتو عليها.</p><p dir="rtl">في أي وقت تعيد فيه تقسيم قرصك الصلب، كن مستعدًا لأن تخسر جميع البيانات عليه في حال ارتكبت خطأً أو حدث شيء ما بشكل خاطئ أثناء التقسيم؛ وذلك على الرغم من أنَّ البرامج المستخدمة في التثبيت عملية جدًا وثابتة ومَرَّت عليها سنواتٌ من الاستخدام، لكنها تقوم بأمورٍ مُدمِّرة!</p><h2 dir="rtl">التثبيت من قرص مضغوط</h2><p dir="rtl">الخطوات الأساسية لتثبيت نسخة الخادوم من قرص مضغوط هي نفس الخطوات لتثبيت أي نظام تشغيل من قرص مضغوط؛ وعلى النقيض من نسخة سطح المكتب، لا تحتوي نسخة الخادوم على نظام تثبيت رسومي؛ حيث تَستخدِم نسخة الخادوم واجهةً نصيةً عوضًا عنها.</p><ul><li>بدايةً، نزِّل واحرق ملف ISO الملائم من <a rel="external nofollow" href="http://www.ubuntu.com/download/server/download">موقع أوبنتو الرسمي</a>.</li><li>أقلع النظام من قارئة الأقراص المضغوطة.</li><li>سيُطلَب منك تحديد اللغة في مِحَث الإقلاع (boot prompt).</li></ul><p>هنالك بعض الخيارات الإضافية لتثبيت نسخة الخادوم من أوبنتو الموجودة في قائمة الإقلاع الرئيسية، يمكنك تثبيت خادوم أوبنتو أساسي، أو تفحص قرص CD-ROM والتأكد من خلوه من الأعطاب، أو التحقق من ذاكرة النظام (RAM)، أو الإقلاع من القرص الصلب الأول، أو إصلاح نظام معطوب؛ ستناقش بقية هذا القسم كيفية تثبيت خادوم أوبنتو أساسي.</p><ul><li>يسأل المثبت عن اللغة التي سيستخدمها، وبعد ذلك سيُطلَب منك أن تختار موقعك.</li><li>الخطوة التالية هي سؤالك عن تحديد تخطيط لوحة المفاتيح الخاصة بك، يمكنك أن تطلب من المثبت أن يحاول أن يحددها لك، أو بإمكانك اختيارها يدويًا من القائمة.</li><li>ثم سيكتشف المثبت إعدادات العتاد لديك، ثم سيحاول ضبط إعدادات الشبكة باستخدام DHCP، إذا لم تُرِد استخدام DHCP في الشاشة التالية، فاختر «رجوع»، حيث تستطيع الوصول إلى الخيار «هيّء الشبكة يدويًّا».</li><li>سيُعَدّ مستخدمٌ جديد، وسيحصل هذا المستخدم على امتيازات الجذر باستخدام الأداة sudo.</li><li>بعد إكمال إعدادات المستخدم، ستُسأل عمّا إذا أردت تشفير مجلد المنزل.</li><li>سيسألك المثبت في الخطوة التالية عن اسم المضيف (hostname)، ومنطقة التوقيت.</li></ul><p dir="rtl">ثم بإمكانك الاختيار بين عدِّة خيارات لضبط تخطيط القرص الصلب، بعد ذلك ستُسأل عن القرص الذي تريد تثبيت النظام عليه، ستحصل على نوافذ للتأكيد قبل أن تعيد كتابة جدول الأقسام أو قبل إعداد LVM اعتمادًا على تخطيط القرص الصلب؛ إذا اخترت LVM، فستُسأل عن حجم القسم الجذر المنطقي؛ لخيارات الأقراص المتقدمة، راجع القسم «<a href="https://academy.hsoub.com/devops/servers/%D8%AE%D8%B5%D8%A7%D8%A6%D8%B5-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D9%84%D8%AF%D9%89-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r153/">التثبيت المتقدم</a>».</p><p dir="rtl">سيُثبَّت بعد ذلك نظام أوبنتو الأساسي.</p><p dir="rtl">الخطوة الآتية في عملية التثبيت هي تقرير كيفية تحديث النظام، حيث هناك ثلاثة خيارات:</p><ul><li><strong>بدون تحديثات تلقائية: </strong>وهذا ما يتطلب من المدير أن يسجل الدخول إلى الحاسوب ويثبت التحديثات يدويًا.</li><li><strong>تثبيت التحديثات الأمنية تلقائيًا:</strong> وهذا ما سيثبت حزمة <span style="font-family:courier new,courier,monospace;">unattended-upgrades</span>، التي ستُثبِّت التحديثات الأمنية دون تدخل من المدير؛ لمزيدٍ من المعلومات، راجع القسم «<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D8%B9%D9%84%D9%89-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r156/">التحديثات التلقائية</a>».</li><li><strong>إدارة النظام باستخدام Lanscape</strong>: إن Lanscape هو خدمة مدفوعة من كانوكيال لتسهيل إدارة الأجهزة العاملة بنظام أوبنتو؛ راجع موقع <a rel="external nofollow" href="http://Landscape">Landscape</a> للتفاصيل.</li></ul><p dir="rtl">تملك الآن الخيار لتثبيت، أو عدم تثبيت، العديد من مجموعات الحزم؛ راجع القسم «مجموعات الحزم» لمزيد من التفاصيل. وهنالك أيضًا خيار لتشغيل <span style="font-family:courier new,courier,monospace;">aptitude</span> لاختيار الحزم التي تريد تثبيتها، للمزيد من المعلومات، انظر القسم «<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D8%B9%D9%84%D9%89-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r156/">الأداة Aptitude</a>».</p><p dir="rtl">في النهاية، آخر خطوة قبل إعادة الإقلاع هي ضبط الساعة على توقيت UTC (التوقيت العالمي).</p><p dir="rtl"><strong>ملاحظة:</strong> إذا لم تكن راضيًا عن الإعدادات الافتراضية في أيّة مرحلة من مراحل التثبيت، فاستخدم خاصية «رجوع» الظاهرة في أيّة نافذة لكي تذهب لقائمة التثبيت المفصلة، التي تسمح لك بتعديل الإعدادات الافتراضية.</p><p dir="rtl">ربما احتجت في نقطة ما أثناء عملية التثبيت إلى قراءة صفحة المساعدة التي يزودها نظام التثبيت، عندئذٍ اضغط على <span style="font-family:courier new,courier,monospace;">F1</span>.</p><p dir="rtl">مرةً أخرى، راجع «<a rel="external nofollow" href="https://help.ubuntu.com/12.04/installation-guide/">دليل تثبيت أوبنتو</a>» للحصول على تعليمات تفصيلية.</p><h3 dir="rtl"><a rel="external nofollow" name="2.2.1.%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A7%D8%AA%20%D8%A7%D9%84%D8%AD%D8%B2%D9%85%7Coutline"></a> مجموعات الحزم</h3><p dir="rtl">لديك خلال عملية تثبيت نسخة الخادوم خيارٌ لتثبيت حزم إضافية من القرص المضغوط، تُجَمَّع هذه الحزم بواسطة نوع الخدمة التي توفرها.</p><ul dir="rtl"><li><strong>خادوم DNS:</strong> تُحدِّد هذه المجموعة خادوم BIND DNS وتوثيقه.</li><li><strong>خادوم LAMP:</strong> تُحدِّد الحزم اللازمة لخادوم Linux-Apache-MySQL-PHP.</li><li><strong>خادوم Mail</strong>: هذه المجموعة تُحدِّد حزمًا متنوعة مفيدة لخادوم بريد ذي غرضٍ عام.</li><li><strong>خادوم OpenSSH:</strong> تحدد الحزم التي يحتاج خادوم OpenSSH لوجودها.</li><li><strong>قاعدة بيانات PostgreSQL:</strong> هذه المجموعة تحدد حزم العميل والخادوم لقواعد بيانات PostgreSQL.</li><li><strong>خادوم طباعة:</strong> تُهيِّء هذه المجموعة نظامك ليكون خادوم طباعة.</li><li><strong>خادوم ملفات سامبا:</strong> تُهيِّء هذه المجموعة نظامك ليكون خادوم ملفات سامبا (Samba File Server)، الذي يفيد خصوصًا في الشبكات التي فيها أنظمة ويندوز ولينُكس معًا.</li><li><strong>خادوم جافا «تومكات»:</strong> تُثبِّت هذه المجموعة خادوم «Apache Tomcat»، والاعتماديات اللازمة لعمله.</li><li><strong>مضيف آلات وهمية:</strong> تتضمن الحزم اللازمة لتشغيل آلات وهمية تعتمد على KVM.</li><li><strong>تحديد الحزم يدويًا:</strong> تنفيذ <span style="font-family:courier new,courier,monospace;">aptitude</span> مما يسمح لك باختيار الحزم فرادى يدويًا.</li></ul><p dir="rtl">تُثبَّت مجموعات الحزم باستخدام الأداة <span style="font-family:courier new,courier,monospace;">tasksel</span>، أحد أهم الفروقات بين أوبنتو (أو دبيان) وغيرها من توزيعات غنو/لينُكس هي أن الحزم عندما تُثبَّت فإنها تُضبَط ضبطًا منطقيًا، وتسألك في بعض الأحيان عن المعلومات الإضافية المطلوبة؛ وبشكل مشابه، عند تثبيت مجموعة حزم فإن الحزم لا تثبت فقط بل تُعَدّ أيضًا لتوفير خدمة مندمجة جيدًا مع بعضها بعضًا.</p><p dir="rtl">تستطيع مشاهدة قائمة بمجموعات الحزم المتوفرة بإدخال الأمر الآتي في مِحَث الطرفية بعد أن تنتهي عملية التثبيت:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">tasksel --list-tasks</pre><p dir="rtl"><strong>ملاحظة:</strong> سيُعرَض أيضًا في الناتج مجموعات الحزم من التوزيعات الأخرى المبينة على أوبنتو، مثل كوبنتو (Kubuntu)، وايديوبونتو (Edubuntu)، لاحظ أيضًا أنك تستطيع استدعاء الأمر tasksel لوحده، الذي سيعرض لك قائمةً بمختلف مجموعات الحزم المتوفرة.</p><p dir="rtl">تستطيع معرفة الحزم المثبتة مع أي مجموعة باستخدام الخيار ‎<span style="font-family:courier new,courier,monospace;">--task-packages</span>؛ على سبيل المثال، لعرض الحزم المثبتة مع مجموعة الحزم الخاصة بخادوم DNS، فإننا ندخل الأمر الآتي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">tasksel --task-packages dns-server</pre><p dir="rtl">يجب أن يكون ناتج الأمر السابق:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">bind9-doc
bind9utils
bind9</pre><p dir="rtl">إذا لم تُثبِّت أيّة مجموعة حزم أثناء عملية التثبيت، لكنك مثلًا قررت أن تجعل خادوم LAMP الجديد عندك خادوم DNS أيضًا، فبإمكانك ببساطة إدراج قرص التثبيت وتنفيذ الأمر الآتي من الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo tasksel install dns-server</pre><h2 dir="rtl">الترقية</h2><p dir="rtl">هنالك عدة طرق للترقية من إصدارة أوبنتو لأخرى، سيعطيك هذا القسم لمحةً عن طريقة الترقية المستحسنة.</p><h3 dir="rtl">الأداة do-release-upgrade</h3><p dir="rtl">الطريقة المستحسنة لترقية نسخة الخادوم هي استخدام الأداة<span style="font-family:courier new,courier,monospace;"> do-release-upgrade</span>، التي هي جزءٌ من حزمة <span style="font-family:courier new,courier,monospace;">update-manager-core</span>، وليس لديها أيّة اعتماديات رسومية، وهي مثبَّتة تلقائيًا.</p><p dir="rtl">يمكن تحديث الأنظمة المبينة على دبيان باستخدام الأمر <span style="font-family:courier new,courier,monospace;">apt-get dist-upgrade</span>، لكن استخدام الأداة<span style="font-family:courier new,courier,monospace;"> do-release-upgrade</span> مستحسن ﻷن بإمكان تلك الأداة التعامل مع التغيرات في ضبط النظام، الذي قد يكون لازمًا في بعض الأحيان بين الإصدارات.</p><p dir="rtl">اكتب الأمر الآتي في مِحَث الطرفية للترقية إلى إصدارة أحدث:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">do-release-upgrade</pre><p dir="rtl">من الممكن استخدام <span style="font-family:courier new,courier,monospace;">do-release-upgrade</span> للترقية إلى إصدارة تطويرية من أوبنتو، أضف الخيار <span style="font-family:courier new,courier,monospace;">‎-d</span> لفعل ذلك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">do-release-upgrade -d</pre><p dir="rtl"><strong>تحذير: </strong>التحديث إلى إصدارة تطويرية هو أمر غير مستحسن في البيئات الإنتاجية.</p><p dir="rtl">ترجمة وبتصرّف لـ:</p><ul dir="rtl"><li><a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/preparing-to-install.html">Preparing to Install</a></li><li><a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/installing-from-cd.html">Installing from CD</a></li><li><a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/installing-upgrading.html">Upgrading</a></li></ul><p dir="rtl">من الدّليل الرّسمي لتنصيب أوبنتو على الخواديم.</p>
]]></description><guid isPermaLink="false">152</guid><pubDate>Tue, 08 Dec 2015 21:27:00 +0000</pubDate></item><item><title>&#x62A;&#x646;&#x635;&#x64A;&#x628; &#x634;&#x647;&#x627;&#x62F;&#x629; SSL &#x645;&#x62C;&#x627;&#x646;&#x64A;&#x629; &#x639;&#x628;&#x631; &#x62E;&#x62F;&#x645;&#x629; Let's encrypt &#x639;&#x644;&#x649; &#x62E;&#x627;&#x62F;&#x648;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/servers/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-ssl-%D9%85%D8%AC%D8%A7%D9%86%D9%8A%D8%A9-%D8%B9%D8%A8%D8%B1-%D8%AE%D8%AF%D9%85%D8%A9-lets-encrypt-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r151/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt.png.23ed714a1dcb910b808a9f301f6f516a.png" /></p>

<p dir="rtl">كصاحب أي موقع جدّي، فإن أمن زوّارك أو مستخدمي موقعك يجب أن يكون من أولى أولوياتك، ولعلنا كمديري مواقع لطالما أردنا أيقونة القفل تلك (أحيانا تكون خضراء) بجانب عنوان (URL) الموقع، تُشير إلى أن موقعنا آمن ويستخدم اتصالا مشفرًا بين الزائر والخادوم.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt.png.c497bf359958603a491182d3c99e44b8.png"><img data-fileid="8520" class="ipsImage ipsImage_thumbnailed" alt="lets-encrypt.thumb.png.496dd9ef769a238f7" src="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt.thumb.png.496dd9ef769a238f7fea43237e7ef875.png"></a></p><h2 dir="rtl">لحظة، ماهي شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>/<abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> أولا؟</h2><p dir="rtl"><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>/<abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> اختصارٌ لـِ Secure Socket Layer/Transport Layer Security وببساطة هو بروتوكول لتشفير نقل البيانات بين طرفين، في حالتنا هذه بين الخادوم والمستخدم (المتصفح)، ما يضيف ميزة الحماية على بروتوكول التصّفح HTTP، ومنه جاءت إضافة حرف S له فأصبح HTTPS.</p><h2 dir="rtl">لماذا؟</h2><p dir="rtl">بدون هذا التشفير، يتم استعمال بروتوكول التصفح العادي HTTP، وهو بروتوكول ذو طبيعة نقل بيانات في شكلها النصّي البحت. أمّا مع HTTPS فسيقوم المتصفح بتشفير البيانات أوّلا قبل إرسالها، ثم يتم فكّ تشفيرها لمّا تصل إلى الخادوم، فإن التقط أحدهم هذه البيانات وسط الطريق، لن يكون بإمكانه قراءتها ﻷنها مشفّرة.</p><p dir="rtl">تخيل أن لديك صفحة تسجيل دخول على موقعك (Login)، وموقعك لا يزال يستعمل HTTP، فإن حدث وأن كان أحد المتطفلين/المخترقين على نفس شبكة مُستخدمك (مثلا يتشارك معه نفس اتصال WiFi) والتقط هذا الأخير البيانات التي يرسلها مُستخدم موقعك، فسيعرف ماهو اسم المستخدم/بريده وكلمة مروره بكل سهولة ودون عناءٍ حتى.</p><p dir="rtl">لا يقتصر هذا على المتطفلين فقط، فقد يكون مزود الخدمة لديك (ISP) ممن يسجّل تحركات زبائنه وبالتالي يمكنه أيضا كشف بيانات الدخول أيضا. هذه أمثلة فقط فالخطر لا يُمكن حصره، فالأجدر سدّ هذا الباب.</p><p dir="rtl">بسبب هذا، نما في السنوات القليلة الماضية وعيٌ لدى مستخدمي الويب عموما، وجهات الويب المفتوح وحقوق المستخدم بضرورة تعميم استعمال بروتوكول HTTPS وتسهيل عملية تفعيله عوض تعقيدات التنصيب وتكلفة الشراء الباهضة.</p><p dir="rtl">حيث قبل أيام قليلة فقط، كان الحصول على شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>/<abbr title="Transport Layer Security | بروتوكول أمن طبقة النقل">TLS</abbr> أمرًا عسيرًا وقد يتطلب ميزانية مالية سنوية معتبرة زائدة على صاحب الموقع. فإما أن تشتري شهادة من طرف أحد الهيئات العالمية المعترف بها من طرف أغلب المتصفحات (مثل Comodo و Symantec)، أو تطلب شهادة شخصية مجانية واحدة فقط غير صالحة للاستخدام التجاري من عند StartSSL، أو تمر عبر خدمة Cloudflare التي تنصب نفسها وسطا بين خادوم موقعك وزوَاره حتى تنعم بـ <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> مجاني.</p><h2 dir="rtl">مبادرة Let's encrypt</h2><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-group.png.3af51fa4c3a5d959c4a3b9a9be488fde.png"><img data-fileid="8474" class="ipsImage ipsImage_thumbnailed" alt="lets-encrypt-group.thumb.png.140db8e86aa" src="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-group.thumb.png.140db8e86aa4d7419f4d076fdc1196b8.png"></a></p><p dir="rtl"><span style="line-height: 22.4px;">من منطلق الوعي الحاصل بضرورة توفير شهادات <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> بطريقة سهلة، مجانية، مفتوحة وتلقائية، <a rel="external nofollow" href="https://letsencrypt.org/">بادرت كل من Mozilla, Facebook, Cisco، منظمة لينكس وغيرها</a> بإنشاء هيئة ذات سلطة توليد، تفعيل وإمضاء شهادات <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>، وقد نجحت في جعلها جهة مُعترفًا بها من طرف متصفحات الويب، وأطلقتها مؤخرا لعامة الناس كمرحلة Beta لكنها فعّالة ويمكن التعويل عليها من الآن فصاعدا.</span></p><h2 dir="rtl">تحميل عميل أتمتة طلب شهادات Let's encrypt </h2><p dir="rtl"><strong>ملاحظة</strong>: حاليا، أداة العميل (client tool) تدعم فقط أنظمة يونكس، ولا يوجد دعم لخواديم Windows بعد.</p><p dir="rtl"><strong>أولا</strong>، يجب طبعا الدخول على خادومك عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>، إن كنت لا تعرف كيفية القيام بذلك، <a href="https://academy.hsoub.com/devops/servers/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%88%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-ssh-r74/">فأكاديمية حسوب تأخذ بيدك</a>. تأكد أنك تملك صلاحيات root.</p><p dir="rtl"><strong>ثانيا</strong>، عليك بتنصيب <span style="font-family:courier new,courier,monospace;">git</span>، إن كنت على Ubuntu أو Debian مثلا فقم بالأمر التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install git</pre><p dir="rtl">أما على Fedora/Centos:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo yum install git</pre><p dir="rtl">وإن كنت على Arch Linux يكفي كتابة الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo pacman -S git</pre><p dir="rtl"><strong>ثالثا</strong>: حمّل عميل Let's encrypt على خادومك عبر كتابة هذه الأوامر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">git clone https://github.com/letsencrypt/letsencrypt
</pre><h2 dir="rtl">طلب وتنصيب الشهادة لخادوم nginx</h2><p dir="rtl"><strong>ملاحظة 1</strong>: عليك توقيف خادوم nginx للحظات لغاية انتهاء التنصيب، العميل لا يدعم توقيف وإعادة تشعيل nginx بشكل تلقائي بعد، لذلك يجب القيام بهذا يدويا.</p><p dir="rtl">يمكنك توقيف خادوم nginx بكتابة الأمر التالي على Debian ومشتقالتها:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nginx stop</pre><p dir="rtl">أو عبر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo systemctl stop nginx</pre><p dir="rtl">للأنظمة التي تعتمد على systemd.</p><p dir="rtl">إن كنت تجهل كيفية التعامل مع خادوم nginx <a href="https://academy.hsoub.com/devops/web-servers/nginx/">فإليك قسما كاملا على أكاديمية حسوب يهتم بهذا الجانب</a>، وأنصحك أن تبدأ <a href="https://academy.hsoub.com/devops/web-servers/nginx/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8%D8%8C-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%88%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-nginx-%D9%83%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D9%88%D9%8A%D8%A8-r1/">بهذا الدرس</a>، عليك أن <a href="https://academy.hsoub.com/devops/web-servers/nginx/%D9%81%D9%87%D9%85-%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D9%91%D8%A9-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D9%81%D9%8A-%D9%83%D9%8F%D8%AA%D9%84-server-%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-nginx-r66/">تألف إعادات</a> nginx و<a href="https://academy.hsoub.com/devops/web-servers/nginx/%D9%81%D9%87%D9%85-%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D9%91%D8%A9-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D9%91%D8%A7%D8%B1-%D9%81%D9%8A-%D9%83%D8%AA%D9%84%D8%A9-location-%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-nginx-r68/">كيفية عملها</a> قبل المواصلة مع هذا الدرس.</p><p dir="rtl"><strong>ملاحظة 2</strong>: أي إعداد خاطئ في هذه المرحلة قد يسبب توقف موقعك لمدة مُعتبرة، يجدر بك أولا معرفة مبادئ التعامل مع nginx.</p><p dir="rtl">أولا يجب الدخول إلى حيث قمنا بتحميل عميل let's encrypt:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">cd letsencrypt</pre><p dir="rtl">ثم طلب الشهادة بهذ الطريقة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com
</pre><p dir="rtl">الأمر أعلاه يقوم بالتالي:</p><ul dir="rtl"><li><strong><span style="font-family:courier new,courier,monospace;">sudo ./letsencrypt-auto:</span></strong> تشغيل عميل طلب الشهادة بصلاحيات root.</li><li><span style="font-family:courier new,courier,monospace;"><strong>certonly</strong></span>: أي أننا نطلب فقط الشهادة لوحدها دون التنصيب التلقائي لها على nginx أو ما شابه (كون هذه الخاصية لا تزال تجريبية ولا يمكن التعويل عليها).</li><li><strong><span style="font-family:courier new,courier,monospace;">standalone--</span>:</strong> أي استعمل خادوم ويب خاص يتم تشغيله للاستماع على كل من منفذي 80 و 433 لتوثيق الشهادة من طرف سلطة let's encrypt (ضروري، ولهذا وجب توقيف nginx أولا).</li><li><span style="font-family:courier new,courier,monospace;"><strong>d-:</strong></span> اختصارًا لـ domain أي النطاق أو النطاقات الفرعية التي ستكون هذه الشهادة صالحة لها.</li></ul><p dir="rtl"><strong>ملاحظة</strong>: لا يمكن حاليا تمرير <strong><span style="font-family:courier new,courier,monospace;">example.com.*</span></strong> مثلا إلى تعليمة <span style="font-family:courier new,courier,monospace;"><strong>d-</strong></span> حيث لم يتم بعد دعم wildcard domain، أي النطاقات التعميمية، لكن من السهل إضافة دعم أي نطاق فرعي آخر عبر إضافته إلى تعليمة <span style="font-family:courier new,courier,monospace;">d-</span>.</p><p dir="rtl">ستجلب الأداة بعض الاعتماديات اللازمة وتنصبها على النظام ثم تُظهِر لك الرسالة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-1.png.8c6b25bd81a7eb36ba06d002dcea2e8a.png"><img data-fileid="8485" class="ipsImage ipsImage_thumbnailed" alt="lets-encrypt-1.thumb.png.1e7f4d0d5fbe31a" src="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-1.thumb.png.1e7f4d0d5fbe31a4aac5ff2df61c26f9.png"></a></p><p dir="rtl">أدخل عنوان بريدك الالكتروني صحيحًا، ﻷنه سيكون مهما لاستعادة المفاتيح الضائعة أولإشعارك بأمور مهمة خاصة بشهادتك (كقرب موعد انتهاء صلاحيتها). ثم اضغط على مفتاح Enter. ستظهر بعدها إتفاقية الاستحدام -كما هو ظاهر أدناه- قم بقراءتها ثم الموافقة عليها:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-2.png.2a53c1e45ad7eb615b99080317e0791b.png"><img data-fileid="8491" class="ipsImage ipsImage_thumbnailed" alt="lets-encrypt-2.thumb.png.bf7fc892f3465a7" src="https://academy.hsoub.com/uploads/monthly_2015_12/lets-encrypt-2.thumb.png.bf7fc892f3465a757c8799688da7aff7.png"></a></p><p dir="rtl">سيباشر بعدها العميل بطلب الشهادة وتوثيقها، لتظهر أخيرًا الرسالة التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
   expire on 2016-03-04. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
</pre><p dir="rtl">كما هو موضّح في الرسالة، فقد تم تنصيب الشهادة في مسار <span style="font-family:courier new,courier,monospace;">/etc/letsencrypt/live/<span style="color:#FF8C00;">example.com</span>/</span> حيث <span style="font-family:courier new,courier,monospace;">example.com</span> هو اسم نطاق موقعك.</p><p dir="rtl">يمكن تنصيب الشهادة على خادوم nginx بسهولة عبر تحرير الملف الخاص بموقعك وإضافة بضعة سطور، كالتالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/nginx/sites-available/<span style="color:#FF8C00;">www.example.com</span></pre><p dir="rtl">حيث <span style="font-family:courier new,courier,monospace;">www.example.com</span> هو اسم ملف، ويجب تغييره باسم ملف إعدادات موقعك مع nginx. ثم إضافة الأسطر التالية في كتلة <span style="font-family:courier new,courier,monospace;">server</span> ضمن ملف الإعدادات:</p><pre data-pbcklang="javascript" data-pbcktabsize="4" class="javascript ipsCode prettyprint">http {
  server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
    ... // باقي الإعدادات تجاهلها
  }
}</pre><p dir="rtl">قم بإعادة تشغيل خادوم nginx عبر الأمر التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service nginx start</pre><p dir="rtl">إن كنت على أحد الأنظمة التي تستعمل systemd فقد يكون عليك إعادة تشغيل nginx بالأمر التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo systemctl start nginx</pre><p dir="rtl">تهانينا لك شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> مجانية صالحة لمدة 90 يوم، يمكنك طبعا تجديدها بتشغيل نفس الأمر، كما يمكنك أتمتة عملية التجديد عبر برمجتها كمهمة cron job عبر crontab (كل شهر مثلا لتفادي أي مشكل).</p><h2 dir="rtl">تنصيب الشهادة على خادوم apache</h2><p dir="rtl">يمكن طلب الشهادة بنفس الطريقة ثم فقط تنصيبها يدويا على خادوم Apache كما فعلنا مع nginx، <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-ssl-%D9%85%D9%86-%D8%B3%D9%84%D8%B7%D8%A9-%D8%B4%D9%87%D8%A7%D8%AF%D8%A7%D8%AA-%D8%AA%D8%AC%D8%A7%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%AD%D8%B5%D9%88%D9%84-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-%D9%88%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA%D9%87%D8%A7-r148/">يمكنك اتباع الدرس التالي من على أكاديمية حسوب لمعرفة كيفية القيام بذلك</a>، أما إن كنت على أحد أنظمة Debian أو مشتقاتها (مثل Ubuntu) فيمكنك أتمتة العملية بأكملها (دون الحاجة لتوقيف الخادوم) عبر تشغيل الأمر التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo ./letsencrypt-auto --apache</pre><p dir="rtl">سيتم سؤالك طبعا عن أسماء النطاقات، بريدك الالكتروني وشروط الخدمة. أجب عليها واترك الأداة تعمل لغاية ظهور رسالة التهنئة.</p><p dir="rtl"><strong>ملاحظة</strong>:</p><p dir="rtl">في حين احتاج nginx لملفي<span style="font-family:courier new,courier,monospace;"> fullchain.pem</span> و <span style="font-family:courier new,courier,monospace;">privkey.pem</span> فإن Apache يحتاج لملفي:</p><ul dir="rtl"><li><span style="font-family:courier new,courier,monospace;">chain.pem</span> لتعلمية SSLCertificateChainFile.</li><li>و<span style="font-family:courier new,courier,monospace;">privkey.pem</span> لتعليمة  SSLCertificateKeyFile.</li></ul><p>بهذا نكون قد تحصلنا على شهادتنا، يمكن إلقاء نظرة على <a rel="external nofollow" href="https://letsencrypt.readthedocs.org/en/latest/">التوثيق الرسمي</a> لتخصيص الأداة وزيادة نسبة الأتمتة وكيفية التجديد التلقائي.</p><p>على أمل أن نجعل الويب النّاطق بالعربية أكثر أمنا وخصوصية!</p>
]]></description><guid isPermaLink="false">151</guid><pubDate>Sun, 06 Dec 2015 07:02:00 +0000</pubDate></item></channel></rss>
