Memperkenalkan systemd-homed untuk mengurus direktori rumah mudah alih

Lennart Poettering diperkenalkan (PDF) pada persidangan All Systems Go 2019, komponen baharu sistem pengurus sistemd - systemd-homed, bertujuan untuk menjadikan direktori rumah pengguna mudah alih dan berasingan daripada tetapan sistem. Idea utama projek ini adalah untuk mewujudkan persekitaran yang mencukupi untuk data pengguna yang boleh dipindahkan antara sistem yang berbeza tanpa perlu risau tentang penyegerakan pengecam dan kerahsiaan.

Persekitaran direktori rumah datang dalam bentuk fail imej yang dipasang, data yang disulitkan. Bukti kelayakan pengguna terikat pada direktori rumah dan bukannya tetapan sistem - bukannya /etc/passwd dan /etc/shadow profil dalam format JSON, disimpan dalam direktori ~/.identity. Profil mengandungi parameter yang diperlukan untuk kerja pengguna, termasuk maklumat tentang nama, cincang kata laluan, kunci penyulitan, kuota dan sumber yang diperuntukkan. Profil boleh disahkan dengan tandatangan digital yang disimpan pada token Yubikey luaran.

Parameter juga mungkin termasuk maklumat tambahan seperti kunci SSH, data pengesahan biometrik, imej, e-mel, alamat, zon waktu, bahasa, proses dan had memori, bendera pelekap tambahan (nodev, noexec, nosuid), maklumat tentang pelayan IMAP/SMTP pengguna terpakai , maklumat tentang mendayakan kawalan ibu bapa, pilihan sandaran, dsb. API disediakan untuk pertanyaan dan menghuraikan parameter Varlink.

Penetapan dan pemprosesan UID/GID dilakukan secara dinamik pada setiap sistem setempat yang mana direktori rumah disambungkan. Menggunakan sistem yang dicadangkan, pengguna boleh menyimpan direktori rumahnya bersamanya, contohnya pada pemacu Flash, dan mendapatkan persekitaran kerja pada mana-mana komputer tanpa membuat akaun secara eksplisit padanya (kehadiran fail dengan imej direktori rumah membawa kepada sintesis pengguna).

Adalah dicadangkan untuk menggunakan subsistem LUKS2 untuk penyulitan data, tetapi systemd-homed juga membenarkan penggunaan backend lain, contohnya, untuk direktori tidak disulitkan, sekatan rangkaian Btrfs, Fscrypt dan CIFS. Untuk mengurus direktori mudah alih, utiliti homectl dicadangkan, yang membolehkan anda mencipta dan mengaktifkan imej direktori rumah, serta menukar saiznya dan menetapkan kata laluan.

Di peringkat sistem, kerja dipastikan oleh komponen berikut:

  • systemd-homed.service - mengurus direktori rumah dan membenamkan rekod JSON terus ke dalam imej direktori rumah;
  • pam_systemd - memproses parameter daripada profil JSON apabila pengguna log masuk dan menggunakannya dalam konteks sesi yang diaktifkan (melaksanakan pengesahan, mengkonfigurasi pembolehubah persekitaran, dsb.);
  • systemd-logind.service - memproses parameter daripada profil JSON apabila pengguna log masuk, menggunakan pelbagai tetapan pengurusan sumber dan menetapkan had;
  • nss-systemd - Modul NSS untuk glibc, mensintesis rekod NSS klasik berdasarkan profil JSON, memberikan keserasian ke belakang dengan API pemprosesan pengguna UNIX (/etc/password);
  • PID 1 - mencipta pengguna secara dinamik (disintesis melalui analogi dengan penggunaan arahan DynamicUser dalam unit) dan menjadikannya kelihatan kepada seluruh sistem;
  • systemd-userdbd.service - menterjemah akaun NSS UNIX/glibc ke dalam rekod JSON dan menyediakan API Varlink bersatu untuk membuat pertanyaan dan mengulangi rekod.

Kelebihan sistem yang dicadangkan termasuk keupayaan untuk mengurus pengguna apabila memasang direktori /etc dalam mod baca sahaja, ketiadaan keperluan untuk menyegerakkan pengecam (UID/GID) antara sistem, kebebasan pengguna daripada komputer tertentu, menyekat data pengguna semasa mod tidur, penggunaan penyulitan dan kaedah pengesahan moden. Systemd-homed dirancang untuk disertakan dalam arus perdana systemd dalam keluaran 244 atau 245.

Contoh profil pengguna JSON:

"autoLogin" : benar,
"mengikat" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 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»,
"storage" : "luks",
"uid" : 60233
}
},
"pelupusan" : "biasa",
"enforcePasswordPolicy": palsu,
"lastChangeUSec" : 1565951024279735,
"ahli kepada" : [
"roda"
],
"keistimewaan" : {
"HashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"tandatangan" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——MULAKAN KUNCI AWAM——\nMCowBQADK2VwAy…=\n——TAMATKAN KUNCI AWAM——\n"
}
],
"Nama pengguna" : "ujian",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"GoodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "tidak aktif",
"service" : "io.systemd.Home",
"Saiz cakera" : 161218667776,
"DiskCeiling": 191371729408,
"DiskFloor": 5242780,
"signedLocally" : benar
}
}

Sumber: opennet.ru

Tambah komen