SYSTEMD-SYSTEM.CONF(5)

الاسم
systemd-system.conf، system.conf.d، systemd-user.conf، user.conf.d - ملفات تهيئة مدير خدمة النظام والجلسة

موجز

/etc/systemd/system.conf, /run/systemd/system.conf, /usr/lib/systemd/system.conf, /etc/systemd/system.conf.d/*.conf, /run/systemd/system.conf.d/*.conf, /usr/lib/systemd/system.conf.d/*.conf

~/.config/systemd/user.conf, /etc/systemd/user.conf, /run/systemd/user.conf, /usr/lib/systemd/user.conf, /etc/systemd/user.conf.d/*.conf, /run/systemd/user.conf.d/*.conf, /usr/lib/systemd/user.conf.d/*.conf

الوصف

عند التشغيل كمثيل نظام، يفسر systemd ملف التهيئة system.conf والملفات في أدلة system.conf.d؛ وعند التشغيل كمثيل مستخدم، يفسر ملف التهيئة user.conf (حسب الأولوية، في الدليل الرئيسي للمستخدم وتحت /etc/systemd/، /run/systemd/، و /usr/lib/systemd/) والملفات في أدلة user.conf.d. تحتوي ملفات التهيئة هذه على بعض الإعدادات التي تتحكم في عمليات المدير الأساسية.

انظر systemd.syntax(7) للحصول على وصف عام للصياغة.

أدلة الضبط والأسبقية

يُضبط التشكيل المبدئي أثناء التجميع، لذا لا يلزم التشكيل إلا عند الحاجة للانحراف عن تلك القيم المبدئية. يُحمل ملف التشكيل الرئيس من أحد الأدلة المدرجة حسب ترتيب الأولوية، ويُستخدم أول ملف يُعثر عليه فقط: /etc/systemd/، و /run/systemd/، و /usr/local/lib/systemd/ [1]، و /usr/lib/systemd/. تحتوي نسخة المورد من الملف على مدخلات مُعلقة تظهر القيم المبدئية كدليل للمدير. يمكن أيضًا إنشاء تجاوزات محلية عن طريق إنشاء ملفات تكميلية (drop-ins)، كما هو موضح أدناه. يمكن أيضًا تحرير ملف التشكيل الرئيس لهذا الغرض (أو نسخة في /etc/ إذا كانت مشحونة تحت /usr/)، ومع ذلك يوصى باستخدام الملفات التكميلية للتشكيل المحلي بدلاً من إجراء تعديلات على ملف التشكيل الرئيس.

بالإضافة إلى ملف الإعداد الرئيس، تُقرأ قصاصات الإعداد الإضافية من /usr/lib/systemd/*.conf.d/ و /usr/local/lib/systemd/*.conf.d/ و /etc/systemd/*.conf.d/. لهذه الإضافات أولوية أعلى وتتجاوز ملف الإعداد الرئيس. تُفرز الملفات في الأدلة الفرعية للإعداد *.conf.d/ حسب أسماء ملفاتها بترتيب معجمي، بغض النظر عن الدليل الفرعي الذي توجد فيه. عندما تحدد ملفات متعددة نفس الخيار، بالنسبة للخيارات التي تقبل قيمة واحدة فقط، فإن المدخلة في الملف الأخير في الترتيب هي التي تسود، وبالنسبة للخيارات التي تقبل قائمة من القيم، تُجمع المدخلات كما تظهر في الملفات المرتبة.

عندما تحتاج الحزم إلى تخصيص الضبط، يمكنها تثبيت ملفات تكميلية (drop-ins) تحت /usr/. تُحجز الملفات في /etc/ لمدير النظام المحلي، الذي قد يستخدم هذا المنطق لتخطي ملفات الضبط المثبتة من قبل حزم المورّد. يجب استخدام الملفات التكميلية لتخطي ملفات الحزم التكميلية، بما أن ملف الضبط الرئيس له أسبقية أدنى. ويُوصى ببدء جميع أسماء الملفات في تلك المجلدات الفرعية برقم من خانتين وواصلة، لتبسيط الترتيب. كما يحدد هذا مفهوم أولويات الملفات التكميلية للسماح لموردي أنظمة التشغيل بشحن ملفات تكميلية ضمن نطاق محدد أدنى من النطاق الذي يستخدمه المستخدمون. وهذا من شأنه أن يقلل من خطر تخطي ملفات الحزم التكميلية للملفات التكميلية التي حددها المستخدمون عرضًا. ويُوصى باستخدام النطاق 10-40 للملفات التكميلية في /usr/ والنطاق 60-90 للملفات التكميلية في /etc/ و /run/، للتأكد من أن الملفات التكميلية المحلية والعابرة تأخذ الأولوية على الملفات التكميلية التي يشحنها مورد نظام التشغيل.

لتعطيل ملف تشكيل مقدم من المورد، فإن الطريقة الموصى بها هي وضع وصلة رمزية إلى /dev/null في دليل التشكيل في /etc/، بنفس اسم ملف تشكيل المورد.

الخيارات

تكوّن جميع الخيارات في القسم [Manager]:

LogColor=, LogLevel=, LogLocation=, LogTarget=, LogTime=, DumpCore=yes, CrashChangeVT=no, CrashShell=no, CrashAction=freeze, ShowStatus=yes, DefaultStandardOutput=journal, DefaultStandardError=inherit
    يكوّن معلمات مختلفة لعملية المدير الأساسية. قد تتجاوز هذه الخيارات وسائط سطر أوامر العملية والنواة المعنية. انظر systemd(1) للتفاصيل.

    أُضيف في الإصدارة 198.

CtrlAltDelBurstAction=
    يحدد الإجراء الذي يُنفذ إذا ضغط المستخدم على Ctrl-Alt-Delete أكثر من 7 مرات في 2 ثانية. يمكن ضبطه على "reboot-force"، "poweroff-force"، "reboot-immediate"، "poweroff-immediate" أو تعطيله بـ "none". المبدئي هو "reboot-force".

    أُضيف في الإصدار 232.

StatusUnitFormat=
    يأخذ name أو description أو combined كقيمة. إذا كان name، سيستخدم مدير النظام أسماء الوحدات في رسائل الحالة (مثل "systemd-journald.service")، بدلاً من الأوصاف الأطول والأكثر إفادة المضبوطة بـ Description= (مثل "Journal Logging Service"). إذا كان combined، سيستخدم مدير النظام كلاً من أسماء الوحدات وأوصافها في رسائل الحالة (مثل "systemd-journald.service - Journal Logging Service").

    انظر systemd.unit(5) للتفاصيل حول أسماء الوحدات و Description=.

    أُضيف في الإصدار 243.

DefaultTimerAccuracySec=
    يضبط الدقة المبدئية لوحدات المؤقت. يتحكم هذا في المبدئي العام لإعداد AccuracySec= لوحدات المؤقت، انظر systemd.timer(5) للتفاصيل. يتجاوز AccuracySec= المضبوط في وحدات فردية المبدئي العام للوحدة المحددة. المبدئي هو 1 دقيقة. لاحظ أن دقة وحدات المؤقت تتأثر أيضًا بتراخي المؤقت المكوّن لـ PID 1، انظر TimerSlackNSec= أعلاه.

    أُضيف في الإصدارة 212.

إدارة الموارد

TimerSlackNSec=
    يضبط تراخي المؤقت بالنانو ثانية لـ PID 1، الموروث بواسطة جميع العمليات المنفذة، ما لم يُتجاوز بشكل فردي، مثلاً بإعداد TimerSlackNSec= في وحدات الخدمة (للتفاصيل انظر systemd.exec(5)). يتحكم تراخي المؤقت في دقة التنبيهات التي تطلقها مؤقتات النظام. انظر prctl(2) لمزيد من المعلومات. لاحظ أنه على عكس معظم تعريفات الفترات الزمنية الأخرى، تأخذ هذه المعلمة قيمة صحيحة بالنانو ثانية إذا لم تُحدد وحدة. تُفهم وحدات الوقت المعتادة أيضًا.

    أُضيف في الإصدارة 198.

CPUAffinity=
    يكوّن تقارب وحدة المعالجة المركزية لمدير الخدمة وكذلك تقارب وحدة المعالجة المركزية المبدئي لجميع العمليات المتفرعة. يأخذ قائمة بمؤشرات وحدة المعالجة المركزية أو نطاقات مفصولة بمسافات أو فواصل. تُحدد نطاقات وحدة المعالجة المركزية بواسطة مؤشرات وحدة المعالجة المركزية السفلى والعليا مفصولة بشرطة. يمكن تحديد هذا الخيار أكثر من مرة، وفي هذه الحالة تُدمج أقنعة تقارب وحدة المعالجة المركزية المحددة. إذا عُينت سلسلة فارغة، يُعاد تعيين القناع، ولن يكون لجميع التعيينات السابقة لهذا أي تأثير. قد تتجاوز الخدمات الفردية تقارب وحدة المعالجة المركزية لعملياتها بإعداد CPUAffinity= في ملفات الوحدات، انظر systemd.exec(5).

    أُضيف في الإصدارة 198.

NUMAPolicy=
    يكوّن سياسة ذاكرة NUMA لمدير الخدمة وسياسة ذاكرة NUMA المبدئية لجميع العمليات المتفرعة. قد تتجاوز الخدمات الفردية السياسة المبدئية بإعداد NUMAPolicy= في ملفات الوحدات، انظر systemd.exec(5).

    أُضيف في الإصدار 243.

NUMAMask=
    يكوّن قناع عقدة NUMA الذي سيُربط بسياسة NUMA المحددة. لاحظ أن سياسات NUMA default و local لا تتطلب قناع عقدة NUMA صريحًا ويمكن أن تكون قيمة الخيار فارغة. على غرار NUMAPolicy=، يمكن تجاوز القيمة بواسطة الخدمات الفردية في ملفات الوحدات، انظر systemd.exec(5).

    أُضيف في الإصدار 243.

DefaultMemoryAccounting=, DefaultTasksAccounting=, DefaultIOAccounting=, DefaultIPAccounting=
    يكوّن إعدادات محاسبة الموارد المبدئية، كما تُكوّن لكل وحدة بواسطة MemoryAccounting=، TasksAccounting=، IOAccounting=، و IPAccounting=. انظر systemd.resource-control(5) للتفاصيل حول الإعدادات لكل وحدة.

    المبدئي لـ DefaultMemoryAccounting= هو نعم. المبدئي لـ DefaultTasksAccounting= هو نعم. الإعدادات الأخرى مبدئيًا لا.

    أُضيف في الإصدارة 211.

DefaultTasksMax=
    يكوّن القيمة المبدئية لإعداد TasksMax= لكل وحدة. انظر systemd.resource-control(5) للتفاصيل. ينطبق هذا الإعداد على جميع أنواع الوحدات التي تدعم إعدادات التحكم في الموارد، باستثناء وحدات الشرائح. المبدئي هو 15% من الحد الأدنى لـ kernel.pid_max=، kernel.threads-max= وجذر cgroup pids.max. للنواة قيمة مبدئية لـ kernel.pid_max= وخوارزمية عد في حالة أكثر من 32 نواة. على سبيل المثال، مع kernel.pid_max= المبدئي، المبدئي لـ DefaultTasksMax= هو 4915، لكن قد يكون أكبر في أنظمة أخرى أو أصغر في حاويات نظام التشغيل.

    أُضيف في الإصدارة 228.

DefaultLimitCPU=, DefaultLimitFSIZE=, DefaultLimitDATA=, DefaultLimitSTACK=, DefaultLimitCORE=, DefaultLimitRSS=, DefaultLimitNOFILE=, DefaultLimitAS=, DefaultLimitNPROC=, DefaultLimitMEMLOCK=, DefaultLimitLOCKS=, DefaultLimitSIGPENDING=, DefaultLimitMSGQUEUE=, DefaultLimitNICE=, DefaultLimitRTPRIO=, DefaultLimitRTTIME=
    تتحكم هذه الإعدادات في حدود الموارد المبدئية المختلفة للعمليات المنفذة بواسطة الوحدات. انظر setrlimit(2) للتفاصيل. قد تُتجاوز هذه الإعدادات في وحدات فردية باستخدام توجيهات LimitXXX= المقابلة وتقبل نفس صياغة المعامل، انظر systemd.exec(5) للتفاصيل. لاحظ أن حدود الموارد هذه هي مبدئية فقط للوحدات، ولا تُطبق على عملية مدير الخدمة (أي PID 1) نفسها.

    معظم هذه الإعدادات غير مضبوطة، مما يعني أن حدود الموارد موروثة من النواة أو، إذا استُدعيت في حاوية، من مدير الحاوية. ومع ذلك، فإن ما يلي له مبدئيات:

        • المبدئي لـ DefaultLimitNOFILE= هو 1024:524288.

        • المبدئي لـ DefaultLimitMEMLOCK= هو 8M.

        • لا يوجد مبدئي لـ DefaultLimitCORE= ولكن من الجدير بالذكر أن RLIMIT_CORE يُضبط إلى "infinity" بواسطة PID 1 والذي يُورث لأبنائه.

    لاحظ أن مدير الخدمة داخليًا في PID 1 يرفع RLIMIT_NOFILE و RLIMIT_MEMLOCK إلى قيم أعلى، ومع ذلك يُعاد الحد إلى المبدئيات المذكورة لجميع العمليات الفرعية المنشقة.

    أُضيف في الإصدارة 198.

DefaultOOMPolicy=
    اضبط السياسة المبدئية للتفاعل مع العمليات التي يُقتلها قاتل نفاد الذاكرة (OOM) في لينكس أو systemd-oomd. يمكن استخدام هذا لاختيار مبدئي عام لإعداد OOMPolicy= لكل وحدة. انظر systemd.service(5) للتفاصيل. لاحظ أن هذا المبدئي لا يُستخدم للخدمات التي لديها Delegate= مفعل.

    أُضيف في الإصدار 243.

DefaultOOMScoreAdjust=
    يضبط التعديلات المبدئية لدرجة OOM للعمليات التي يديرها مدير الخدمة. المبدئي لهذا هو غير مضبوط (بمعنى أن العمليات المنشقة ترث قيمة تعديل درجة OOM لمدير الخدمة)، إلا إذا كان مدير الخدمة يُشغل لمستخدم غير مميز، وفي هذه الحالة يكون المبدئي هو قيمة تعديل OOM لمدير الخدمة زائد 100 (وهذا يجعل عمليات الخدمة أكثر عرضة للقتل تحت ضغط الذاكرة من المدير نفسه). يمكن استخدام هذا لاختيار مبدئي عام لإعداد OOMScoreAdjust= لكل وحدة. انظر systemd.exec(5) للتفاصيل. لاحظ أن هذا الإعداد ليس له تأثير على قيمة تعديل درجة OOM لعملية مدير الخدمة نفسها، بل يحتفظ بالقيمة الأصلية المضبوطة أثناء استدعائه.

    أُضيف في الإصدار 250.

DefaultMemoryPressureWatch=, DefaultMemoryPressureThresholdSec=
    يضبط الإعدادات المبدئية لإعدادات MemoryPressureWatch= و MemoryPressureThresholdSec= لكل وحدة. انظر systemd.resource-control(5) للتفاصيل. المبدئي هو "auto" و "200ms"، على التوالي. هذا أيضًا يضبط عتبة مراقبة ضغط الذاكرة لمدير الخدمة نفسه.

    أُضيف في الإصدار 254.

DefaultCPUPressureWatch=، DefaultCPUPressureThresholdSec=
    يُهيئ الإعدادات المبدئية لإعدادات CPUPressureWatch= و CPUPressureThresholdSec= لكل وحدة. انظر systemd.resource-control(5) للتفاصيل. المبدئي هو "auto" و "200ms" على الترتيب. يضبط هذا أيضًا عتبة مراقبة ضغط وحدة المعالجة المركزية لمدير الخدمة نفسه.

    أُضيف في الإصدار 261.

DefaultIOPressureWatch=، DefaultIOPressureThresholdSec=
    يُهيئ الإعدادات المبدئية لإعدادات IOPressureWatch= و IOPressureThresholdSec= لكل وحدة. انظر systemd.resource-control(5) للتفاصيل. المبدئي هو "auto" و "200ms" على الترتيب. يضبط هذا أيضًا عتبة مراقبة ضغط الإدخال/الإخراج لمدير الخدمة نفسه.

    أُضيف في الإصدار 261.

مراقب الأجهزة

RuntimeWatchdogSec=, RebootWatchdogSec=, KExecWatchdogSec=
    اضبط مراقب الأجهزة أثناء التشغيل وعند إعادة التشغيل. يأخذ قيمة مهلة بالثواني (أو بوحدات زمنية أخرى إذا أُلحقت بـ "ms"، "min"، "h"، "d"، "w")، أو السلاسل الخاصة "off" أو "default". إذا ضُبط إلى "off" (بديلًا: "0") يُعطل منطق المراقب: لا يُفتح أي جهاز مراقب، أو يُضبط، أو يُنقر. إذا ضُبط إلى السلسلة الخاصة "default" يُفتح المراقب ويُنقر على فترات منتظمة، لكن المهلة لا تُغير عن المبدئي. إذا ضُبط إلى أي قيمة زمنية أخرى تُضبط مهلة المراقب إلى القيمة المحددة (أو قيمة قريبة منها، حسب قدرات الأجهزة).

    إذا ضُبط RuntimeWatchdogSec= إلى قيمة غير صفرية، يُبرمج جهاز المراقب (/dev/watchdog0 أو المسار المحدد بـ WatchdogDevice= أو خيار النواة systemd.watchdog_device=) لإعادة تشغيل النظام آليًا إذا لم يُتصل به ضمن فترة المهلة المحددة. يضمن مدير النظام الاتصال به مرة واحدة على الأقل في نصف فترة المهلة المحددة. تتطلب هذه الميزة وجود جهاز مراقب أجهزة، كما هو شائع في الأنظمة المضمنة والخوادم. لا تسمح جميع مراقبات الأجهزة بتكوين جميع قيم مهلة إعادة التشغيل الممكنة، وفي هذه الحالة تُختار أقرب مهلة متاحة.

    يمكن استخدام RebootWatchdogSec= لتكوين مراقب الأجهزة عندما يُطلب من النظام إعادة التشغيل. يعمل كشبكة أمان لضمان حدوث إعادة التشغيل حتى إذا انتهت مهلة محاولة إعادة التشغيل النظيفة. لاحظ أن مهلة RebootWatchdogSec= تنطبق فقط على المرحلة الثانية من إعادة التشغيل، أي بعد إنهاء جميع الخدمات العادية، وبعد استبدال عملية مدير النظام والخدمة (PID 1) بالثنائي systemd-shutdown، انظر نظام bootup(7) للتفاصيل. خلال المرحلة الأولى من عملية الإيقاف، يبقى مدير النظام والخدمة قيد التشغيل وبالتالي يُحترم RuntimeWatchdogSec=. لتحديد مهلة على هذه المرحلة الأولى من إيقاف النظام، اضبط JobTimeoutSec= و JobTimeoutAction= في قسم [Unit] لوحدة shutdown.target. مبدئيًا، RuntimeWatchdogSec= مبدئيًا 0 (مغلق)، و RebootWatchdogSec= إلى 10 دقائق.

    يمكن استخدام KExecWatchdogSec= لتمكين المراقب إضافيًا عند تنفيذ kexec بدلاً من إعادة التشغيل. لاحظ أنه إذا لم تعِد النواة ضبط المراقب على kexec (اعتمادًا على الأجهزة و/أو السائق المحدد)، في هذه الحالة قد لا يُعطل المراقب بعد نجاح kexec وبالتالي قد يُعاد تشغيل النظام، ما لم يكن RuntimeWatchdogSec= مفعلًا أيضًا في نفس الوقت. لهذا السبب يُوصى بتمكين KExecWatchdogSec= فقط إذا كان RuntimeWatchdogSec= مفعلًا أيضًا.

    ليس لهذه الإعدادات أي تأثير إذا لم يكن مراقب الأجهزة متاحًا.

    أُضيف في الإصدارة 198.

RuntimeWatchdogPreSec=
    اضبط قيمة ما قبل المهلة لجهاز مراقب الأجهزة. يأخذ قيمة مهلة بالثواني (أو بوحدات زمنية أخرى مشابهة لـ RuntimeWatchdogSec=). ما قبل المهلة للمراقب هو إشعار يُولد بواسطة المراقب قبل حدوث إعادة ضبط المراقب في حال لم تتم خدمة المراقب. يُعالج هذا الإشعار بواسطة النواة ويمكن تكوينه لاتخاذ إجراء (أي توليد ذعر النواة) باستخدام RuntimeWatchdogPreGovernor=. لا تدعم جميع أجهزة المراقب أو السائقين توليد ما قبل المهلة واعتمادًا على حالة النظام، قد لا تتمكن النواة من اتخاذ الإجراء المُكون قبل إعادة تشغيل المراقب. سيُكون المراقب لتوليد حدث ما قبل المهلة في مقدار الوقت المحدد بواسطة RuntimeWatchdogPreSec= قبل مهلة المراقب الزمنية (المضبوطة بواسطة RuntimeWatchdogSec=). على سبيل المثال، إذا كان لدينا RuntimeWatchdogSec=30 و RuntimeWatchdogPreSec=10، فسيحدث حدث ما قبل المهلة إذا لم يُنقر المراقب لمدة 20 ثانية (10 ثوانٍ قبل أن يُطلق المراقب). مبدئيًا، RuntimeWatchdogPreSec= مبدئيًا 0 (مغلق). يجب أن تكون القيمة المضبوطة لـ RuntimeWatchdogPreSec= أصغر من قيمة المهلة لـ RuntimeWatchdogSec=. ليس لهذا الإعداد أي تأثير إذا لم يكن مراقب الأجهزة متاحًا أو إذا كان مراقب الأجهزة لا يدعم ما قبل المهلة وسيُتجاهل بواسطة النواة إذا كان الإعداد أكبر من مهلة المراقب الفعلية.

    أُضيف في الإصدار 251.

RuntimeWatchdogPreGovernor=
    اضبط الإجراء الذي يتخذه جهاز مراقب الأجهزة عند انتهاء ما قبل المهلة. الإجراء المبدئي لحدث ما قبل المهلة يعتمد على تكوين النواة، لكنه عادةً ما يكون تسجيل رسالة نواة. للحصول على قائمة بالإجراءات الصالحة المتاحة لجهاز مراقب معين، تحقق من محتوى ملف /sys/class/watchdog/watchdogX/pretimeout_available_governors. عادةً، أنواع الحكام المتاحة هي noop و panic. قد تختلف التوفر والأسماء والوظائف حسب سائق الجهاز المحدد المستخدم. إذا كان ملف sysfs pretimeout_available_governors فارغًا، فقد يكون الحاكم مبنيًا كوحدة نواة وقد يحتاج إلى تحميل يدوي (مثل pretimeout_noop.ko)، أو قد لا يدعم جهاز المراقب ما قبل المهلات.

    أُضيف في الإصدار 251.

WatchdogDevice=
    اضبط جهاز مراقب الأجهزة الذي ستفتحه وتستخدمه مؤقتات مراقب التشغيل والإيقاف. المبدئي هو /dev/watchdog0. ليس لهذا الإعداد أي تأثير إذا لم يكن مراقب الأجهزة متاحًا.

    أُضيف في الإصدارة 236.

الأمن

CapabilityBoundingSet=
    يتحكم في القدرات التي تُضمّن في مجموعة الحدود (capability bounding set) للعملية PID 1 وأبنائها. انظر capabilities(7) للتفاصيل. يأخذ قائمة مفصولة بمسافات من أسماء القدرات كما تُقرأ بواسطة cap_from_name(3). القدرات المدرجة تُضمّن في مجموعة الحدود، بينما تُزال جميع القدرات الأخرى. إذا كانت قائمة القدرات مسبوقة بـ ~، فتُضمّن جميع القدرات باستثناء المدرجة، مع عكس تأثير التعيين. لاحظ أن هذا الخيار يؤثر أيضًا على القدرات المقابلة في مجموعات القدرات الفعالة والمسموح بها والقابلة للتوريث. يمكن أيضًا تكوين مجموعة الحدود للقدرات بشكل فردي للوحدات باستخدام التوجيه CapabilityBoundingSet= للوحدات، لكن لاحظ أن القدرات المسقطة للعملية PID 1 لا يمكن استعادتها في الوحدات الفردية، فهي مفقودة للأبد.

    أُضيف في الإصدارة 198.

NoNewPrivileges=
    يأخذ وسيطًا منطقيًا. إذا كان صحيحًا، يضمن أن العملية PID 1 وجميع أبنائها لا يمكنهم أبدًا اكتساب صلاحيات جديدة عبر execve(2) (مثلًا عبر بتات setuid أو setgid، أو قدرات نظام الملفات). المبدئي هو خطأ. تعتمد التوزيعات العامة عادةً على الملفات التنفيذية ذات بتات setuid أو setgid، وبالتالي لن تعمل بشكل صحيح مع تمكين هذا الخيار. لا يمكن للوحدات الفردية تعطيل هذا الخيار. انظر أيضًا علم لا صلاحيات جديدة[2].

    أُضيف في الإصدار 239.

ProtectSystem=
    يأخذ وسيطًا منطقيًا أو السلسلة "auto". إذا ضُبط على صحيح، فسيُعيد وصل /usr/ للقراءة فقط. إذا ضُبط على "auto" (المبدئي) وكان يعمل في initrd، فسيكون مكافئًا لصحيح، وإلا فخطأ. يُنفذ هذا مجموعة فرعية مقيدة من الإعداد لكل وحدة بنفس الاسم، انظر systemd.exec(5) للتفاصيل: حاليًا، القيم "full" أو "strict" غير مدعومة.

    أُضيف في الإصدار 256.

RestrictFileSystemAccess=
    يأخذ وسيطًا منطقيًا أو القيمة الخاصة "exec". المبدئي هو "no". عند التفعيل، يُحمّل PID 1 برنامج BPF LSM يُطبّق سياسة تنفيذ رفض-مبدئي: يُسمح فقط بتنفيذ الثنائيات الموجودة على أجهزة كتل dm-verity الموقّعة (و initramfs أثناء الإقلاع المبكر). يُرفض التنفيذ من tmpfs، procfs، sysfs، أجهزة dm-verity غير الموقّعة، وخرائط الذاكرة القابلة للتنفيذ المجهولة.

    يُقصد بهذا الإعداد كمكون واحد لنظام قائم على الصورة وموثّق بالكامل، حيث تُقاس وتُوثّق سلسلة الإقلاع بأكملها (البرامج الثابتة، صورة النواة، سطر أوامر النواة، initramfs). على نظام عام بدون هذه الضمانات، لا يُوفّر حدًا أمنيًا ذا معنى بمفرده: يمكن لمهاجم لديه صلاحية كافية لتحرير system.conf، أو تعديل سطر أوامر النواة، أو تنفيذ kexec في initrd غير موقّع، تعطيل السياسة أو تجاوزها.

    تُحجب خطافات الإنفاذ execve() للثنائيات غير الموثوقة ("bprm_check_security")، وخرائط الذاكرة PROT_EXEC بما في ذلك المكتبات المشتركة ("mmap_file")، والانتقالات من الكتابة إلى التنفيذ مثل ترجمة JIT ("file_mprotect").

    لاحظ أن التنفيذ من وصلات overlayfs يُحجب حتى لو كانت الطبقات الأساسية موجودة على أجهزة dm-verity موقّعة، لأن برنامج BPF يرى رقم الجهاز المجهول لنظام ملفات التراكب بدلاً من جهاز الكتلة الأساسي. أنظمة الملفات متعددة الأجهزة مثل btrfs غير مدعومة بالمثل.

    لاحظ أنه، بدون إجراءات إضافية لتأمين النظام، يمكن استخدام kexec للالتفاف على هذا.

    يتطلب هذا تشغيل النواة مع "dm_verity.require_signatures=1" في سطر أوامر النواة ومع تفعيل BPF LSM ("lsm=...,bpf"). إذا لم يُستوف أي من الشرطين المسبقين، سيرفض PID 1 إكمال بدء التشغيل.

    القيمة "yes" مكافئة لـ "exec". قد تُضاف أوضاع إضافية في المستقبل.

    يمكن أيضًا ضبط هذا الخيار عبر خيار سطر أوامر النواة systemd.restrict_filesystem_access=، انظر kernel-command-line(7).

    أُضيف في الإصدار 261.

SystemCallArchitectures=
    يأخذ قائمة مفصولة بمسافات من معرفات البنى. يختار من أي بنى يمكن استدعاء استدعاءات النظام على هذا النظام. يمكن استخدام هذا كطريقة فعالة لتعطيل استدعاء الملفات الثنائية غير الأصلية على مستوى النظام، مثلًا لمنع تنفيذ الملفات الثنائية 32-bit x86 على أنظمة 64-bit x86-64. يعمل هذا الخيار على مستوى النظام، ويتصرف بشكل مشابه لإعداد SystemCallArchitectures= في ملفات الوحدات، انظر systemd.exec(5) للتفاصيل. المبدئي لهذا الإعداد هو القائمة الفارغة، وفي هذه الحالة لا يُطبق أي تصفية لاستدعاءات النظام بناءً على البنية. معرفات البنى المعروفة هي "x86" و"x86-64" و"x32" و"arm" والمعرف الخاص "native". يُخطط الأخير ضمنيًا للبنية الأصلية للنظام (أو بشكل أكثر تحديدًا، البنية التي جُمّع مدير النظام من أجلها). اضبط هذا الإعداد على "native" لمنع تنفيذ أي ملفات ثنائية غير أصلية. عندما ينفذ ملف ثنائي استدعاء نظام لبنية غير مدرجة في هذا الإعداد، سيُنهى فورًا بإشارة SIGSYS.

    أُضيف في الإصدارة 209.

DefaultSmackProcessLabel=
    يأخذ تسمية أمان SMACK64 كوسيط. ستبدأ العملية المنفذة بواسطة وحدة تحت هذه التسمية إذا لم يُضبط SmackProcessLabel= في الوحدة. انظر systemd.exec(5) للتفاصيل.

    إذا كانت القيمة "/"، فسيتم تعيين التصنيفات المحددة مع SmackProcessLabel= فقط وسيتم تجاهل المبدئي لوقت التجميع.

    أُضيف في الإصدار 252.

DefaultRestrictSUIDSGID=
    يأخذ وسيطة منطقية. يُستخدم هذا كمبدئي للوحدات التي تفتقر إلى تعريف صريح لـ RestrictSUIDSGID=. انظر systemd.exec(5) للتفاصيل.

    أُضيف في الإصدار 258.

المهلات وحدود المعدل

DefaultTimeoutStartSec=، DefaultTimeoutStopSec=، DefaultTimeoutAbortSec=، DefaultRestartSec=
    يضبط المهلات المبدئية لبدء وإيقاف وإجهاض الوحدات، بالإضافة إلى الوقت المبدئي للنوم بين إعادة التشغيل الآلي للوحدات، كما هو مضبوط لكل وحدة في TimeoutStartSec=، TimeoutStopSec=، TimeoutAbortSec= و RestartSec= (للخدمات، انظر systemd.service(5) للتفاصيل حول الإعدادات لكل وحدة). للوحدات غير الخدمية، يضبط DefaultTimeoutStartSec= قيمة TimeoutSec= المبدئية.

    المبدئي لـ DefaultTimeoutStartSec= و DefaultTimeoutStopSec= هو 90 ثانية في مدير النظام و 90 ثانية في مدير المستخدم. لا يُضبط DefaultTimeoutAbortSec= مبدئيًا بحيث تعود جميع الوحدات إلى TimeoutStopSec=. المبدئي لـ DefaultRestartSec= هو 100 مللي ثانية.

    أُضيف في الإصدارة 209.

DefaultDeviceTimeoutSec=
    يضبط المهلة المبدئية لانتظار الأجهزة. يمكن تغييرها لكل جهاز عبر خيار x-systemd.device-timeout= في /etc/fstab و /etc/crypttab (انظر systemd.mount(5)، crypttab(5)). المبدئي هو 90 ثانية في مدير النظام و 90 ثانية في مدير المستخدم.

    أُضيف في الإصدار 252.

DefaultStartLimitIntervalSec=, DefaultStartLimitBurst=
    يضبط تحديد معدل بدء الوحدة المبدئي، كما هو مضبوط لكل خدمة بواسطة StartLimitIntervalSec= و StartLimitBurst=. انظر systemd.service(5) للتفاصيل حول الإعدادات لكل خدمة. المبدئي لـ DefaultStartLimitIntervalSec= هو 10 ثوانٍ. المبدئي لـ DefaultStartLimitBurst= هو 5.

    أُضيف في الإصدارة 209.

ReloadLimitIntervalSec=, ReloadLimitBurst=
    تحديد المعدل لطلبات إعادة تحميل البرنامج الخفي و (منذ الإصدار v256) إعادة تنفيذ البرنامج الخفي. ينطبق الإعداد على كلتا العمليتين، ولكن يتم تتبع حدود المعدل بشكل منفصل. المبدئي غير مضبوط، ويمكن طلب أي عدد من العمليات في أي وقت. يأخذ ReloadLimitIntervalSec= قيمة بالثواني لضبط نافذة حد المعدل، ويأخذ ReloadLimitBurst= عددًا صحيحًا موجبًا لضبط الحد الأقصى المسموح به من العمليات ضمن النافذة الزمنية المضبوطة.

    أُضيف في الإصدار 253.

EventLoopRateLimitIntervalSec=، EventLoopRateLimitBurst=
    يُهيئ تحديد المعدل المُطبّق على حلقة الأحداث الرئيسية للمدير. إذا كررت حلقة الأحداث أكثر من EventLoopRateLimitBurst= مرة ضمن EventLoopRateLimitIntervalSec=، يُوقف معالجة الأحداث مؤقتًا لمنع الاستخدام المفرط لوحدة المعالجة المركزية. المبدئي لـ EventLoopRateLimitIntervalSec= هو 1 ثانية. المبدئي لـ EventLoopRateLimitBurst= هو 50000. يمكن أيضًا ضبط هذه الإعدادات على سطر أوامر النواة عبر systemd.event_loop_ratelimit_interval_sec= و systemd.event_loop_ratelimit_burst=.

    أُضيف في الإصدار 261.

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

    أُضيف في الإصدار 261.

البيئة

DefaultEnvironment=
    يضبط متغيرات البيئة التي تُمرر إلى جميع العمليات المنفذة. يأخذ قائمة مفصولة بمسافات من تعيينات المتغيرات. انظر environ(7) للتفاصيل حول متغيرات البيئة. كتلة البيئة هذه داخلية، ولا تنعكس التغييرات في /proc/PID/environ الخاص بالمدير.

    يُدعم توسيع محدد "%" البسيط، انظر أدناه لقائمة المحددات المدعومة.

    مثال:

        DefaultEnvironment="VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6"

    يضبط ثلاثة متغيرات "VAR1"، "VAR2"، "VAR3".

    أُضيف في الإصدارة 205.

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

    قد يكون ضبط متغيرات البيئة لعملية المدير مفيدًا لتعديل سلوكها. انظر متغيرات البيئة المعروفة[3] لوصف بعض المتغيرات التي يفهمها systemd.

    يُدعم توسيع محدد "%" البسيط، انظر أدناه لقائمة المحددات المدعومة.

    أُضيف في الإصدار 248.

DefaultMemoryZSwapWriteback=
    يأخذ وسيطًا منطقيًا. المبدئي هو true إذا لم يُحدد. يُستخدم هذا كمبدئي للوحدات التي تفتقر إلى تعريف صريح لـ MemoryZSwapWriteback=. انظر systemd.resource-control(5) للتفاصيل.

    أُضيف في الإصدار 261.

المحددات

قد تُستخدم المحددات في إعدادات DefaultEnvironment= و ManagerEnvironment=. يُفهم التوسعات التالية:

الجدول 1. المحددات المتاحة
المحدد | المعنى | التفاصيل
"%a" | المعمارية | سلسلة نصية قصيرة تحدد معمارية النظام المحلي. سلسلة مثل x86 أو x86-64 أو arm64. انظر المعماريات المحددة لـ ConditionArchitecture= في systemd.unit(5) للحصول على قائمة كاملة.
"%A" | إصدار صورة نظام التشغيل | معرف إصدار صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_VERSION= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات.
"%b" | معرف الإقلاع | معرف الإقلاع للنظام المشغل، منسق كسلسلة نصية. انظر random(4) لمزيد من المعلومات.
"%B" | معرف بناء نظام التشغيل | معرف بناء نظام التشغيل للنظام المشغل، كما يُقرأ من حقل BUILD_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات.
"%H" | اسم المضيف | اسم مضيف النظام المشغل.
"%l" | اسم المضيف القصير | اسم مضيف النظام المشغل، مقتطعًا عند النقطة الأولى لإزالة أي مكون نطاق.
"%m" | معرف الآلة | معرف الجهاز للنظام المشغل، منسق كسلسلة نصية. انظر machine-id(5) لمزيد من المعلومات.
"%M" | معرف صورة نظام التشغيل | معرف صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات.
"%o" | معرف نظام التشغيل | معرف نظام التشغيل للنظام المشغل، كما يُقرأ من حقل ID= في /etc/os-release. انظر os-release(5) لمزيد من المعلومات.
"%v" | إصدار النواة | مطابق لمخرجات uname -r.
"%w" | معرف إصدار نظام التشغيل | معرف إصدار نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VERSION_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات.
"%W" | معرف نوع نظام التشغيل | معرف تنويعة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VARIANT_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات.
"%T" | مجلد للملفات المؤقتة | هذا إما /tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.)
"%V" | مجلد للملفات المؤقتة الأكبر حجمًا والمستمرة | هذا إما /var/tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.)
"%h" | دليل منزل المستخدم | هذا هو الدليل الرئيسي لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%u" | اسم المستخدم | هذا هو اسم المستخدم لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%U" | معرف المستخدم | هذا هو معرف المستخدم لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%g" | المجموعة الرئيسية | هذه هي المجموعة الرئيسية لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%G" | معرف المجموعة الرئيسية | هذا هو معرف المجموعة الرئيسية لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%s" | صدفة المستخدم | هذه هي الصدفة لـ المستخدم الذي يشغل مثيل مدير الخدمة.
"%%" | علامة مئوية مفردة | استخدم "%%" بدلاً من "%" لتحديد علامة مئوية مفردة.

التاريخ

systemd 252
    الخيار DefaultBlockIOAccounting= قد أُهمل. يُرجى التبديل إلى التسلسل الهرمي الموحد لـ cgroup.

systemd 258
    إعداد DefaultCPUAccounting= قد أُهمل، لأن محاسبة وحدة المعالجة المركزية متاحة دائمًا في التسلسل الهرمي الموحد لـ cgroup وليس لهذا الإعداد أي تأثير.

انظر أيضًا

systemd(1), systemd.directives(7), systemd.exec(5), systemd.service(5), environ(7), capabilities(7)

ملاحظات

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

2.  علم منع الامتيازات الجديدة
    https://docs.kernel.org/userspace-api/no_new_privs.html

3.  متغيرات البيئة المعروفة
    https://systemd.io/ENVIRONMENT

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.