Product SiteDocumentation Site

8.9. الإعدادات الأخرى: مزامنة الوقت، السجلات، مشاركة الوصول...

تفيدك معرفة العناصر العديدة المذكورة في هذا القسم إذا كنت تريد إتقان جميع نواحي ضبط نظم غنو/لينكس. لكننا سنشرحها باختصار على أي حال، وسوف نشير غالباً للوثائق المناسبة.

8.9.1. المنطقة الزمنية

المنطقة الزمنية، التي تضبط أثناء التثبيت الأولي، هي أحد إعدادات الحزمة tzdata. لتعديلها، استخدم الأمر dpkg-reconfigure tzdata، الذي يسمح لك باختيار المنطقة الزمنية التي تريد استخدامها بطريقة تفاعلية. تُخزَّن الإعدادات في الملف /etc/timezone. بالإضافة لذلك، ينسخ الملف الموافق للمنطقة المختارة من المجلد /usr/share/zoneinfo إلى /etc/localtime؛ يحوي هذا الملف القواعد التي تحكم التواريخ التي يعتمد فيها التوقيت الصيفي، في الدول التي تستخدم هذا التوقيت.
عندما تحتاج تعديل المنطقة الزمنية مؤقتاً، استخدم متغير البيئة TZ، فأولوية هذا المتغير أعلى من القيمة الافتراضية المعطاة للنظام.
$ date
Thu Feb 19 11:25:18 CET 2015
$ TZ="Pacific/Honolulu" date
Thu Feb 19 00:25:21 HST 2015

8.9.2. مزامنة التوقيت

مزامنة التوقيت، التي يبدو استخدامها على حاسوب واحد إسرافاً، مهمة جداً في الشبكات. بما أن المستخدمين لا يستطيعون تعديل التاريخ والوقت، فمن المهم الحفاظ على دقة هذه المعلومات لمنع الارتباك. بالإضافة لذلك، تسمح مزامنة جميع الحواسيب على الشبكة بمقاطعة معلومات السجلات من عدة أجهزة. وبالتالي، إذا حدث هجوم، يسهل إعادة بناء التسلسل الزمني للأحداث التي جرت على الأجهزة المختلفة التي شملها الاختراق. كما أن البيانات التي تجمعها من عدة أجهزة للأغراض الإحصائية لن تفيد كثيراً إذا لم تكن متزامنة.

8.9.2.1. لمحطات العمل

بما أن محطات العمل يعاد تشغيلها باستمرار (حتى لو كان ذلك لتوفير الطاقة فقط)، تكفي مزامنتها مع NTP عند الإقلاع. لعمل ذلك، فقط ثبّت الحزمة ntpdate. يمكنك تغيير مخدم NTP المستعمل إذا احتجت ذلك عبر تعديل الملف /etc/default/ntpdate.

8.9.2.2. للمخدمات

لا يعاد تشغيل المخدمات إلا نادراً، ومن المهم جداً أن تكون ساعة النظام فيها صحيحة. للحفاظ على الوقت دقيقاً دوماً عليك تثبيت مخدم NTP محلي، وهذه الخدمة توفرها الحزمة ntp. حسب الإعدادات الافتراضية، سوف يتزامن المخدم مع pool.ntp.org وسيعطي الوقت رداً على الطلبات التي ترد من الشبكة المحلية. يمكنك ضبطه من خلال تعديل الملف /etc/ntp.conf، أكثر التعديلات أهمية هي مخدم NTP الذي يشير إليه. إذا كانت الشبكة تحوي مخدمات كثيرة، فقد يفيدك تجهيز مخدم NTP محلي واحد يتزامن مع المخدمات العامة واستخدامه كمصدر لضبط الوقت على المخدمات الأخرى في الشبكة.

8.9.3. تدوير سجلات الملفات

قد تكبر ملفات السجلات، سريعاً، ومن الضروري أرشفتها. أكثر الأساليب شيوعاً هو الأرشيف الدوّار: حيث تؤرشف ملفات السجلات بصورة منتظمة، ويحتفظ فقط بآخر X من الأرشيفات. يتبع logrotate، وهو البرنامج المسؤول عن هذا التدوير، التعليمات التوجيهية المعطاة في الملف /etc/logrotate.conf وجميع الملفات في المجلد /etc/logrotate.d/. يستطيع مدير النظام تعديل هذه الملفات، إذا أراد تخصيص سياسة تدوير السجلات التي تعتمدها دبيان. تشرح صفحة الدليل logrotate(1)‎ جميع الخيارات المتاحة في ملفات الإعداد هذه. قد تريد زيادة عدد الملفات التي يحتفظ بها في دورة السجلات، أو نقل ملفات السجلات إلى مجلد معين خاص بأرشفة السجلات بدلاً من حذفها. يمكنك أيضاً إرسالها بالبريد الإلكتروني لأرشفتها في مكان آخر.
يُنفِّذ برنامج الجدولة cron (المشروح في قسم 9.7, “جدولة المهام باستخدام cron وatd) برنامج logrotate يومياً.

8.9.4. تشارك صلاحيات الإدارة

في كثير من الأحيان، يعمل عدة مديري نظم على الشبكة نفسها. تشارك كلمة سر الجذر ليس حلاً أنيقاً، كما يفتح باب إساءة استخدام الصلاحيات نتيجة ضياع شخصية أصحاب التعديلات في هذا النوع من التشارك. يكمن حل هذه المشكلة في البرنامج sudo، الذي يسمح لمستخدمين محددين تنفيذ أوامر محددة بصلاحيات خاصة. في أكثر الحالات شيوعاً، يسمح sudo لمستخدم ثقة بتنفيذ أي أمر بصلاحية الجذر. لعمل ذلك، يستدعي المستخدم الأمر sudo command ويوثق شخصيته باستخدام كلمة سره الخاصة.
عند تثبيت الحزمة sudo، سوف تعطي صلاحيات الجذر الكاملة لأعضاء المجموعة sudo. لتوكيل صلاحيات أخرى، يجب أن يستخدم مدير النظام الأمر visudo، الذي يسمح له بتعديل ملف الضبط /etc/sudoers (هنا أيضاً، سوف يستدعى المحرر vi أو أي محرر آخر يحدده متغير البيئة EDITOR). تسمح إضافة سطر يحوي username ALL=(ALL) ALL للمستخدم المذكور بتنفيذ أي أمر بصلاحية الجذر.
تسمح الإعدادات الأعقد من هذه بالسماح بتنفيذ أوامر محددة لمستخدمين معينين. جميع تفاصيل الاحتمالات الممكنة معطاة في صفحة الدليل sudoers(5)‎.

8.9.5. قائمة نقاط الربط

يحوي الملف /etc/fstab قائمة بجميع عمليات الربط التي تحدث إما آلياً عند الإقلاع أو يدوياً بالنسبة للأجهزة القابلة للإزالة. كل نقطة ربط توصف بسطر فيه عدة حقول تفصلها مسافات:
  • الجهاز الذي سيربط: قد يكون هذا قسماً محلياً (قرص صلب، CD-ROM) أو نظام ملفات بعيد (مثل NFS).
    يستبدل هذ الحقل في أحيان كثيرة برقم التعريف الفريد لنظام الملفات (الذي يمكنك معرفته باستخدام blkid device) تسبقه UUID=. هذا يحمي من تغيّرات اسم الجهاز في حال إضافة أو إزالة الأقراص، أو إذا اكتشفت الأقراص في ترتيب مختلف.
  • نقطة الربط: الموقع على نظام الملفات المحلي حيث سيربط الجهاز، أو نظام الملفات البعيد، أو القسم.
  • النوع: يحدد هذا الحقل نظام الملفات المستخدم على الجهاز البعيد. بعض الأمثلة تشمل ext4،‏ ext3،‏ vfat،‏ ntfs،‏ btrfs،‏ xfs.
    هناك قائمة كاملة بنظم الملفات المعروفة في صفحة الدليل mount(8)‎. القيمة الخاصة swap هي لأقسام التبديل (الذاكرة الظاهرية)؛ والقيمة الخاصة auto تطلب من البرنامج mount التعرف على نظام الملفات آلياً (وهذا مفيد خصوصاً مع قارئات الأقراص ومفاتيح USB، لأن كل منها قد يحوي نظام ملفات مختلف)؛
  • خيارات: هناك خيارات كثيرة، حسب نظام الملفات، وهي موثقة في صفحة الدليل mount. أكثر الخيارات شيوعاً هي
    • rw أو ro، التي تعني أن الجهاز سيربط مع صلاحيات القراءة والكتابة أو صلاحيات القراءة فقط على الترتيب.
    • noauto يعطل الربط الآلي عند الإقلاع.
    • nofail يسمح بمتابعة الإقلاع حتى في حال عدم وجود الجهاز. تأكد من إضافة هذا الخيار للأجهزة الخارجية التي قد تكون مفصولة عند الإقلاع، لأن systemd لا يسمح لعملية الإقلاع بالاكتمال إلى نهايتها ما لم يضمن تماماً ربط جميع نقاط الربط التي يجب ربطها تلقائياً. لاحظ أنك تستطيع جمع هذا الخيار مع x-systemd.device-timeout=5s لإخبار systemd بعدم انتظار ظهور الجهاز لأكثر من 5 ثوان (انظر systemd.mount(5)‎).
    • user يسمح لكل المستخدمين بربط نظام الملفات هذا (بدون هذا الخيار لن يسمح إلا للمستخدم الجذر بإجراء هذه العملية).
    • defaults يعني مجموعة الخيارات الافتراضية: rw،‏ suid،‏ dev،‏ exec،‏ auto،‏ nouser و async ويمكن تعطي أي منها بعد خيار defaults عبر إضافة nosuid،‏ nodev وغيرها لتعطيل خياري suid،‏ dev الخ. إضافة الخيار user يعيد تفعيله، إذ أن defaults تتضمن خيار nouser.
  • النسخ الاحتياطي: هذا الحقل يأخذ القيمة 0 دائماً تقريباً. إذا أخذ القيمة 1، فسوف يشير للأداة dump بان القسم يحوي بيانات يجب نسخها احتياطياً.
  • ترتيب الفحص: يبين هذا الحقل الأخير إذا كان يجب فحص نظام الملفات عند الإقلاع، والترتيب الذي يجب تنفيذ هذا الفحص به. إذا أخذ القيمة 0، فلن يجرى أي فحص. يجب أن يأخذ نظام الملفات الجذر القيمة 1، بينما تحصل نظم الملفات الدائمة الأخرى على القيمة 2.

مثال 8.5. مثال عن الملف /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0
المدخلة الخيرة في هذا المثال تخص نظام ملفات شبكي (NFS): حيث رُبِطَ المجلد /shared/ من المخدم arrakis مع المجلد /shared/ على الجهاز المحلي. صيغة الملف /etc/fstab موثّقة في صفحة الدليل fstab(5)‎.

8.9.6. locate و updatedb

يستطيع الأمر locate العثور على موقع ملف عندما تعرف جزءاً من اسمه فقط. يعطي هذا الأمر نتائج شبه آنية، لأنه يبحث في قاعدة بيانات تحوي جميع مواقع الملفات على النظام؛ تُحدَّث قاعدة البيانات هذه يومياً بالأمر updatedb. هناك تنويعات عديدة للأمر locate وقد اختارت دبيان mlocate لنظامها القياسي.
mlocate ذكي بما يكفي ليعيد الملفات التي يُسمَح للمستخدم الذي يستدعيه بالوصول إليها فقط رغم أنه يعتمد على قاعدة بيانات تحوي معلومات عن جميع الملفات على النظام (حيث يعمل أمر updatedb المرتبط معه بصلاحيات الجذر). لزيادة الأمان، يستطيع مدير النظام استخدام PRUNEDPATHS في الملف /etc/updatedb.conf لاستثناء بعض المجلدات من عملية الفهرسة.