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.

--birth-date=[تاريخ]
    يُدخل تاريخ ميلاد المستخدم بتنسيق التاريخ التقويمي ISO 8601 ("YYYY-MM-DD"). أقدم سنة قابلة للتمثيل هي 1900. في حال إدخال سلسلة نصية فارغة، يُعاد تعيين تاريخ الميلاد إلى "غير مُحدد".

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

--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=قيمة_منطقية, --nodev=قيمة_منطقية, --noexec=قيمة_منطقية
    يهيئ خيارات الوصل "nosuid" و "nodev" و "noexec" للأدلة المنزلية. مبدئيًا، يُفعّل "nodev" و "nosuid"، بينما يكون "noexec" معطلاً. للتفاصيل راجع mount(8).

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

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

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

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

خصائص سجل سلوك الولوج

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

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

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

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

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

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

--session-launcher=مُطلق
    تأخذ وسيطاً نصياً. وتضبط ملف إدخال الـ .desktop الخاص بمُطلق الجلسة المُفضل للمستخدم (أي "gnome" أو "plasma" أو غيرها من الأسماء التي تظهر في الدليل /usr/share/xesssions/ أو /usr/share/wayland-sessions). يقرأ مدير العرض هذا الملف لاختيار الجلسة المبدئية التي تُطلق عند ولوج المستخدم.

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

--session-type=نوع
    يقبل سلسلة نصية كمعامل. يضبط نوع الجلسة المفضل للمستخدم (أي "x11" و "wayland" والقيم الأخرى التي يقبلها المتغير $XDG_SESSION_TYPE). يقرأ مدير العرض هذه القيمة لاختيار نوع الجلسة المبدئي الذي يسجل المستخدم الدخول إليه.

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

الأوامر

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

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

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

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

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

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

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

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

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

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

authenticate مستخدم [مستخدم...]
    التحقق من صحة اعتمادات المصادقة الخاصة بالدليل المنزلي. يستعلم هذا الإجراء من المُستدعي عن كلمة مرور (أو ما شابهها) ويتحقق من أنها تفك قفل الدليل المنزلي بشكل صحيح. يترك هذا الإجراء الدليل المنزلي على حالته التي كان عليها، أي أنه يتركه في حالة غير نشطة إذا كان غير نشط من قبل، وفي حالة نشطة إذا كان نشطاً من قبل.

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

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

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

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

adopt مسار [مسار...]
    تعتمد دليلاً منزلياً واحداً أو أكثر من الأدلة المنزلية الموجودة على النظام المحلي. تأخذ مساراً واحداً أو أكثر إلى أدلة منزلية بتنسيق LUKS المسمية *.home أو أدلة منزلية مستقلة (أو أحجام فرعية) مسمية *.homedir/ أُنشئت مسبقاً بواسطة systemd-homed، وتجعلها متاحة محلياً للولوج. لا تُنقل الملفات المُشار إليها. ويعد هذا بديلاً لنقل مثل هذه الأدلة المنزلية إلى الدليل /home/ (حيث سيُتعرف عليها آلياً هناك).

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

register ملف [ملف...]
    يسجل مستخدماً واحداً أو أكثر، دون إنشاء أدلتهم المنزلية. يقبل مساراً أو أكثر لملفات سجلات المستخدمين بتنسيق JSON. وإذا حُدِّد المسار كشرطة "-"، فإنه يقرأ سجل المستخدم بتنسيق JSON من الدخل القياسي.

    يؤدي تسجيل المستخدم إلى جعله متاحاً على النظام المحلي دون إنشاء دليل منزلي جديد. يفيد هذا الأمر تحديداً في إتاحة الوصول إلى مستخدم على نظام لم يُنشأ عليه في الأصل.

    إليك مثالاً على كيفية جعل حساب مستخدم محلي مع دليله المنزلي متاحاً على نظام عن بعد، باستخدام مشاركة الملفات عبر SMB/CIFS. مع تثبيت Samba بتهيئته المبدئية، استدعِ الأمر بصفتك مستخدماً جذر "root":

        # 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

    يضمن هذا أولاً أن حساب المستخدم "lennart"معروف لـ Samba ومتاح من خلاله. ثم يسجل وصول SSH محلياً ليُستخدم للوصول إلى هذا المستخدم، ويضبط CIFS كوحدة تخزين مبدئية للأنظمة غير المحلية على الحساب. بعد ذلك، يضيف مفتاح توقيع الحساب الخاص بالنظام المحلي إلى النظام الهدف. ثم يسجل حساب المستخدم المحلي لدى النظام الهدف. وأخيراً، يلج إلى الحساب على النظام الهدف. وعندها سيتصل النظام الهدف عكسياً عبر SMB/CIFS للوصول إلى الدليل المنزلي.

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

unregister مستخدم...
    إلغاء تسجيل حساب مستخدم واحد أو أكثر. يؤدي هذا فقط إلى إزالة سجل المستخدم من النظام المحلي، ولا يحذف الدليل المنزلي. يمكن إعادة إضافة الدليل المنزلي لاحقاً عبر الأمر register (تسجيل) أو adopt (اعتماد)، سواء على هذا النظام أو على نظام آخر. يُرجى ملاحظة أن إلغاء تسجيل مستخدم يقع دليله المنزلي في /home/ لن يؤدي إلى اختفائه من قاعدة بيانات المستخدمين المحلية، نظراً لأن جميع الأدلة المنزلية المدعومة والموجودة هناك ستظهر في قاعدة بيانات المستخدمين. ومع ذلك، سيصبح سجل المستخدم "غير مثبت" (unfixated)، أي أنه سيفقد ارتباطه بالنظام المحلي. وعند الولوج إليه، سيستعيد هذا الارتباط آلياً، ويكتسب زوج UID/GID محلياً.

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

remove مستخدم
    إزالة دليل منزلي أو حساب مستخدم. سيؤدي هذا إلى إزالة كل من سجل المستخدم الخاص بالدليل المنزلي والدليل المنزلي نفسه، وبالتالي حذف جميع الملفات والأدلة التي يملكها المستخدم.

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

update مستخدم, update --identity=مسار [مستخدم]
    تحديث دليل منزلي أو حساب مستخدم. استخدم خيارات خصائص سجل المستخدم المتنوعة (كما هو موثق أعلاه) لإجراء تغييرات على الحساب، أو بدلاً من ذلك، وفر سجل مستخدم بتنسيق JSON كاملاً ومحدثاً عبر الخيار --identity=.

    يُرجى ملاحظة أن التغييرات على سجلات المستخدمين غير الموقعة بمفتاح تعمية خاص (cryptographic private key) متاح محلياً غير مسموح بها، ما لم يُستخدم الخيار --identity= مع سجل مستخدم مُوقّع بالفعل بشكل صحيح بمفتاح خاص معترف به.

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

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

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

resize مستخدم بايت
    تغيير مساحة القرص المخصصة للدليل المنزلي المحدد. في حال استخدام آلية التخزين LUKS2، سيؤدي هذا آلياً إلى تغيير حجم ملف الـ loopback ونظام الملفات الذي يحتويه. يُرجى ملاحظة أنه في حال استخدام نظام الملفات "ext4" داخل حجم LUKS2، فمن الضروري إلغاء تنشيط الدليل المنزلي قبل تقليصه (أي يجب على المستخدم تسجيل الخروج). أما التوسيع فيمكن القيام به أثناء كون الدليل المنزلي نشطاً. وفي حال استخدام "xfs" داخل حجم LUKS2، فلا يمكن تقليص الدليل المنزلي على الإطلاق. وبالنسبة للأنظمة الثلاثة "ext4" و "xfs" و "btrfs"، يمكن توسيع الدليل المنزلي أثناء تسجيل دخول المستخدم، وفي النظام الأخير (btrfs) يمكن تقليصه أيضاً أثناء تسجيل دخول المستخدم. وإذا استُخدمت آليات التخزين "subvolume" أو "directory" أو "fscrypt"، فإن تغيير الحجم سيغير الحصة النسبية لنظام الملفات (quota). يمكن لمعامل الحجم استخدام اللاحقات المعتادة B و K و M و G و T (بأساس 1024). ويمكن تحديد السلاسل النصية الخاصة "min" و "max" بدلاً من القيمة الرقمية للحجم، وذلك لتقليص مساحة القرص المخصصة للمنطقة المنزلية (home area) إلى الحد الأدنى أو توسيعها إلى الحد الأقصى، مع مراعاة قيود نظام الملفات، واستخدام القرص داخل المنطقة المنزلية وعلى وحدة التخزين الخلفية.

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

lock مستخدم
    تعليق الوصول مؤقتاً إلى الدليل المنزلي للمستخدم وإزالة أي مفاتيح تعمية مرتبطة به من الذاكرة. ستتوقف أي محاولات للوصول إلى الدليل المنزلي للمستخدم حتى يُفك قفله مجدداً (أي إعادة المصادقة). تهدف هذه الوظيفة أساساً إلى الاستخدام أثناء تعليق النظام لضمان عدم إمكانية الوصول إلى بيانات المستخدم حتى يعيد المصادقة عند الاستئناف. هذا الإجراء مُعرَّف فقط للأدلة المنزلية التي تستخدم آلية تخزين LUKS2.

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

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

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

lock-all
    تنفيذ الأمر lock (القفل) على جميع الأدلة المنزلية المناسبة دفعة واحدة. تُنفَّذ هذه العملية عموماً عند تعليق النظام (أي بواسطة الأمر systemctl suspend والأوامر ذات الصلة)، لضمان إزالة جميع مفاتيح التعمية النشطة الخاصة بالمستخدمين واللازمة للوصول إلى أدلتهم المنزلية من الذاكرة.

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

deactivate-all
    تنفيذ الأمر deactivate (إلغاء التنشيط) على جميع الأدلة المنزلية النشطة دفعة واحدة. تُنفَّذ هذه العملية عموماً عند إيقاف تشغيل النظام (أي بواسطة الأمر systemctl poweroff والأوامر ذات الصلة)، لضمان إلغاء تنشيط جميع الأدلة المنزلية للمستخدمين النشطين بالكامل قبل فصل (unmount) الدليل /home/ وأنظمة الملفات المرتبطة به.

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

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

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

rebalance
    إعادة موازنة المساحة الشاغرة على القرص بين المناطق المنزلية (home areas) النشطة ووحدة التخزين الخلفية (backing storage). انظر الخيار --rebalance-weight= أعلاه. لا تنفذ هذه العملية أي إجراء ما لم تكن هناك منطقة منزلية واحدة نشطة على الأقل من نوع LUKS2 مُمكّن عليها خيار إعادة موازنة مساحة القرص. هذه العملية متزامنة (synchronous): إذ لن تكتمل إلا بعد إعادة موازنة مساحة القرص وفقاً لأوزان إعادة الموازنة. يُرجى ملاحظة أن إعادة الموازنة تتم أيضاً آلياً في الخلفية على فترات منتظمة. استخدم هذا الأمر للتأكد بشكل متزامن من إعادة توزيع مساحة القرص بشكل صحيح قبل البدء في عملية تتطلب مساحات كبيرة من القرص.

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

firstboot
    يُفترض أن يُستدعى هذا الأمر أثناء الإقلاع الأولي للنظام. حيث يتحقق مما إذا كان هناك أي منطقة منزلية (home area) عادية موجودة حتى الآن، وإذا لم يجد، يسأل المستخدم تفاعلياً عبر الطرفية (console) عن اسم المستخدم وكلمة المرور ويُنشئ واحدة (فقط إذا حُدد الخيار --prompt-new-user). وبدلاً من ذلك، إذا مُرِّرت إلى الأمر اعتماد خدمة (service credential) واحدة أو أكثر تبدأ أسماؤها بـ "home.create." (وتحتوي على سجل مستخدم بتنسيق JSON)، فسيُنشأ هؤلاء المستخدمون آلياً عند الإقلاع.

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

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

list-signing-keys
    عرض قائمة بالمفاتيح العامة التي يمكن توقيع الأدلة المنزلية بها لتُقبل للولوج المحلي. سيُولَّد مفتاح واحد من هذا القبيل آلياً (local.public) لتوقيع الأدلة المنزلية المُنشأة محلياً، ولكن يمكن تسجيل مفاتيح عامة إضافية لقبول أدلة منزلية من مصادر أخرى أيضاً (انظر الخيار add-signing-key أدناه).

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

get-signing-key [اسم...]
    كتابة المفتاح العام المُعرَّف بالاسم المحدد إلى الخرج القياسي (بتنسيق PEM). إذا لم يُحدد أي اسم، فسيُعتمد المبدئي local.public، أي المفتاح المُولَّد آلياً للأدلة المنزلية المُنشأة محلياً.

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

add-signing-key [ملف...]
    إضافة مفتاح (أو مفاتيح) عام من ملف (أو ملفات) مفاتيح PEM المحدد إلى قائمة المفاتيح التي يجب توقيع المناطق المنزلية (home areas) بها لتُقبل للولوج المحلي. إذا حُدد المسار "-"، أو إذا لم يُحدد أي ملف على الإطلاق، فسيُقرأ المفتاح من الدخل القياسي. يجب أن تحمل أسماء ملفات المفاتيح اللاحقة .public، وستُستخدم أسماء الملفات لتسمية المفاتيح أيضاً بمجرد إضافتها. إذا أُضيف مفتاح من الدخل القياسي، فيجب تحديد اسم المفتاح صراحةً عبر الخيار --key-name=، انظر أعلاه.

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

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

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

remove-signing-key اسم...
    إزالة المفتاح العام المُعرَّف بالاسم المحدد من قائمة المفاتيح التي تتحكم في المصادر (origins) المسموح بقبول الأدلة المنزلية القادمة منها للولوج.

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

بيانات الاستيثاق

عند استدعاء الأمر firstboot، يدعم homectl منطق الاستيثاق للخدمة كما هو مُطبق بواسطة ImportCredential=/LoadCredential=/SetCredential= (راجع systemd.exec(5) لمزيد من التفاصيل). تُستخدم بيانات الاستيثاق التالية عند تمريرها:

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

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

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

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

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

حالة الخروج

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

عند استدعاء أمر باستخدام with، تُمرَّر حالة الخروج (exit status) الخاصة بالعملية الابنة (child process). وعملياً، سيخرج الأمر 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 حسب الاقتضاء، ومعاملته كواجهة مشتركة.

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

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

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