HOMECTL(1)

الاسم
homectl، systemd-homed-firstboot.service - أنشئ مجلدات المنزل أو أزلها أو غيّرها أو افحصها

موجز

homectl [الخيارات...] {الأمر} [الاسم...]

الوصف

يمكن استخدام homectl لإنشاء مجلد منزل المستخدم أو إزالته أو تغييره أو فحصه. هو في المقام الرئيس أمر يتصل بـ systemd-homed.service(8) الذي يدير مجلدات منزل المستخدمين.

مجلدات المنزل التي يديرها systemd-homed.service ذاتية الاحتواء، وبالتالي تتضمن سجل البيانات الوصفية الكامل للمستخدم في مخزن بيانات المنزل نفسه، مما يسهل نقلها بين الحواسيب. وبوجه خاص، يصف مجلد المنزل سجل مستخدم مطابق، وكل سجل مستخدم يديره systemd-homed.service يتضمن أيضاً وجود وتغليف مجلد المنزل. ويصبح حساب المستخدم ومجلد المنزل المفهوم ذاته.

آليات التخزين الخلفية التالية مدعومة:

    • ملف استرجاع (loopback) مشفر بـ LUKS2 لكل مستخدم، مخزن في /home/*.home. عند الولوج، يُوصل نظام الملفات الموجود في هذه الملفات، بعد إلحاق وحدة التخزين المشفرة بـ LUKS2. كلمة سر المستخدم مطابقة لعبارة سر تعمية وحدة LUKS2. وبالتالي لا يمكن الوصول إلى البيانات دون استيثاق مسبق للمستخدم، حتى لمدير النظام. توفر آلية التخزين هذه أقوى أمن للبيانات ولذا يوصى بها.

    • مماثل، ولكن نظام الملفات المشفر بـ LUKS2 يقع على جهاز كتلي عادي، مثل ذاكرة USB. في هذا الوضع، يمكن نقل مجلدات المنزل وجميع البيانات التي تتضمنها بسهولة بين الحواسيب، ببساطة عن طريق توصيل ذاكرة USB بأنظمة مختلفة في أوقات مختلفة.

    • مجلد معّمى باستخدام "fscrypt" على أنظمة ملفات تدعمه (في الوقت الحالي هذا متاح بشكل رئيس لـ "ext4")، ويقع في /home/*.homedir. توفر هذه الآلية أيضاً تعمية، ولكنها أضعف بكثير من LUKS2، حيث إن معظم البيانات الوصفية لنظام الملفات غير محمية. علاوة على ذلك، فهي لا تدعم حالياً تغيير كلمات سر المستخدم بمجرد إنشاء مجلد المنزل.

    • قسم فرعي "btrfs" لكل مستخدم، يقع أيضاً في /home/*.homedir. لا يوفر هذا أي تعمية، ولكنه يوفر دعماً جيداً للحصص (quota).

    • مجلد عادي لكل مستخدم، يقع أيضاً في /home/*.homedir. لا يوفر هذا أي تعمية، ولكنه بديل مناسب متاح في جميع الحواسيب، حتى في الحالات التي لا يتوفر فيها دعم LUKS2 أو "fscrypt" أو "btrfs".

    • مشاركة ملفات ويندوز (CIFS) منفصلة لكل مستخدم.

لاحظ أن systemd-homed.service و homectl لن يديرا حسابات مستخدمي يونكس "التقليدية" التي أُنشئت باستخدام useradd(8) أو أدوات مماثلة. وبوجه خاص، هذه الوظيفة غير مناسبة لإدارة مستخدمي النظام (أي المستخدمين الذين يقل معرفهم UID عن 1000) ولكنها حصرية للمستخدمين العاديين ("البشر").

لاحظ أن المستخدمين/مجلدات المنزل التي تُدار عبر systemd-homed.service لا تظهر في /etc/passwd والملفات المماثلة، بل يتم توليفها عبر glibc NSS أثناء وقت التشغيل. وبالتالي يمكن حلها وسردها عبر أداة getent(1).

تتصل هذه الأداة مباشرة بـ systemd-homed.service، وقد تنفذ أوامر محددة على مجلدات المنزل التي تديرها. ونظراً لأن كل مجلد منزل يُدار بهذه الطريقة يحدد أيضاً سجل مستخدم ومجموعة بتنسيق JSON، فيمكن أيضاً فحص مجلدات المنزل هذه وسردها عبر userdbctl(1).

مجلدات المنزل التي يديرها systemd-homed.service تكون عادةً في إحدى حالتين، أو في حالة انتقال بينهما: عندما تكون "نشطة" (active) تكون غير مقفلة وموصولة، وبالتالي يمكن للنظام وبرامجه الوصول إليها؛ وعندما تكون "غير نشطة" (inactive) لا تكون موصولة وبالتالي لا يمكن الوصول إليها. يحدث التنشيط آلياً عند ولوج المستخدم وعادةً لا يكتمل إلا بعد تقديم كلمة سر (أو رمز استيثاق آخر). ويحدث إلغاء التنشيط بعد خروج المستخدم تماماً. يظل مجلد المنزل نشطاً طالما أن المستخدم قد ولج مرة واحدة على الأقل، أي لديه جلسة ولوج واحدة على الأقل. عندما يلج المستخدم مرة ثانية في نفس الوقت، يظل مجلد المنزل نشطاً. ويُلغى تنشيطه فقط بعد انتهاء آخر جلسات المستخدم.

الخيارات

تُفهم الخيارات العامة التالية (تُوثق الخيارات الأخرى التي تتحكم في الخصائص المتنوعة لسجلات المستخدم التي يديرها systemd-homed.service في الأسفل):

--identity=الملف
    اقرأ سجل JSON الخاص بالمستخدم من الملف المحدد. إذا مُرر كـ "-" فسيُقرأ سجل المستخدم من المدخل القياسي. يجب أن يتبع كائن JSON المزود البنية الموثقة في سجلات مستخدم JSON[1]. يمكن استخدام هذا الخيار بالاقتران مع أمري create و update (انظر أدناه)، حيث يسمح بضبط سجل المستخدم بتنسيق JSON كما هو، بدلاً من ضبط خصائص سجل المستخدم الفردية (انظر أدناه).

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

--json=التنسيق، -j
    يتحكم فيما إذا كان سيتم إخراج سجل المستخدم بتنسيق JSON، إذا استُخدم الأمر inspect (انظر أدناه). يأخذ واحداً من "pretty" أو "short" أو "off". إذا كان "pretty" فسيتم إدراج مسافات بيضاء وأسطر جديدة صديقة للبشر في المخرجات لجعل بيانات JSON أكثر قابلية للقراءة. إذا كان "short" فسيتم كتم جميع المسافات البيضاء الزائدة. إذا كان "off" (المبدئي) فلن تظهر معلومات المستخدم بتنسيق JSON بل بتنسيق سهل القراءة للبشر بدلاً من ذلك. يختار الخيار -j التنسيق "pretty" عند التشغيل تفاعلياً و "short" بخلاف ذلك.

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

--export-format=التنسيق، -E، -EE
    عند استخدامه مع الفعل inspect في وضع JSON (انظر أعلاه) يمكن استخدامه لكتم جوانب معينة من سجل مستخدم JSON عند الإخراج. وتحديداً، إذا استُخدم تنسيق "stripped" فستُزال حقول الربط ووقت التشغيل من السجل. وإذا استُخدم تنسيق "minimal" فستُزال التواقيع التعموية أيضاً. وإذا استُخدم تنسيق "full" فسيظهر سجل JSON الكامل (هذا هو المبدئي). هذا الخيار مفيد لنسخ سجل مستخدم موجود إلى نظام مختلف لإنشاء مستخدم مماثل هناك بنفس الإعدادات. وتحديداً: يمكن استخدام homectl inspect -EE | ssh root@othersystem homectl create -i- كسطر أوامر بسيط لمضاعفة مستخدم على مضيف آخر. يكافئ -E الخيار -j --export-format=stripped، و -EE يكافئ -j --export-format=minimal. لاحظ أنه عند مضاعفة حسابات المستخدمين، فإن سجلات المستخدمين المكتسبة في وضع "stripped" ستحتفظ بالتواقيع التعموية الأصلية وبالتالي لا يمكن تعديلها إلا عند توفر المفتاح الخاص لتحديثها في الحاسوب الوجهة. عند مضاعفة المستخدمين في وضع "minimal"، يُزال التوقيع أثناء المضاعفة وبالتالي سيُوقع السجل ضمنياً بمفتاح الحاسوب الوجهة ويمكن تحديثه هناك دون أي مضاعفة للمفتاح الخاص.

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

--offline
    لا تحاول تحديث نسخة سجل المستخدم ومجلد الكتل الكبيرة (blob) المضمن داخل منطقة المنزل. يسمح هذا بالعمل على مناطق المنزل الغائبة، أو دون الحاجة للاستيثاق كالمستخدم الذي يجري تعديله.

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

--key-name=
    عند استخدامه مع الأمر add-signing-key، حدد أو تجاوز الاسم الذي سيُخزن تحته المفتاح العام الذي يُضاف. يمكن اختيار الاسم المحدد بحرية، ولكن يجب أن ينتهي بلاحقة ".public". إذا لم يُستخدم هذا الخيار، فسيُشتق الاسم من اسم الملف المحدد. إذا قُرئ مفتاح من المدخل القياسي، فإن هذا الخيار إلزامي لتوفير اسم مناسب للمفتاح المضاف.

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

--seize=
    يأخذ وسيطاً منطقياً. عند استخدامه مع create أو register، فإنه يتحكم فيما إذا كان سيتم نزع التواقيع التعموية من سجلات مستخدم JSON المزودة، مما يؤدي إلى توقيعها بمفتاح التوقيع المحلي (local.public) بدلاً من ذلك. إذا ضُبط هذا المفتاح على true، فستصبح سجلات المستخدم المضافة مدارة محلياً (وبالتالي يمكن تعديلها محلياً)، بينما إذا ضُبط على false فستظل سجلات المستخدم مدارة ومملوكة من أصلها (وبالتالي لا يمكن تعديلها محلياً). القيمة المبدئية لهذا المفتاح هي true للأمر create و false للأمر register.

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

--prompt-new-user
    إذا استُخدم بالاقتران مع firstboot ولم يكن هناك حساب مستخدم عادي موجود في النظام حتى الآن، فستقوم الأداة بالاستعلام تفاعلياً عن معلومات المستخدم وإنشاء حساب.

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

--prompt-shell=
    يأخذ وسيطاً منطقياً. يتحكم في ما إذا كان سيتم الاستعلام تفاعلياً عن صدفة ولوج، إذا استُخدم firstboot --prompt-new-user. المبدئي هو true.

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

--prompt-groups=
    يأخذ وسيطاً منطقياً. يتحكم في ما إذا كان سيتم الاستعلام تفاعلياً عن مجموعات مساعدة لإضافة المستخدم الجديد إليها، إذا استُخدم firstboot --prompt-new-user. المبدئي هو true.

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

--chrome=
    يأخذ وسيطاً منطقياً. مبدئياً، ستعرض شاشة إنشاء المستخدم التفاعلية عبر firstboot --prompt-new-user أشرطة "chrome" ملونة معكوسة في أعلى وأسفل شاشة الطرفية، والتي قد تُعطل بضبط هذا الخيار على false.

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

--mute-console=
    يأخذ وسيطاً منطقياً. إذا كان true فسيُعطل مخرجات سجل النواة ومخرجات حالة مدير الخدمة إلى وحدة تحكم النظام مؤقتاً أثناء تشغيل firstboot --prompt-new-user، بحيث لا تُقاطع مخرجاته الخاصة. المبدئي هو false.

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

--match=this|other|any|auto، -A، -N، -T
    يأخذ الخيار --match= واحداً من "this" أو "other" أو "any" أو "auto". يمكن تعريف بعض إعدادات سجل المستخدم لتطابق حواسيب معينة فقط، أو جميع الحواسيب باستثناء واحد، أو جميع الحواسيب. باستخدام هذا المفتاح، يمكن التحكم في الحواسيب التي ستُطبق عليها الإعدادات التي تظهر في سطر الأوامر بعده. إذا حُدد "this" فسيُطبق الإعداد فقط على النظام المحلي (تطابق إيجابي)، وإذا كان "other" فسيُطبق على جميع الحواسيب باستثناء النظام المحلي (تطابق سلبي)، وإذا كان "any" فسيُطبق على جميع الأنظمة (ما لم يكن هناك إعداد مطابق إيجابي أو سلبي لكل حاسوب). وإذا كان "auto" فيعود إلى المنطق المبدئي: حيث يعتمد ما إذا كان الإعداد يُطبق مبدئياً على النظام المحلي أو جميع الأنظمة على الخيار المعني.

    لاحظ أن بعض إعدادات سجل المستخدم فقط هي التي يمكن تكييفها بهذا الشكل. ليس لهذا الخيار أي تأثير على الإعدادات الأخرى ويُتجاهل هناك. قد يظهر هذا الخيار عدة مرات في سطر أوامر واحد لتطبيق إعدادات مشروطة بمطابقات مختلفة على سجل المستخدم نفسه. انظر سجلات مستخدم JSON[1] لمزيد من التفاصيل حول الإعدادات التي يمكن استخدامها مع مثل هذه المطابقة لكل حاسوب والتي لا يمكن استخدامها.

    -A هو اختصار لـ --match=any، و -T اختصار لـ --match=this و -N اختصار لـ --match=other.

    إليك مثال على استدعاء يضبط حقل التخزين على "luks" في النظام المحلي، ولكن على "cifs" في جميع الأنظمة الأخرى:

        # homectl update lennart -T --storage=luks -N --storage=cifs

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

-H، --host=
    نفّذ العملية عن بُعد. حدد اسم مضيف، أو اسم مستخدم واسم مضيف يفصل بينهما "@" للاتصال به. يمكن اختيارياً إلحاق اسم المضيف بمنفذ يستمع إليه ssh، مفصولاً بـ ":"، ثم اسم حاوية، مفصولاً بـ "/"، مما يوصل مباشرة بحاوية معينة على المضيف المحدد. سيستخدم هذا SSH للتحدث إلى نسخة مدير الحاسوب البعيد. يمكن سرد أسماء الحاويات باستخدام machinectl -H المضيف. ضع عناوين IPv6بين قوسين.

-M، --machine=
    نفّذ العملية على حاوية محلية. حدد اسم الحاوية للاتصال بها، مسبوقًا اختياريًا باسم مستخدم للاتصال به وحرف "@" كفاصل. إذا استُخدمت السلسلة الخاصة ".host" بدلاً من اسم الحاوية، فسيتم إجراء اتصال بالنظام المحلي (وهو أمر مفيد للاتصال بناقل مستخدم معين: "--user --machine=lennart@.host"). إذا لم تُستخدم صيغة "@"، فسيتم الاتصال كمستخدم جذر (root). إذا استُخدمت صيغة "@"، فيمكن حذف الجانب الأيسر أو الأيمن (ولكن ليس كلاهما) وفي هذه الحالة يُفترض اسم المستخدم المحلي و ".host".

--no-pager
    لا تمرر المخرجات إلى برنامج عرض (pager).

--no-legend
    لا تطبع مفتاح الرموز، أي ترويسات الأعمدة والتذييل المزود بالتلميحات.

--no-ask-password
    لا تسأل المستخدم عن الاستيثاق للعمليات ذات الامتيازات.

-h، --help
    اطبع نص مساعدة قصير واخرج.

--version
    اطبع سلسلة إصدار قصيرة واخرج.

خصائص سجل المستخدم العامة

تتحكم الخيارات التالية في الخصائص المتنوعة لسجلات المستخدم/مجلدات المنزل التي يديرها systemd-homed.service. يمكن استخدام هذه المفاتيح بالاقتران مع أمري create و update لضبط الجوانب المختلفة لمجلد المنزل وحساب المستخدم:

--real-name=الاسم، -c الاسم
    الاسم الحقيقي للمستخدم. هذا يقابل حقل GECOS في سجلات UNIX NSS التقليدية.

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

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

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

--alias=الاسم[,الاسم...]
    أسماء إضافية للمستخدم. يأخذ اسماً واحداً أو أكثر من أسماء مستخدمي يونكس الصالحة، مفصولة بفاصلات. يمكن استخدامه عدة مرات لتعريف أسماء مستعارة متعددة. يمكن تحديد اسم مستخدم مستعار حيثما يمكن تحديد اسم المستخدم الرئيس، ويؤدي إلى سجل المستخدم نفسه.

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

--email-address=البريد_الإلكتروني
    يأخذ عنوان بريد إلكتروني لربطه بالمستخدم. عند الولوج، يُهيأ متغير البيئة $EMAIL من هذه القيمة.

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

--location=النص
    يأخذ مواصفات الموقع لهذا المستخدم. هذا نص حر، قد يكون أو لا يكون قابلاً للاستخدام من قبل تطبيقات تحديد الموقع الجغرافي. مثال: --location="Berlin, Germany" أو --location="Basement, Room 3a"

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

--icon-name=الأيقونة
    يأخذ اسم أيقونة لربطه بالمستخدم، متبعاً المخطط المحدد في مواصفة تسمية الأيقونات[2].

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

--home-dir=المسار، -dالمسار
    يأخذ مساراً لاستخدامه كمجلد منزل للمستخدم. لاحظ أن هذا هو المجلد الذي يُوصل إليه مجلد منزل المستخدم أثناء ولوجه. ليس هذا هو المكان الذي تُخزن فيه بيانات المستخدم فعلياً، انظر --image-path= لذلك. إذا لم يُحدد، فالمبدئي هو /home/$USER.

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

--uid=المعرف_UID
    يأخذ معرف مستخدم يونكس (UID) رقمياً مفضلاً لتعيينه لهذا المستخدم. إذا كان سيتم إنشاء مستخدم بالمعرف المحدد وكان هذا المعرف مستخدماً بالفعل من قبل مستخدم آخر في النظام المحلي، فسيُرفض إنشاء مجلد المنزل. ومع ذلك، لاحظ أنه إذا استُخدم مجلد المنزل بعد إنشائه في نظام مختلف وكان المعرف المضبط مستخدماً من قبل مستخدم آخر هناك، فقد يقوم systemd-homed بتعيين معرف مختلف للمستخدم في ذلك النظام. يجب أن يكون المعرف المحدد خارج نطاق مستخدمي النظام. ويوصى باستخدام نطاق المعرفات 60001...60513 لهذا الغرض. إذا لم يُحدد، فسيُختار المعرف آلياً. إذا وُجد أن مجلد المنزل مملوك لمعرف مختلف عند الولوج، فستُغير ملكية مجلد المنزل وكل ما بداخله آلياً قبل اكتمال الولوج.

    لاحظ أن تغيير هذا الخيار لمجلدات المنزل الموجودة لا يكون له أي تأثير عموماً على مجلدات المنزل التي سُجلت محلياً بالفعل (لها ربط (binding) محلي)، حيث إن المعرف المستخدم لحساب في النظام المحلي يُحدد عند تنشيط مجلد المنزل لأول مرة عليه، ثم يظل سارياً حتى يُزال مجلد المنزل.

    لاحظ أن المستخدمين الذين يديرهم systemd-homed لديهم دائماً مجموعة مطابقة مرتبطة بنفس الاسم بالإضافة إلى معرف مجموعة (GID) يطابق معرف المستخدم (UID). وبالتالي، لا يُسمح بضبط معرف المجموعة بشكل منفصل.

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

--member-of=المجموعة، -G المجموعة
    يأخذ قائمة مفصولة بفاصلات لمجموعات يونكس المساعدة التي ينتمي إليها هذا المستخدم. مثال: --member-of=wheel لتزويد المستخدم بامتيازات المدير. لاحظ أن systemd-homed لا يدير أي مجموعات بخلاف المجموعة التي تطابق اسم المستخدم ومعرفه الرقمي UID/GID. وبالتالي يجب تسجيل أي مجموعات مدرجة هنا بشكل مستقل، على سبيل المثال باستخدام groupadd(8). وتُتجاهل أي مجموعات غير موجودة. يمكن استخدام هذا الخيار أكثر من مرة، وفي هذه الحالة تُجمع جميع قوائم المجموعات المحددة. إذا كان المستخدم حالياً عضواً في مجموعة غير مدرجة، فسيُزال المستخدم من تلك المجموعة.

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

--capability-bounding-set=القدرات، --capability-ambient-set=القدرات
    تأخذ هذه الخيارات قائمة مفصولة بمسافات لقدرات العمليات (مثلاً CAP_WAKE_ALARM، CAP_BLOCK_SUSPEND، ...) التي يجب ضبطها في مجموعات القدرات المحيطة والمحددة لجميع جلسات المستخدم. انظر capabilities(7) لمزيد من التفاصيل حول مفهوم القدرات. يمكن استخدام هذه الخيارات أكثر من مرة، وفي هذه الحالة تُجمع القوائم المحددة. إذا بدأت المعلمة بحرف "~" فسيُعكس التأثير: حيث تُسقط القدرة المحددة من المجموعة المعينة.

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

--access-mode=الوضع
    يأخذ وضع وصول لملفات يونكس مكتوباً بالنظام الثماني. يضبط وضع الوصول لمجلد المنزل نفسه. لاحظ أن هذا يُستخدم فقط عند إنشاء المجلد لأول مرة، ويمكن للمستخدم تغيير ذلك في أي وقت لاحقاً. مثال: --access-mode=0700

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

--umask=القناع
    يأخذ قناع وضع الوصول (بالصيغة الثمانية) ليُطبق على الملفات والمجلدات المنشأة حديثاً للمستخدم ("umask"). إذا ضُبط، فإنه يتحكم في قناع umask الأولي لجميع جلسات ولوج المستخدم، مع إمكانية تجاوز القيم المبدئية للنظام.

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

--skel=المسار
    يأخذ مسار نظام ملفات إلى دليل. يحدد دليل الهيكل (skeleton) لبدء دليل المنزل به. تُنسخ جميع الملفات والأدلة الموجودة في المسار المحدد إلى أي دليل منزل يُنشأ حديثا. وإذا لم يحدد، فإنه يستخدم /etc/skel/ مبدئيا.

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

--shell=الصدفة
    يأخذ مسار نظام ملفات. يحدد الملف التنفيذي للصدفة لتشغيله عند الولوج عبر الطرفية. وإذا لم يحدد، فإنه يستخدم /bin/bash مبدئيا.

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

--setenv=المتغير[=القيمة]
    يأخذ تعيين متغير بيئة لضبطه لجميع عمليات المستخدم. يمكن استخدامه عدة مرات لضبط متغيرات بيئة متعددة. عند حذف "=" و القيمة، ستُستخدم قيمة المتغير الذي يحمل نفس الاسم في بيئة البرنامج.

    لاحظ أن عددا من الإعدادات الأخرى تؤدي أيضا إلى ضبط متغيرات البيئة للمستخدم، بما في ذلك --email= و --timezone= و --language=.

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

--timezone=المنطقة_الزمنية
    يأخذ اسم موقع منطقة زمنية لضبط المنطقة الزمنية للمستخدم المحدد. عندما يلج المستخدم، يُبدأ متغير البيئة $TZ من هذا الإعداد. مثال: --timezone=Europe/Amsterdam سيؤدي إلى متغير البيئة "TZ=:Europe/Amsterdam". (تُستخدم ":" عمدا كجزء من تخصيص المنطقة الزمنية، انظر tzset(3).)

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

--language=اللغة
    يأخذ قائمة من اللغات التي يفضلها المستخدم مفصولة بفاصلة أو نقطتين، مرتبة حسب الأولوية التنازلية. تُبدأ متغيرات البيئة $LANG و $LANGUAGE من هذه القيمة عند الولوج، وبالتالي تُقبل هنا القيم المناسبة لمتغيرات البيئة هذه، على سبيل المثال --language=de_DE.UTF-8. يمكن استخدام هذا الخيار أكثر من مرة، وفي هذه الحالة تُسلسل قوائم اللغات.

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

--default-area=المنطقة
    يأخذ نصا يحدد "منطقة" دليل منزل لاستخدامها مبدئيا. المناطق هي أدلة منزل ثانوية داخل دليل المنزل الرئيس للمستخدم. عند الولوج، يمكن للمستخدم تحديد المنطقة التي يرغب في الولوج إليها، مما يضمن ضبط متغير البيئة $HOME إلى ~/Areas/ ملحوقا باسم المنطقة.

    للحصول على تفاصيل حول مفهوم المنطقة، انظر pam_systemd_home(8). لاحظ أن هذا الخيار يحدد القيمة المبدئية فقط، والتي يمكن تخطيها وقت الولوج.

    عند تحديد هذا الخيار بنص فارغ كقيمة، تُزال أي منطقة مبدئية أُعلنت سابقا من سجل المستخدم.

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

خصائص سجل مستخدم الاستيثاق

--ssh-authorized-keys=المفاتيح
    إما أن يأخذ سطر مفتاح SSH مخول لربطه بسجل المستخدم أو حرف "@" متبوعا بمسار ملف لقراءة سطر واحد أو أكثر من هذه السطور منه. تُتاح مفاتيح SSH المضبوطة بهذه الطريقة لـ SSH للسماح بالوصول إلى دليل المنزل وسجل المستخدم هذا. يمكن استخدام هذا الخيار أكثر من مرة لضبط مفاتيح SSH متعددة.

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

--pkcs11-token-uri=المسار
    يأخذ مسار PKCS#11 وفق RFC 7512 يشير إلى رمز أمان (مثل YubiKey أو بطاقة PIV ذكية) يجب أن يكون قادرا على فك قفل حساب المستخدم. يجب أن يشير مسار رمز الأمان إلى رمز أمان يحتوي على زوج واحد بالضبط من شهادة X.509 ومفتاح خاص. يُنشأ بعد ذلك مفتاح سري عشوائي، ويُعمى باستخدام المفتاح العام لشهادة X.509، ويُخزن كجزء من سجل المستخدم. وفي وقت الولوج، تُفك تعميته باستخدام وحدة PKCS#11 ثم يُستخدم لفك قفل الحساب والموارد المرتبطة به. انظر أدناه للحصول على مثال لكيفية إعداد الاستيثاق باستخدام رمز أمان.

    بدلا من مسار PKCS#11 صالح، يمكن تحديد النصوص الخاصة "list" و "auto". إذا مُرر "list"، يُعرض جدول موجز لرموز عتاد PKCS#11 المناسبة والموصلة حاليا، مع مساراتها. وإذا مُرر "auto"، يُختار رمز عتاد PKCS#11 مناسب آليا (ستفشل هذه العملية إذا لم يُكتشف رمز واحد مناسب بالضبط). الخيار الأخير هو اختصار مفيد للحالة الأكثر شيوعا حيث يكون هناك رمز عتاد PKCS#11 واحد موصل.

    لاحظ أن العديد من رموز أمان العتاد تدعم كلا من PKCS#11/PIV و FIDO2 مع ملحق "hmac-secret" (على سبيل المثال: سلسلة YubiKey 5)، كما هو مدعوم في الخيار --fido2-device= أدناه. كلتا الآليتين قويتان بشكل مماثل، على الرغم من أن FIDO2 هي التقنية الأحدث. تتمتع رموز PKCS#11/PIV بميزة إمكانية التعرف عليها قبل الاستيثاق، وبالتالي يمكن استخدامها للإشارة إلى هوية المستخدم لاستخدامها في الولوج، وهو ما لا يسمح به FIDO2. تتطلب أجهزة PKCS#11/PIV عموما التهيئة (أي تخزين زوج مفاتيح خاص/عام عليها، انظر المثال أدناه) قبل استخدامها؛ أما رموز أمان FIDO2 فلا تتطلب ذلك عموما، وتعمل فور توصيلها.

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

--fido2-credential-algorithm=نص
    تحديد خوارزمية COSE المستخدمة في إنشاء بيانات الاعتماد. القيمة المبدئية هي "es256". القيم المدعومة هي "es256" و "rs256" و "eddsa".

    تشير "es256" إلى ECDSA عبر NIST P-256 مع SHA-256. بينما تشير "rs256" إلى RSA بطول 2048 بت مع حشوة PKCS#1.5 و SHA-256. وتشير "eddsa" إلى EDDSA عبر Curve25519 مع SHA-512.

    لاحظ أن المستوثِق الخاص بك قد يختار عدم دعم بعض الخوارزميات.

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

--fido2-device=مسار
    يأخذ مسارا لجهاز Linux "hidraw" (مثل /dev/hidraw1)، يشير إلى رمز أمان FIDO2 يدعم ملحق "hmac-secret" الذي يجب أن يكون قادرا على فك قفل حساب المستخدم. تُنشأ قيمة تمليح عشوائية على المضيف وتُمرر إلى جهاز FIDO2، الذي يحسب هاش HMAC للتمليح باستخدام مفتاح سري داخلي. تُستخدم النتيجة بعد ذلك كمفتاح لفك قفل حساب المستخدم. يُدرج التمليح العشوائي في سجل المستخدم، بحيث يمكن تمريره إلى رمز FIDO2 مرة أخرى كلما دعت الحاجة إلى الاستيثاق.

    بدلا من مسار صالح لجهاز FIDO2 "hidraw"، يمكن تحديد النصوص الخاصة "list" و "auto". إذا مُرر "list"، يُعرض جدول موجز لأجهزة FIDO2 المكتشفة والمناسبة. وإذا مُرر "auto"، يُختار رمز FIDO2 مناسب آليا، إذا اكتُشف رمز واحد بالضبط. الخيار الأخير هو اختصار مفيد للحالة الأكثر شيوعا حيث يكون هناك رمز عتاد FIDO2 واحد موصل.

    لاحظ أن أجهزة FIDO2 المناسبة لهذا الخيار يجب أن تدعم ملحق "hmac-secret". تدعمه معظم الأجهزة الحالية (مثل سلسلة YubiKey 5). إذا لم يُدعم الملحق، فلا يمكن استخدام الجهاز لفك قفل أدلة المنزل.

    يمكن إزالة جهاز FIDO2 لاحقا عن طريق ضبط مسار الجهاز على نص فارغ (على سبيل المثال homectl update $USER --fido2-device="").

    لاحظ أن العديد من رموز أمان العتاد تدعم كلا من FIDO2 و PKCS#11/PIV (وبالتالي يمكن استخدامها مع --fido2-device= أو --pkcs11-token-uri=)، للنقاش انظر أعلاه.

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

--fido2-with-client-pin=قيمة_منطقية
    عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب من المستخدم إدخال رمز PIN عند فك قفل الحساب (ميزة "clientPin" في FIDO2). القيمة المبدئية هي "yes". (ملاحظة: هذا الإعداد ليس له تأثير إذا كان رمز الأمان لا يدعم ميزة "clientPin" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

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

--fido2-with-user-presence=قيمة_منطقية
    عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب من المستخدم التحقق من الحضور (النقر على الرمز، ميزة "up" في FIDO2) عند فك قفل الحساب. القيمة المبدئية هي "yes". (ملاحظة: هذا الإعداد ليس له تأثير إذا كان رمز الأمان لا يدعم ميزة "up" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

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

--fido2-with-user-verification=قيمة_منطقية
    عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب التحقق من المستخدم عند فك قفل الحساب (ميزة "uv" في FIDO2). القيمة المبدئية هي "no". (ملاحظة: هذا الإعداد ليس له تأثير إذا كان رمز الأمان لا يدعم ميزة "uv" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

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

--recovery-key=قيمة_منطقية
    يقبل قيمة منطقية كمعامل. في حال تفعيله، يُضبط مفتاح استرداد للحساب. مفتاح الاسترداد هو مفتاح وصول يُنشئه الحاسوب ويمكن استخدامه لاستعادة الوصول إلى الحساب إذا نُسيت كلمة السر أو فُقد رمز الاستيثاق. يُنشأ المفتاح ويُعرض على الشاشة، ويجب طباعته أو نقله إلى مكان آمن بطريقة أخرى. يمكن إدخال مفتاح الاسترداد بدلا من كلمة السر العادية لفك قفل الحساب.

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

خصائص سجل مستخدم دليل BLOB

--blob=المسار، -b المسار، --blob=اسم_الملف=المسار، -b اسم_الملف=المسار
    يقبل إما مسار دليل، أو اسم ملف متبوعا بمسار ملف. إذا حُدد مسار دليل فقط، فسيُستبدل دليل blob بالكامل للمستخدم بالمسار المحدد. لاحظ أن هذا الاستبدال يُنفذ قبل تطبيق المعالجات الخاصة بكل ملف، مما يعني أن هذه المعالجات ستُطبق فوق الدليل المحدد. إذا حُدد اسم ملف ومسار ملف، فسيُكتب فوق ملف blob الواحد المحدد بالمسار المحدد. إذا ترك فارغا تماما، فسيُفرغ دليل blob بالكامل (مما يعيد أيضا ضبط جميع الأعلام السابقة المتعلقة بـ blob حتى هذه النقطة). إذا حُدد اسم ملف ولكن المسار المقابل فارغ، فسيُحذف هذا الملف الواحد من دليل blob. تُنفذ جميع التغييرات في نسخ مؤقتة من الملفات المحددة في الأدلة، مما يعني أن الأصول المحددة في سطر الأوامر لا تُعدل. انظر أدلة Blob لسجل المستخدم[3] لمزيد من المعلومات حول أدلة blob.

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

--avatar=المسار، --login-background=المسار
    يقبل مسار ملف. في حال ضبطه، يُستخدم الملف المحدد للكتابة فوق الملف المقابل في دليل blob الخاص بالمستخدم. إذا كان فارغا، يُحذف الملف المقابل من دليل blob. في الأساس، هذه الخيارات هي اختصارات لـ --blob=اسم_الملف=المسار لأسماء الملفات المعروفة المحددة في أدلة Blob لسجل المستخدم[3].

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

خصائص سجل مستخدم إدارة الحساب

--locked=قيمة_منطقية
    يأخذ قيمة منطقية كمعامل. يحدد ما إذا كان يجب قفل حساب المستخدم هذا. إذا كانت القيمة صائبة، يُمنع الولوج إلى هذا الحساب، وإذا كانت خاطئة (المبدئي) يُسمح به (بالطبع، فقط إذا نجح التخويل بطريقة أخرى).

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

--not-before=الختم_الزمني، --not-after=الختم_الزمني
    تأخذ هذه الخيارات نص ختم زمني، بالتنسيق الموثق في systemd.time(7) وتضبط نقاطا زمنية قبلها وبعدها لا يُسمح بالولوج إلى هذا الحساب.

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

--rate-limit-interval=ثوانٍ، --rate-limit-burst=عدد
    يضبط حدا لمعدل محاولات الاستيثاق لهذا المستخدم. إذا حاول المستخدم الاستيثاق أكثر من العدد المحدد، على نظام معين، خلال الفترة الزمنية المحددة، يُرفض الاستيثاق حتى تنتهي الفترة الزمنية. المبدئي هو 10 مرات لكل دقيقة واحدة.

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

--password-hint=نص
    يأخذ تلميحا لكلمة السر لتخزينه جنبا إلى جنب مع سجل المستخدم. يُخزن هذا النص بحيث لا يمكن الوصول إليه إلا للمستخدمين ذوي الامتيازات والمستخدم نفسه ولا يمكن للمستخدمين الآخرين الاستعلام عنه. مثال: --password-hint="اسم أول حيوان أليف لي".

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

--enforce-password-policy=قيمة_منطقية، -P
    يأخذ قيمة منطقية كمعامل. يضبط ما إذا كان سيُفرض تطبيق سياسة كلمة سر النظام لهذا المستخدم، فيما يتعلق بجودة وقوة كلمات السر المختارة. المبدئي هو التشغيل. -P هو اختصار لـ --enforce-password-policy=no.

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

--password-change-now=قيمة_منطقية
    يأخذ قيمة منطقية كمعامل. إذا كانت القيمة صائبة، سيُطلب من المستخدم تغيير كلمة سره عند الولوج التالي.

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

--password-change-min=الزمن، --password-change-max=الزمن، --password-change-warn=الزمن، --password-change-inactive=الزمن
    يأخذ كل خيار من هذه الخيارات تعيين فترة زمنية كمعامل (بالصيغة الموثقة في systemd.time(7)) ويضبط جوانب مختلفة من سياسة انتهاء صلاحية كلمة سر المستخدم. تحديدا، يضبط --password-change-min= مقدار الوقت الذي يجب أن يمر بعد تغيير كلمة سر المستخدم حتى يمكن تغيير كلمة السر مرة أخرى. إذا حاول المستخدم تغيير كلمة سره قبل مرور هذا الوقت، تُرفض المحاولة. يضبط --password-change-max= متى تنتهي صلاحية كلمة السر بعد تغييرها وتحتاج إلى تغييرها مرة أخرى. بعد مرور هذا الوقت، لا يمكن متابعة الولوج إلا بعد تغيير كلمة السر. يحدد --password-change-warn= مقدار الوقت الذي يسبق الوقت المضبوط في --password-change-max= والذي يُحذر فيه المستخدم عند الولوج لتغيير كلمة سره لأنها ستنتهي صلاحيتها قريبا. أخيرا، يضبط --password-change-inactive= الوقت الذي يجب أن يمر بعد انتهاء صلاحية كلمة السر حتى لا يُسمح للمستخدم بالولوج أو تغيير كلمة السر بعد الآن. لاحظ أن هذه الخيارات تنطبق فقط على الاستيثاق بكلمة السر، ولا تنطبق على أشكال الاستيثاق الأخرى، مثل الاستيثاق برموز الأمان القائم على PKCS#11.

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

خصائص سجل مستخدم إدارة الموارد

--disk-size=بايتات
    إما أن يأخذ حجما بالبايت كمعامل (ربما باستخدام اللاحقات المعتادة K، M، G، ... لقيم الأساس 1024)، أو قيمة مئوية، أو النصوص الخاصة "min" أو "max"، ويضبط مساحة القرص المخصصة للمستخدم. إذا حُددت قيمة مئوية (أي المعامل الملحوق بـ "%") فستؤخذ بالنسبة إلى مساحة القرص المتاحة لنظام الملفات الخلفي. إذا حُدد بـ "min"، فإنه يخصص الحد الأدنى من مساحة القرص التي تسمح بها قيود نظام الملفات الخلفي والحدود الأخرى، وعند تحديده بـ "max" يخصص أقصى مساحة قرص متاحة. إذا استُخدم محرك LUKS2، فإن هذا يضبط حجم ملف loopback ونظام الملفات الموجود بداخله. وبالنسبة لمحركات التخزين الأخرى، يضبط حصة القرص (quota) باستخدام منطق الحصص الأصلي لنظام الملفات، إذا كان متاحا. وإذا لم يحدد، فإنه يستخدم 85% من مساحة القرص المتاحة لمحرك LUKS2 ومبدئيا لا توجد حصة للآخرين.

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

--nice=الأولوية
    يأخذ أولوية الجدولة الرقمية ("nice level") لتطبيقها على عمليات المستخدم عند وقت الولوج. يأخذ قيمة رقمية في النطاق من -20 (أعلى أولوية) إلى 19 (أقل أولوية).

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

--rlimit=الحد=القيمة[:القيمة]
    يسمح بضبط حدود الموارد لعمليات هذا المستخدم، انظر getrlimit(2) لمزيد من التفاصيل. يأخذ اسم حد المورد (مثل "LIMIT_NOFILE") متبوعا بعلامة يساوي، متبوعا بحد رقمي. اختياريا، يمكن تحديد حد رقمي ثانٍ مفصولا بنقطتين. إذا حُدد اثنان، فهذا يشير إلى الحدود اللينة والصلبة على التوالي. إذا حُدد حد واحد فقط، فإن الإعداد يضبط كلا الحدين معا.

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

--tasks-max=المهام
    يأخذ عددا صحيحا غير سالب وغير صفري كمعامل. يضبط الحد الأقصى لعدد المهام (أي الخيوط، حيث تكون كل عملية خيطا واحدا على الأقل) التي قد يمتلكها المستخدم في أي وقت معين. ينطبق هذا الحد على جميع المهام المتفرعة من جلسات المستخدم، حتى لو غيروا هوية المستخدم عبر su(1) أو أداة مماثلة. استخدم --rlimit=LIMIT_NPROC= لوضع حد للمهام التي تعمل فعليا تحت معرف المستخدم UID، وبالتالي استبعاد أي عمليات أبناء قد غيرت هوية المستخدم. يتحكم هذا في إعداد TasksMax= لوحدة شريحة systemd لكل مستخدم user-$UID.slice. انظر systemd.resource-control(5) لمزيد من التفاصيل.

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

--memory-high=بايتات، --memory-max=بايتات
    ضبط حد للذاكرة التي قد يستهلكها المستخدم على نظام ما في أي وقت معين بالبايت (تدعم اللاحقات المعتادة K، M، G، ... بأساس 1024). يشمل ذلك جميع الذاكرة المستخدمة من قبل المستخدم نفسه وجميع العمليات التي فرعها والتي غيرت بيانات اعتماد المستخدم. يتحكم هذا في إعدادات MemoryHigh= و MemoryMax= لوحدة شريحة systemd لكل مستخدم user-$UID.slice. انظر systemd.resource-control(5) لمزيد من التفاصيل.

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

--cpu-weight=الوزن، --io-weight=الوزن
    ضبط أوزان جدولة المعالج والمدخلات/المخرجات (IO) لعمليات المستخدم، بما في ذلك العمليات المتفرعة من قبل المستخدم والتي غيرت بيانات اعتماد المستخدم. يأخذ قيمة رقمية في النطاق 1...10000. يتحكم هذا في إعدادات CPUWeight= و IOWeight= لوحدة شريحة systemd لكل مستخدم user-$UID.slice. انظر systemd.resource-control(5) لمزيد من التفاصيل.

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

خصائص سجل مستخدم التخزين

--tmp-limit=بايتات، --tmp-limit=نسبة_مئوية، --dev-shm-limit=بايتات، --dev-shm-limit=نسبة_مئوية
    يتحكم في حصة كل مستخدم في /tmp/ و /dev/shm/ التي تُطبق عند ولوج المستخدم. يأخذ إما قيمة مطلقة بالبايت (مع اللاحقات المعتادة K، M، G، T بأساس 1024)، أو نسبة مئوية. في الحالة الأخيرة، يُطبق الحد بالنسبة إلى حجم نظام الملفات المعني. لا يُطبق هذا الحد إلا إذا كان نظام الملفات المعني من نوع "tmpfs" وليس له تأثير بخلاف ذلك. لاحظ أنه إذا لم تُستخدم هذه الخيارات، فقد تُفرض حصة مبدئية (عادة 80%.)

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

--storage=التخزين
    يختار آلية التخزين المراد استخدامها لدليل المنزل هذا. يأخذ واحدا من "luks"، "fscrypt"، "directory"، "subvolume"، "cifs". للحصول على تفاصيل حول هذه الآليات، انظر أعلاه. إذا أُنشئ دليل منزل جديد ولم يُحدد نوع التخزين تحديدا، فإن homed.conf(5) يحدد التخزين المبدئي المراد استخدامه.

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

--image-path=المسار
    يأخذ مسار نظام ملفات. يضبط مكان وضع دليل منزل المستخدم. عند استخدام تخزين LUKS2، فإنه يشير إلى مسار ملف loopback، وإلا فإنه يشير إلى مسار دليل المنزل (الذي قد يكون في /home/ أو أي نظام ملفات آخر يمكن الوصول إليه). وعندما لا يحدد، فإنه يستخدم /home/$USER.home مبدئيا عند استخدام تخزين LUKS و /home/$USER.homedir لآليات التخزين الأخرى. غير محدد لآلية التخزين "cifs". لاستخدام تخزين LUKS2 على جهاز كتلي عادي (على سبيل المثال ذاكرة USB) مرر مسار الجهاز الكتلي هنا. لا يُسمح بتحديد مسار لدليل هنا عند استخدام تخزين LUKS2. وبالمثل، لا يُسمح بتحديد مسار لملف عادي أو عقدة جهاز إذا استُخدم أي من محركات التخزين الخلفية الأخرى.

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

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

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

خصائص سجل مستخدم تخزين LUKS

--fs-type=النوع
    عند استخدام تخزين LUKS2، يضبط نوع نظام الملفات المراد استخدامه داخل حاوية LUKS2 لدليل المنزل. واحد من "btrfs"، "ext4"، "xfs". إذا لم يحدد، فإن homed.conf(5) يحدد نوع نظام الملفات المبدئي المراد استخدامه. لاحظ أن "xfs" غير موصى به لأن دعمه لتغيير حجم نظام الملفات محدود للغاية.

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

--luks-discard=قيمة_منطقية
    عند استخدام تخزين LUKS2، يضبط ما إذا كان سيتم تمكين ميزة "التجاهل" (discard) لنظام الملفات. إذا فُعّلت، سيقوم نظام الملفات الموجود فوق حجم LUKS2 بإبلاغ معلومات الكتل الفارغة إلى LUKS2 وملف loopback الموجود أسفله، مما يضمن إعادة المساحة الفارغة في دليل المنزل إلى نظام الملفات الخلفي أسفل حجم LUKS2، مما ينتج عنه ملف loopback "خفيف" (sparse). هذا الخيار يكون معطلا مبدئيا في الغالب، لأن هذا يسمح بالإفراط في تخصيص أدلة المنزل مما يؤدي إلى أخطاء إدخال/إخراج إذا امتلأ نظام الملفات الأساسي بينما يريد نظام الملفات العلوي تخصيص كتلة. مثل هذه الأخطاء في الإدخال/الإخراج لا يتم التعامل معها بشكل جيد بشكل عام بواسطة أنظمة الملفات ولا التطبيقات. عند استخدام تخزين LUKS2 فوق أجهزة كتلية عادية (بدلا من ملف loopback) يكون منطق التجاهل مفعلا مبدئيا.

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

--luks-offline-discard=قيمة_منطقية
    مشابه لـ --luks-discard=، يتحكم في تقليم (trimming) نظام الملفات. ومع ذلك، بينما يتحكم --luks-discard= فيما يحدث عندما يكون دليل المنزل نشطا، يتحكم --luks-offline-discard= فيما يحدث عندما يصبح غير نشط، أي ما إذا كان سيتم تقليم/تخصيص التخزين عند إلغاء تنشيط دليل المنزل. هذا الخيار يكون مفعلا مبدئيا، لضمان تقليل مساحة القرص أثناء عدم ولوج المستخدم.

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

--luks-extra-mount-options=الخيارات
    يأخذ نصا يحتوي على خيارات وصل إضافية لاستخدامها عند وصل حجم LUKS. إذا حُدد، فسيُلحق هذا النص بخيارات الوصل المبدئية المضمنة. المبدئي هو "compress=zstd:1,noacl,user_subvol_rm_allowed".

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

--luks-cipher=الشفرة، --luks-cipher-mode=الوضع، --luks-volume-key-size=بايتات، --luks-pbkdf-type=النوع، --luks-pbkdf-hash-algorithm=الخوارزمية، --luks-pbkdf-force-iterations=التكرارات، --luks-pbkdf-time-cost=ثوانٍ، --luks-pbkdf-memory-cost=بايتات، --luks-pbkdf-parallel-threads=الخيوط، --luks-sector-size=بايتات
    يضبط معايير تعمية مختلفة لآلية تخزين LUKS2. انظر cryptsetup(8) للحصول على تفاصيل حول سمات محددة.

    لاحظ أن homectl يستخدم البايتات لحجم المفتاح، مثل /proc/crypto، ولكن cryptsetup(8) يستخدم البتات.

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

--auto-resize-mode=
    يضبط ما إذا كان سيتم تكبير و/أو تصغير نظام الملفات الخلفي آليا عند الولوج والخروج. يأخذ أحد النصوص "off"، "grow"، "shrink-and-grow". ينطبق فقط على محرك LUKS2 حاليا، وإذا استُخدم نظام ملفات btrfs بداخله (لأنه حينها فقط يُدعم التكبير/التصغير المباشر لنظام الملفات). المبدئي هو "shrink-and-grow" إذا استُخدم LUKS2/btrfs، وإلا فإنه يكون معطلا "off". إذا ضُبط على "off"، فلن يتم إجراء أي تصغير/تكبير آلي أثناء الولوج أو الخروج. إذا ضُبط على "grow"، فسيتم تكبير منطقة المنزل إلى الحجم المضبوط عبر --disk-size= إذا كانت أصغر حاليا. إذا كانت تطابق الحجم المضبوط بالفعل أو أكبر منه، فلن تُنفذ أي عملية. إذا ضُبط على "shrink-and-grow"، فسيتم أيضا تغيير حجم منطقة المنزل أثناء الخروج إلى الحد الأدنى للحجم الذي تسمح به مساحة القرص المستخدمة وقيود نظام الملفات. يضمن هذا الوضع أنه أثناء تنشيط منطقة المنزل، يتم ضبط حجمها على الحجم المختار، ولكن أثناء إلغاء تنشيطها، يتم ضغطها لتشغل فقط الحد الأدنى الممكن من المساحة. لاحظ أنه إذا أُغلق النظام بشكل غير طبيعي أو إذا لم يخرج المستخدم بشكل نظيف، فلن تتم عملية التصغير، ويتعين على المستخدم الولوج/الخروج مرة أخرى قبل تنفيذها مرة أخرى.

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

--rebalance-weight=
    يهيئ معامل الوزن لمنطق إعادة توازن المساحة الحرة على القرص. ينطبق هذا فقط على الواجهة الخلفية LUKS2 (بما أن مساحة القرص في LUKS2 تُخصص من نظام ملفات loopback لكل مستخدم بدلاً من التخصيص المباشر من مجمع مشترك كما في الواجهات الأخرى). تُوزع المساحة الحرة في مناطق المنزل النشطة ومساحة التخزين الخلفية في فترات منتظمة، مع مراعاة قيمة الوزن المحددة هنا. يتوقع قيمة صحيحة بين 1 و 10000، أو السلسلة الخاصة "off". إذا لم يُحدد، فإنه يفترض 100 افتراضيًا. يُستخدم الوزن لتوسيع المساحة الحرة المتاحة: منطقة المنزل بوزن 200 ستحصل على ضعف المساحة التي تحصل عليها منطقة بوزن 100. سيُخصص لنظام الملفات الخلفي مساحة بوزن 20. إذا ضُبط على "off" فلن يتم توزيع المساحة تلقائيًا. لاحظ أن تغيير الحجم صراحةً (بأمر homectl resize) سيؤدي لإيقاف إعادة التوازن التلقائي ضمنيًا. لإعادة تفعيله، استخدم --rebalance-weight= مع معامل فارغ.

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

خصائص سجل المستخدم الخاصة بالوصل

--nosuid=BOOL, --nodev=BOOL, --noexec=BOOL
    يهيئ خيارات الوصل "nosuid" و "nodev" و "noexec" للأدلة المنزلية. افتراضيًا، يتم تفعيل "nodev" و "nosuid"، بينما يكون "noexec" معطلاً. للتفاصيل راجع mount(8).

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

خصائص سجل مستخدم CIFS

--cifs-domain=DOMAIN, --cifs-user-name=USER, --cifs-service=SERVICE, --cifs-extra-mount-options=OPTIONS
    يهيئ نطاق ومستخدم مشاركة ملفات ويندوز (CIFS) لربطهما بالدليل المنزلي، وكذلك مشاركة الملفات ("الخدمة") التي ستوصل كدليل. يُستخدم الأخير عند اختيار تخزين "cifs". يجب تحديد المشاركة بالتنسيق "//host/share/directory/...". جزء الدليل اختياري؛ إذا لم يُحدد، فسيُوضع الدليل المنزلي في المستوى الأعلى للمشاركة. يتيح --cifs-extra-mount-options= تحديد خيارات وصل إضافية، راجع mount.cifs(8) للتفاصيل.

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

خصائص سجل سلوك تسجيل الدخول

--stop-delay=SECS
    يهيئ الوقت الذي سيستمر فيه مدير خدمة المستخدم في العمل بعد انتهاء جميع جلساته. يُضبط الافتراضي في logind.conf(5) (على الرغم من أنه يكون 0 افتراضيًا لتخزين LUKS2 على الوسائط القابلة للإزالة). الوقت الأطول يجعل عمليات تسجيل الدخول المتكررة والسريعة أكثر كفاءة.

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

--kill-processes=BOOL
    يحدد ما إذا كان سيتم إنهاء جميع عمليات المستخدم عند تسجيل الخروج. يُضبط الافتراضي في logind.conf(5).

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

--auto-login=BOOL
    يأخذ وسيطًا منطقيًا. يحدد ما إذا كان يجب على الواجهة الرسومية تسجيل دخول هذا المستخدم تلقائيًا. الافتراضي هو الإيقاف (off). يُعطل الدخول التلقائي إذا تم تمييز أكثر أو أقل من مستخدم واحد بهذه الطريقة.

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

--session-launcher=LAUNCHER
    يأخذ وسيطًا نصيًا. يحدد ملف .desktop لمشغل الجلسة المفضل للمستخدم (مثل "gnome" أو "plasma"). يقرأ مدير العرض هذا الإعداد لاختيار الجلسة الافتراضية عند الدخول.

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

--session-type=TYPE
    يأخذ وسيطًا نصيًا. يحدد نوع الجلسة المفضل (مثل "x11" أو "wayland"). يستخدمه مدير العرض لاختيار نوع الجلسة الافتراضي.

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

الأوامر

الأوامر التالية مفهومة:

list
    يسرد جميع الأدلة المنزلية (مع تفاصيل موجزة) التي تديرها خدمة systemd-homed حالياً. يتم تنفيذ هذا الأمر افتراضياً إذا لم يُحدد غيره. (ملاحظة: القائمة لا تشمل المستخدمين المدارين بواسطة أنظمة فرعية أخرى مثل مستخدمي النظام في /etc/passwd).

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

activate USER [USER...]
    تنشيط دليل منزلي أو أكثر. سيتم إتاحة الأدلة تحت نقاط الوصل الخاصة بها (غالباً /home/$USER). يظل المنزل نشطاً إلى أن يُلغى تنشيطه صراحةً (بأمر deactivate) أو عند تسجيل خروج المستخدم.

    تنشيط الدليل المنزلي يتضمن عمليات تعتمد على آلية التخزين. في LUKS2 يشمل ذلك عادةً: طلب كلمة المرور، إعداد جهاز loopback، تنشيط وحدة LUKS2، فحص نظام الملفات ووصله، وتغيير الملكية إلى معرف المستخدم/المجموعة الصحيح.

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

deactivate USER [USER...]
    إلغاء تنشيط دليل منزلي أو أكثر؛ وهذا يعكس تأثير أمر activate.

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

inspect USER [USER...]
    عرض تفاصيل حول الأدلة المنزلية المحددة، بما في ذلك بيانات وقت التشغيل (الحالة، استخدام القرص، إلخ). استخدم --json= لعرض سجل المستخدم بتنسيق JSON.

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

authenticate USER [USER...]
    التحقق من بيانات المصادقة للدليل المنزلي. يطلب كلمة مرور للتحقق من قدرتها على فك قفل الدليل، دون تغيير حالة نشاطه الحالية.

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

create USER, create --identity=PATH [USER]
    إنشاء دليل منزلي أو حساب مستخدم جديد بالاسم المحدد، مع التحكم في خصائصه باستخدام الخيارات المذكورة سابقاً.

    يجب أن يتبع اسم المستخدم المختار الصيغة الصارمة الموضحة في صيغة أسماء المستخدمين/المجموعات.

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

adopt PATH [PATH...]
    تبني أدلة منزلية موجودة مسبقاً (مثل ملفات *.home أو مجلدات *.homedir) وجعلها متاحة للدخول محلياً دون نقلها من مكانها.

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

register FILE [FILE...]
    تسجيل مستخدم أو أكثر دون إنشاء أدلة منزلية لهم، وذلك باستخدام ملفات سجل JSON.

    يجعل التسجيل المستخدم متاحاً على النظام المحلي دون إنشاء مجلد جديد، وهو مفيد لنقل صلاحيات الوصول لمستخدم أُنشئ على نظام آخر.

    إليك مثال على إتاحة حساب محلي على نظام بعيد باستخدام مشاركة CIFS (كجذر):

        # smbpasswd -a lennart

    أكمل كمستخدم عادي "lennart":

        $ homectl update lennart --ssh-authorized-keys=... -N --storage=cifs --cifs-service="//$HOSTNAME/lennart"
        $ homectl get-signing-key | ssh targetsystem homectl add-signing-key --key-name="$HOSTNAME".public
        $ homectl inspect -E lennart | ssh targetsystem homectl register -
        $ ssh lennart@targetsystem

    يضمن هذا أولاً تعريف الحساب لـ Samba، ثم يهيئ CIFS كتخزين افتراضي، ويضيف مفتاح توقيع الحساب للنظام المستهدف ويسجل الحساب هناك. أخيراً يتم تسجيل الدخول للنظام البعيد الذي سيتصل بدوره عبر CIFS للوصول للمنزل.

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

unregister USER...
    إلغاء تسجيل حساب أو أكثر؛ هذا يزيل السجل فقط ولا يحذف الدليل المنزلي. يتحول السجل إلى حالة "غير مثبت" (unfixated) ويفقد ارتباطه بالنظام المحلي إلى أن يتم الدخول إليه مجدداً.

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

remove USER
    حذف دليل منزلي/حساب مستخدم؛ يؤدي هذا لحذف سجل المستخدم والدليل المنزلي بمحتوياته تماماً.

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

update USER, update --identity=PATH [USER]
    تحديث حساب مستخدم أو دليل منزلي؛ استخدم الخيارات المتاحة لتعديل الخصائص أو قدم سجلاً كاملاً عبر --identity=.

    ملاحظة: لا يُسمح بتعديل السجلات غير الموقعة بمفتاح خاص محلي، إلا إذا كان السجل الجديد موقعاً بالفعل بمفتاح معترف به.

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

passwd USER
    تغيير كلمة مرور الدليل المنزلي أو الحساب المحدد.

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

resize USER BYTES
    تغيير المساحة المخصصة للدليل المنزلي. في LUKS2، يتم تغيير حجم ملف loopback ونظام الملفات تلقائياً. يتطلب تقليص ext4 إلغاء التنشيط أولاً، بينما لا يمكن تقليص xfs أبداً. في btrfs يمكن التوسيع والتقليص أثناء العمل. يمكن استخدام لواحق مثل G أو M، أو الكلمات "min" و "max".

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

lock USER
    تعليق الوصول للمنزل مؤقتاً ومسح مفاتيح التشفير من الذاكرة (خاص بـ LUKS2). تتوقف أي محاولة وصول حتى يُعاد فك القفل (المصادقة). مفيد عند تعليق النظام (suspend) لحماية البيانات.

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

unlock USER
    استئناف الوصول للمنزل وإلغاء تأثير القفل (lock)؛ يتطلب ذلك مصادقة المستخدم لاسترجاع مفاتيح التشفير.

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

lock-all
    قفل جميع الأدلة المنزلية المناسبة دفعة واحدة، ويُنفذ عادةً عند تعليق النظام لضمان مسح مفاتيح التشفير من الذاكرة.

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

deactivate-all
    إلغاء تنشيط جميع الأدلة النشطة دفعة واحدة عند إيقاف تشغيل النظام، لضمان إغلاقها بشكل سليم قبل فك وصل أنظمة الملفات.

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

with USER COMMAND...
    تنشيط منزل مستخدم، تشغيل أمر محدد، ثم إلغاء التنشيط ثانيةً. مفيد لعمليات النسخ الاحتياطي التي تتطلب فك قفل المنزل مؤقتاً.

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

rebalance
    إعادة موازنة المساحة الحرة بين مناطق المنزل النشطة والتخزين الخلفي (تزامنياً) بناءً على الأوزان المحددة.

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

firstboot
    يُستدعى عند التمهيد الأول للنظام لإنشاء مستخدم أولي تفاعلياً أو عبر بيانات اعتماد آلية تمرر للجهاز.

    يتم استدعاء هذا الأمر بواسطة وحدة الخدمة systemd-homed-firstboot.

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

list-signing-keys
    عرض قائمة بالمفاتيح العامة المستخدمة لتوقيع الأدلة المنزلية؛ يُنشأ مفتاح local.public تلقائياً للتواقيع المحلية.

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

get-signing-key [NAME...]
    إخراج المفتاح العام المحدد بتنسيق PEM؛ الافتراضي هو local.public.

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

add-signing-key [FILE...]
    إضافة مفاتيح عامة من ملفات PEM للسماح بدخول المستخدمين الحاملين لتواقيعها محلياً.

    هذا الأمر مفيد للسماح باستخدام الأدلة المحلية على نظام بعيد، مثال:

        homectl get-signing-key | ssh myotherhost homectl add-signing-key --key-name="$HOSTNAME".public

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

remove-signing-key NAME...
    إزالة المفتاح العام المحدد من قائمة المفاتيح المعترف بها للتسجيل.

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

بيانات الاعتماد

يدعم homectl مع أمر firstboot منطق بيانات اعتماد الخدمة (credentials)؛ راجع systemd.exec(5) للتفاصيل.

home.create.*
    إذا تم تمرير بيانات اعتماد تبدأ بـ "home.create." متبوعة باسم مستخدم صالح، فسيتم إنشاء منطقة منزل جديدة لكل منها.

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

سطر أوامر النواة

systemd.firstboot=
    قيمة منطقية لتعطيل تأثير أمر homectl firstboot، ويتم تفسيرها أساساً بواسطة systemd-firstboot(1).

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

حالة الخروج

عند النجاح، يُعاد الرقم 0، وإلا فيُعاد رمز فشل غير صفري.

عند استخدام أمر مع with، يتم نقل حالة خروج العملية الفرعية؛ حيث يخرج homectl بدون خطأ فقط إذا نجح استدعاء الأمر وانتهى بنجاح.

البيئة

$SYSTEMD_LOG_LEVEL
    الحد الأقصى لمستوى السجل للرسائل الصادرة (تُكتم الرسائل ذات مستوى السجل الأعلى، أي الأقل أهمية). يأخذ قائمة قيم مفصولة بفواصل. يمكن أن تكون القيمة إما واحدة من (بترتيب تنازلي للأهمية) emerg، أو alert، أو crit، أو err، أو warning، أو notice، أو info، أو debug، أو رقمًا صحيحًا في النطاق من 0 إلى 7. راجع syslog(3) لمزيد من المعلومات. يمكن اختياريًا سبق كل قيمة بأحد الخيارات console، أو syslog، أو kmsg أو journal متبوعة بنقطتين لضبط الحد الأقصى لمستوى السجل لهذا الهدف المحدد (مثلاً: SYSTEMD_LOG_LEVEL=debug,console:info يحدد التسجيل بمستوى debug باستثناء التسجيل في الطرفية الذي يجب أن يكون بمستوى info). لاحظ أن الحد الأقصى العالمي لمستوى السجل له الأولوية على أي حدود مستويات سجل لكل هدف على حدة.

$SYSTEMD_LOG_COLOR
    قيمة منطقية. إذا كانت صحيحة، فستُلون الرسائل المكتوبة في الـ tty حسب الأولوية.

    هذا الإعداد مفيد فقط عندما تُكتب الرسائل مباشرة إلى الطرفية، لأن journalctl(1) والأدوات الأخرى التي تعرض السجلات ستلون الرسائل بناءً على مستوى السجل من تلقاء نفسها.

$SYSTEMD_LOG_TIME
    قيمة منطقية. إذا كانت صحيحة، فستُسبق رسائل سجل الطرفية بختم زمني.

    هذا الإعداد مفيد فقط عندما تُكتب الرسائل مباشرة إلى الطرفية أو إلى ملف، لأن journalctl(1) والأدوات الأخرى التي تعرض السجلات ستُرفق طوابع زمنية بناءً على البيانات الوصفية للمدخلات من تلقاء نفسها.

$SYSTEMD_LOG_LOCATION
    قيمة منطقية. إذا كانت صحيحة، فستُسبق الرسائل باسم الملف ورقم السطر في الشيفرة المصدرية حيث نشأت الرسالة.

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

$SYSTEMD_LOG_TID
    قيمة منطقية. إذا كانت صحيحة، فستُسبق الرسائل بمعرّف الخيط الرقمي الحالي (TID).

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

$SYSTEMD_LOG_TARGET
    وجهة رسائل السجل. أحد الخيارات: console (التسجيل في الطرفية المرفقة)، أو console-prefixed (التسجيل في الطرفية المرفقة ولكن مع بادئات ترميز مستوى السجل و"المرفق"، راجع syslog(3)، أو kmsg (التسجيل في ذاكرة السجل الدائرية للنواة)، أو journal (التسجيل في اليوميات)، أو journal-or-kmsg (التسجيل في اليوميات إذا كانت متاحة، وفي kmsg بخلاف ذلك)، أو auto (تحديد هدف السجل المناسب آليًا، وهو المبدئي)، أو null (تعطيل مخرج السجل).

$SYSTEMD_LOG_RATELIMIT_KMSG
    فيما إذا كان سيُحد معدل kmsg أم لا. يأخذ قيمة منطقية. القيمة المبدئية هي "true". إذا عُطّل، فلن يحد systemd من معدل الرسائل المكتوبة في kmsg.

$SYSTEMD_PAGER، $PAGER
    مستعرض الصفحات المراد استخدامه عندما لا يُعطى الخيار --no-pager. يُستخدم $SYSTEMD_PAGER إذا كان مضبوطًا؛ وإلا فيُستخدم $PAGER. إذا لم يُضبط أي من $SYSTEMD_PAGER أو $PAGER، فتُجرب مجموعة من التطبيقات المعروفة لمستعرضات الصفحات تباعًا، بما في ذلك less(1) و more(1)، حتى يُعثر على أحدها. إذا لم يُكتشف أي تطبيق لمستعرض الصفحات، فلا يُستدعى أي مستعرض. ضبط متغيرات البيئة هذه على سلسلة فارغة أو القيمة "cat" يعادل تمرير الخيار --no-pager.

    ملاحظة: إذا لم يُضبط $SYSTEMD_PAGERSECURE، فلا يمكن استخدام $SYSTEMD_PAGER و $PAGER إلا لتعطيل مستعرض الصفحات (باستخدام "cat" أو "")، ويتم تجاهلهما فيما عدا ذلك.

$SYSTEMD_LESS
    تجاوز الخيارات الممررة إلى less (مبدئيًا "FRSXMK").

    قد يرغب المستخدمون في تغيير خيارين على وجه الخصوص:

    K
        يوجه هذا الخيار مستعرض الصفحات بالخروج فورًا عند الضغط على Ctrl+C. للسماح لـ less بالتعامل مع Ctrl+C بنفسه للعودة إلى محث أوامر المستعرض، قم بإلغاء ضبط هذا الخيار.

        إذا لم تتضمن قيمة $SYSTEMD_LESS الحرف "K"، وكان المستعرض المستدعى هو less، فسيُتجاهل Ctrl+C من قبل الملف التنفيذي، ويجب معالجته من قبل المستعرض.

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

    لاحظ أن ضبط متغير البيئة العادي $LESS ليس له أي تأثير عند استدعاء less بواسطة أدوات systemd.

    راجع less(1) لمزيد من النقاش.

$SYSTEMD_LESSCHARSET
    يتجاوز طقم المحارف الممرر إلى less (مبدئيًا "utf-8"، إذا حُدّد أن الطرفية المستدعية متوافقة مع UTF-8).

    لاحظ أن ضبط متغير البيئة العادي $LESSCHARSET ليس له أي تأثير عند استدعاء less بواسطة أدوات systemd.

$SYSTEMD_PAGERSECURE
    تدعم أوامر المستعرض (pager) الشائعة مثل less(1)، بالإضافة إلى "التصفح"، أي التمرير عبر المخرجات، فتح ملفات أخرى أو الكتابة إليها وتشغيل أوامر صدفة عشوائية. عند استدعاء الأوامر بامتيازات مرفوعة، على سبيل المثال تحت sudo(8) أو pkexec(1)، يصبح المستعرض حدًا أمنيًا. يجب الحرص على استخدام البرامج ذات الوظائف المحدودة للغاية فقط كمستعرضات، وعدم السماح بالميزات التفاعلية غير المقصودة مثل فتح ملفات جديدة أو إنشائها أو بدء عمليات فرعية. يمكن تمكين "الوضع الآمن" للمستعرض كما هو موضح أدناه، إذا كان المستعرض يدعم ذلك (معظم المستعرضات لم تُكتب بطريقة تأخذ هذا في الاعتبار). يوصى إما بتمكين "الوضع الآمن" صراحةً أو تعطيل المستعرض تمامًا باستخدام --no-pager أو PAGER=cat عند السماح للمستخدمين غير الموثوق بهم بتنفيذ أوامر بامتيازات مرفوعة.

    يأخذ هذا الخيار وسيطًا منطقيًا. عند ضبطه على صحيح (true)، يتم تمكين "الوضع الآمن" لمستعرض الصفحات. في "الوضع الآمن"، سيُضبط LESSSECURE=1 عند استدعاء المستعرض، مما يوجه المستعرض لتعطيل الأوامر التي تفتح أو تنشئ ملفات جديدة أو تبدأ عمليات فرعية جديدة. حاليًا، يُعرف فقط less(1) بقدرته على فهم هذا المتغير وتطبيق "الوضع الآمن".

    عند الضبط إلى false، لا توضع قيود على أداة التصفح (pager). إن ضبط SYSTEMD_PAGERSECURE=0 أو عدم إزالته من البيئة الموروثة قد يسمح للمستخدم باستدعاء أوامر اعتباطية.

    عندما لا يكون $SYSTEMD_PAGERSECURE مضبوطًا، تحاول أدوات systemd آليًا معرفة ما إذا كان ينبغي تفعيل "النمط الآمن" وما إذا كان المستعرض يدعمه. يُفعل "النمط الآمن" إذا كان معرف المستخدم الفعلي ليس هو نفسه مالك جلسة الولوج، انظر geteuid(2) و sd_pid_get_owner_uid(3)، أو عند التشغيل تحت sudo(8) أو أدوات مماثلة ($SUDO_UID مضبوط [5]). في تلك الحالات، سيُضبط SYSTEMD_PAGERSECURE=1 ولن تُستخدم المستعرضات التي لا يُعرف عنها تنفيذ "النمط الآمن" على الإطلاق. لاحظ أن هذا الاكتشاف الآلي يغطي فقط الآليات الأكثر شيوعًا لرفع الامتيازات وهو مخصص للتسهيل. يوصى بضبط $SYSTEMD_PAGERSECURE صراحة أو تعطيل المستعرض.

    لاحظ أنه إذا أُريد احترام المتغيرات $SYSTEMD_PAGER أو $PAGER، لغير غرض تعطيل مستعرض الصفحات، فيجب ضبط $SYSTEMD_PAGERSECURE أيضًا.

$SYSTEMD_COLORS
    يأخذ وسيطًا منطقيًا (boolean)، أو قيمة خاصة. مبدئيًا (عند عدم الضبط)، سيستخدم systemd والأدوات المرتبطة به الألوان في مخرجاتها إذا أمكن ذلك. إذا ضُبط $COLORTERM على "truecolor" أو "24bit"، فسيتم تمكين ألوان 24 بت، وإلا فستُستخدم 256 لونًا، ما لم يشر $NO_COLOR أو $TERM إلى تعطيل الألوان.

    true
        نفس حالة عدم الضبط، باستثناء تجاهل $NO_COLOR.

    false
        سيكون المخرج أحادي اللون.

    "16"، "256"، "24bit"
        استخدم دائمًا ألوان ANSI الـ 16 الأساسية، أو 256 لونًا، أو لون 24 بت، على التوالي.

    "auto-16"، "auto-256"، "auto-24bit"
        استخدم كمية الألوان المعطاة، بشرط $TERM، وما هو متصل بالطرفية.

$SYSTEMD_URLIFY
    يجب أن تكون القيمة منطقية. تتحكم فيما إذا كان يجب توليد روابط قابلة للنقر في المخرج لمحاكيات الطرفية التي تدعم ذلك. يمكن تحديد هذا لتجاوز القرار الذي يتخذه systemd بناءً على $TERM وشروط أخرى.

أمثلة

مثال 1. إنشاء مستخدم باسم "waldo" في مجموعة الإدارة "wheel"، وتخصيص مساحة قرص قدرها 500 ميجابايت له.

    homectl create waldo --real-name="Waldo McWaldo" -G wheel --disk-size=500M

مثال 2. إنشاء مستخدم باسم "wally" على ذاكرة USB، وتعيين حد أقصى قدره 500 مهمة متزامنة له.

    homectl create wally --real-name="Wally McWally" --image-path=/dev/disk/by-id/usb-SanDisk_Ultra_Fit_476fff954b2b5c44-0:0 --tasks-max=500

مثال 3. تغيير مستوى اللطافة (nice level) للمستخدم "odlaw" إلى +5 والتأكد من ضبط متغير البيئة $SOME على السلسلة النصية "THING" له عند تسجيل الدخول.

    homectl update odlaw --nice=5 --setenv=SOME=THING

مثال 4. إعداد الاستيثاق باستخدام رمز أمان YubiKey باستخدام PKCS#11/PIV:

    # مسح مفاتيح Yubikey القديمة (احذر!)
    ykman piv reset
    # توليد زوج مفاتيح خاص/عام جديد على الجهاز، وتخزين المفتاح العام في 'pubkey.pem'.
    ykman piv generate-key -a RSA2048 9d pubkey.pem
    # إنشاء شهادة ذاتية التوقيع من هذا المفتاح العام، وتخزينها على الجهاز.
    ykman piv generate-certificate --subject "Knobelei" 9d pubkey.pem
    # لم نعد بحاجة إلى المفتاح العام على القرص
    rm pubkey.pem
    # السماح لرمز الأمان بفك قفل حساب المستخدم 'lafcadio'.
    homectl update lafcadio --pkcs11-token-uri=auto

مثال 5. إعداد الاستيثاق باستخدام رمز أمان FIDO2:

    # السماح لرمز أمان FIDO2 بفك قفل حساب المستخدم 'nihilbaxter'.
    homectl update nihilbaxter --fido2-device=auto

مثال 6. إضافة مفتاح استرداد إلى حساب مستخدم موجود:

    # توليد وإضافة مفتاح استرداد للمستخدم 'emily'.
    homectl update emily --recovery-key=yes

انظر أيضًا

systemd(1)، systemd-homed.service(8)، homed.conf(5)، userdbctl(1)، useradd(8)، cryptsetup(8)

ملاحظات

1.  سجلات مستخدم JSON
    https://systemd.io/USER_RECORD

2.  مواصفة تسمية الأيقونات
    https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

3.  أدلة كتل سجلات المستخدمين
    https://systemd.io/USER_RECORD_BLOB_DIRS

4.  بناء جملة اسم المستخدم/المجموعة
    https://systemd.io/USER_NAMES

5.  يوصى للأدوات الأخرى بضبط والتحقق من $SUDO_UID حسب الاقتضاء، ومعاملته كواجهة مشتركة.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة

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

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