تم تقديم systemd-homed لإدارة الدلائل المنزلية المحمولة

لينارت بويترينغ المقدمة (PDF) في مؤتمر All Systems Go 2019، مكون جديد لنظام مدير النظام systemd - systemd- هوميد، تهدف إلى جعل الدلائل الرئيسية للمستخدم محمولة ومنفصلة عن إعدادات النظام. الفكرة الرئيسية للمشروع هي إنشاء بيئات مكتفية ذاتياً لبيانات المستخدم التي يمكن نقلها بين الأنظمة المختلفة دون القلق بشأن مزامنة المعرفات وسريتها.

تأتي بيئة الدليل الرئيسي في شكل ملف صورة مثبت، حيث يتم تشفير البيانات. ترتبط بيانات اعتماد المستخدم بالدليل الرئيسي بدلاً من إعدادات النظام - بدلاً من /etc/passwd و/etc/shadow ملف بتنسيق JSON، ومخزن في الدليل ~/.identity. يحتوي الملف الشخصي على المعلمات اللازمة لعمل المستخدم، بما في ذلك معلومات حول الاسم وتجزئة كلمة المرور ومفاتيح التشفير والحصص والموارد المخصصة. يمكن اعتماد الملف الشخصي بتوقيع رقمي مخزّن على رمز Yubikey خارجي.

قد تتضمن المعلمات أيضًا معلومات إضافية مثل مفاتيح SSH، وبيانات المصادقة البيومترية، والصورة، والبريد الإلكتروني، والعنوان، والمنطقة الزمنية، واللغة، وحدود العملية والذاكرة، وعلامات التثبيت الإضافية (nodev، noexec، nosuid)، ومعلومات حول خوادم IMAP/SMTP المستخدمة للمستخدم ، معلومات حول تمكين أدوات الرقابة الأبوية، وخيارات النسخ الاحتياطي، وما إلى ذلك. يتم توفير واجهة برمجة التطبيقات (API) لطلب المعلمات وتحليلها فارلينك.

يتم تعيين ومعالجة UID/GID ديناميكيًا على كل نظام محلي يتصل به الدليل الرئيسي. باستخدام النظام المقترح، يمكن للمستخدم أن يحتفظ بالدليل الرئيسي الخاص به معه، على محرك أقراص فلاش مثلاً، والحصول على بيئة عمل على أي جهاز كمبيوتر دون إنشاء حساب عليه بشكل صريح (وجود ملف بصورة الدليل الرئيسي يؤدي إلى توليف المستخدم).

يُقترح استخدام النظام الفرعي LUKS2 لتشفير البيانات، لكن systemd-homed يسمح أيضًا باستخدام الواجهات الخلفية الأخرى، على سبيل المثال، للأدلة غير المشفرة، وأقسام شبكة Btrfs وFscrypt وCIFS. لإدارة الدلائل المحمولة، يتم اقتراح الأداة المساعدة homectl، والتي تتيح لك إنشاء وتنشيط صور الدلائل الرئيسية، وكذلك تغيير حجمها وتعيين كلمة مرور.

على مستوى النظام، يتم ضمان العمل من خلال المكونات التالية:

  • systemd-homed.service - يدير الدليل الرئيسي ويدمج سجلات JSON مباشرة في صور الدليل الرئيسي؛
  • pam_systemd - يعالج المعلمات من ملف تعريف JSON عندما يقوم المستخدم بتسجيل الدخول ويطبقها في سياق الجلسة النشطة (إجراء المصادقة، وتكوين متغيرات البيئة، وما إلى ذلك)؛
  • systemd-logind.service - يعالج المعلمات من ملف تعريف JSON عندما يقوم المستخدم بتسجيل الدخول، ويطبق إعدادات إدارة الموارد المختلفة ويضع الحدود؛
  • nss-systemd - وحدة NSS لـ glibc، تقوم بتجميع سجلات NSS الكلاسيكية بناءً على ملف تعريف JSON، مما يوفر التوافق مع واجهة برمجة تطبيقات معالجة مستخدم UNIX (/etc/password)؛
  • PID 1 - ينشئ المستخدمين ديناميكيًا (يتم تجميعهم عن طريق القياس باستخدام توجيه DynamicUser في الوحدات) ويجعلهم مرئيين لبقية النظام؛
  • systemd-userdbd.service - يترجم حسابات UNIX/glibc NSS إلى سجلات JSON ويوفر واجهة برمجة تطبيقات Varlink موحدة للاستعلام والتكرار عبر السجلات.

تشمل مزايا النظام المقترح القدرة على إدارة المستخدمين عند تركيب الدليل /etc في وضع القراءة فقط، وغياب الحاجة إلى مزامنة المعرفات (UID/GID) بين الأنظمة، واستقلال المستخدم عن جهاز كمبيوتر معين، وحظر بيانات المستخدم أثناء وضع السكون، استخدام التشفير وطرق المصادقة الحديثة. من المقرر أن يتم تضمين Systemd-homed في النظام السائد في الإصدار 244 أو 245.

مثال لملف تعريف مستخدم JSON:

"تسجيل الدخول التلقائي": صحيح،
"ربط" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"نوع نظام الملفات" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"معرف الهوية": 60232،
"homeDirectory" : "/home/test"،
"imagePath" : "/home/test.home"،
"luksCipher" : "aes"،
"luksCipherMode": "xts-plain64"،
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize": 32،
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"التخزين": "لوكس"،
"المعرف الفريد": 60233
}
},
"التصرف": "العادية"،
"enforcePasswordPolicy": خطأ،
"lastChangeUSec" : 1565951024279735،
"عضو في" : [
"عجلة"
],
"ذو امتياز" : {
"كلمة المرور المجزأة" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"إمضاء" : [
{
"بيانات" : "LU/HeVrPZSzi3M3J...==",
"key" : "——بدء المفتاح العام——\nMCowBQADK2VwAy…=\n——نهاية المفتاح العام——\n"
}
],
"اسم المستخدم": "اختبار"،
"حالة" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16،
"lastGoodAuthenticationUSec" : 1566309343044322،
"rateLimitBeginUSec" : 1566309342341723،
""rateLimitCount"": 1،
"الحالة": "غير نشط"،
"الخدمة": "io.systemd.Home"،
"حجم القرص": 161218667776،
"سقف القرص": 191371729408,
"ديسكفلور": 5242780،
"وقعت محليا": صحيح
}
}

المصدر: opennet.ru

إضافة تعليق