Product SiteDocumentation Site

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

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

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

The timezone, configured during initial installation, is a configuration item for the tzdata package. To modify it, use the dpkg-reconfigure tzdata command, which allows you to choose the timezone to be used in an interactive manner. Its configuration is stored in the /etc/timezone file. Additionally, /etc/localtime becomes a symbolic link to the corresponding file in the /usr/share/zoneinfo; the file that contains the rules governing the dates where daylight saving time (DST) is active, for countries that use it.
عندما تحتاج تعديل المنطقة الزمنية مؤقتاً، استخدم متغير البيئة TZ، فأولوية هذا المتغير أعلى من القيمة الافتراضية المعطاة للنظام.
$ date
Mon Jul 29 07:53:36 PM EDT 2024
$ TZ="Pacific/Honolulu" date
Mon Jul 29 01:54:00 PM HST 2024

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

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

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

Since work stations are regularly rebooted (even if only to save energy), synchronizing them by NTP at boot is enough. To do so, simply install either the ntpdate or the systemd-timesyncd package. You can then change the NTP server used if needed by modifying the /etc/default/ntpdate or the /etc/systemd/timesyncd.conf file.

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 ويوثق شخصيته باستخدام كلمة سره الخاصة.
When installed, the sudo package gives full root rights to members of the sudo Unix group. To delegate other rights, the administrator can use the visudo command, which allows them to modify the /etc/sudoers configuration file (here again, this will invoke the vi editor, or any other editor indicated in the EDITOR environment variable). Alternatively, they might put rules in small files in /etc/sudoers.d/ with the file permissions 0440 as long as this directory is included by /etc/sudoers via @includedir /etc/sudoers.d, which is the default for Debian. Adding a line with username ALL=(ALL) ALL allows the user in question to execute any command as root. The permissions and syntax of all files can be verified with the visudo -c command.
More sophisticated configurations allow authorization of only specific commands to specific users. All the details of the various possibilities are given in the sudoers(5) manual page.

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

The /etc/fstab file gives a list of all possible mounts that happen either automatically on boot or manually for removable storage devices. Each mount point is described by a line with several space-separated fields:
  • file system: this indicates where the filesystem to be mounted can be found, it can be a local device (hard drive partition, CD-ROM) or a remote filesystem (such as NFS or even SSHFS).
    This field is frequently replaced with the unique ID of the filesystem (which you can determine with blkid device) prefixed with UUID=. This guards against a change in the name of the device in the event of addition or removal of disks, or if disks are detected in a different order. قسم 8.8.1, “التعرف على الأقراص” covers this topic in more detail.
  • نقطة الربط: الموقع على نظام الملفات المحلي حيث سيربط الجهاز، أو نظام الملفات البعيد، أو القسم.
  • النوع: يحدد هذا الحقل نظام الملفات المستخدم على الجهاز البعيد. بعض الأمثلة تشمل ext4،‏ ext3،‏ vfat،‏ ntfs،‏ btrfs،‏ xfs.
    A complete list of known filesystems is available in the mount(8) manual page. The swap special value is for swap partitions; the auto special value tells the mount program to automatically detect the filesystem (which is especially useful for disk readers and USB keys, since each one might have a different filesystem);
  • خيارات: هناك خيارات كثيرة، حسب نظام الملفات، وهي موثقة في صفحة الدليل 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.
  • dump: this field is almost always set to 0 and kind of a relic. When it is greater then zero, it tells the dump tool that the partition contains data that is to be backed up frequently. The tool supports Ext2/3/4 filesystems only and will use the value here when run via dump -W or dump -w to determine which partitions need to be backed up. Consider the examples in /usr/share/doc/dump/examples/ if you want to use this feature. But there are better alternatives to backup a filesystem, like fsarchiver.
  • pass: this last field indicates whether the integrity of the filesystem should be checked on boot, and in which order this check should be executed. If it is 0, no check is conducted. The root filesystem should have the value 1, while other permanent filesystems get the value 2.

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

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# systemd generates mount units based on this file, see systemd.mount(5).
# Please run 'systemctl daemon-reload' after making changes here.
#
# <file system>                           <mount point>   <type>      <options>         <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=7a250fb8-c16d-4a4e-9808-ec08ae92b6c6 /               ext4        errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=13f367ae-dbaf-40ed-85c0-4072a2ebe426 none            swap        sw                0       0
/dev/sr0                                  /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
The last entry in the example corresponds to a network filesystem (NFS): the /shared/ directory on the arrakis server is mounted at /shared/ on the local machine.
The format of the /etc/fstab file is documented in the fstab(5) manual page.

8.9.6. locate و updatedb

The locate command can find the location of a file when you only know part of the name. It sends a result almost instantaneously, since it consults a database that stores the location of all the files on the system; this database is updated daily by the updatedb command. There are multiple implementations of the locate command and Debian picked mlocate for its standard system. If you want to consider an alternative, you can try plocate which provides the same command line options and can be considered a drop-in replacement.
locate is smart enough to only return files which are accessible to the user running the command even though it uses a database that knows about all files on the system (since its updatedb implementation runs with root rights). For extra safety, the administrator can use PRUNEDPATHS in /etc/updatedb.conf to exclude some directories from being indexed.