Memperkenalkan systemd-homed untuk mengelola direktori home portabel

Puisi Lennart diperkenalkan (PDF) pada konferensi All Systems Go 2019, komponen baru dari manajer sistem systemd - systemd-homed, bertujuan untuk menjadikan direktori beranda pengguna portabel dan terpisah dari pengaturan sistem. Ide utama dari proyek ini adalah untuk menciptakan lingkungan mandiri untuk data pengguna yang dapat ditransfer antar sistem yang berbeda tanpa mengkhawatirkan sinkronisasi dan kerahasiaan pengidentifikasi.

Lingkungan direktori home hadir dalam bentuk file gambar terpasang, yang datanya dienkripsi. Kredensial pengguna terikat pada direktori home dan bukan pada pengaturan sistem - bukan pada /etc/passwd dan /etc/shadow profil dalam format JSON, disimpan di direktori ~/.identity. Profil berisi parameter yang diperlukan untuk pekerjaan pengguna, termasuk informasi tentang nama, hash kata sandi, kunci enkripsi, kuota, dan sumber daya yang dialokasikan. Profil tersebut dapat disertifikasi dengan tanda tangan digital yang disimpan di token Yubikey eksternal.

Parameter juga dapat mencakup informasi tambahan seperti kunci SSH, data otentikasi biometrik, gambar, email, alamat, zona waktu, bahasa, batas proses dan memori, tanda pemasangan tambahan (nodev, noexec, nosuid), informasi tentang server IMAP/SMTP pengguna yang digunakan , informasi tentang mengaktifkan kontrol orang tua, opsi pencadangan, dll. API disediakan untuk meminta dan mengurai parameter Tautan Varlink.

Penugasan dan pemrosesan UID/GID dilakukan secara dinamis pada setiap sistem lokal yang terhubung dengan direktori home. Dengan menggunakan sistem yang diusulkan, pengguna dapat menyimpan direktori home-nya, misalnya di Flash drive, dan mendapatkan lingkungan kerja di komputer mana pun tanpa secara eksplisit membuat akun di dalamnya (keberadaan file dengan gambar direktori home mengarah pada sintesis pengguna).

Diusulkan untuk menggunakan subsistem LUKS2 untuk enkripsi data, tetapi systemd-homed juga mengizinkan penggunaan backend lain, misalnya, untuk direktori yang tidak terenkripsi, partisi jaringan Btrfs, Fscrypt, dan CIFS. Untuk mengelola direktori portabel, utilitas homectl diusulkan, yang memungkinkan Anda membuat dan mengaktifkan gambar direktori home, serta mengubah ukurannya dan mengatur kata sandi.

Pada tingkat sistem, pekerjaan disediakan oleh komponen-komponen berikut:

  • systemd-homed.service - mengelola direktori home dan menyematkan catatan JSON langsung ke gambar direktori home;
  • pam_systemd - memproses parameter dari profil JSON saat pengguna masuk dan menerapkannya dalam konteks sesi yang diaktifkan (melakukan otentikasi, mengonfigurasi variabel lingkungan, dll.);
  • systemd-logind.service - memproses parameter dari profil JSON saat pengguna masuk, menerapkan berbagai pengaturan manajemen sumber daya dan menetapkan batasan;
  • nss-systemd - Modul NSS untuk glibc, mensintesis catatan NSS klasik berdasarkan profil JSON, menyediakan kompatibilitas dengan API pemrosesan pengguna UNIX (/etc/password);
  • PID 1 - secara dinamis membuat pengguna (disintesis dengan analogi menggunakan arahan DynamicUser dalam unit) dan membuatnya terlihat oleh seluruh sistem;
  • systemd-userdbd.service - menerjemahkan akun NSS UNIX/glibc ke dalam data JSON dan menyediakan API Varlink terpadu untuk membuat kueri dan mengulangi data.

Keuntungan dari sistem yang diusulkan termasuk kemampuan untuk mengelola pengguna ketika memasang direktori /etc dalam mode read-only, tidak adanya kebutuhan untuk menyinkronkan pengidentifikasi (UID/GID) antar sistem, kemandirian pengguna dari komputer tertentu, pemblokiran data pengguna selama mode tidur, penggunaan enkripsi dan metode otentikasi modern. Systemd-homed rencananya akan dimasukkan dalam systemd mainstream pada rilis 244 atau 245.

Contoh profil pengguna JSON:

"Login otomatis" : benar,
"mengikat" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"tipesistemfile": "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»,
"penyimpanan" : "luks",
"uid" : 60233
}
},
"disposisi" : "biasa",
"enforcePasswordPolicy" : salah,
"PerubahanUSec terakhir" : 1565951024279735,
"anggota dari" : [
"roda"
],
"istimewa" : {
"kata sandi hash" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"tanda tangan" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"kunci" : "—MULAI KUNCI PUBLIK—\nMCowBQADK2VwAy…=\n—AKHIR KUNCI PUBLIK—\n"
}
],
"nama pengguna": "tes",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"status" : "tidak aktif",
"layanan" : "io.systemd.Rumah",
"Ukuran disk" : 161218667776,
"diskCeiling": 191371729408,
"Lantai disk": 5242780,
"signedLocally" : benar
}
}

Sumber: opennet.ru

Tambah komentar