Ngenalake systemd-homed kanggo ngatur direktori ngarep portabel

Lennart Poettering ngenalake (PDF) ing konferensi All Systems Go 2019, komponen anyar saka sistem manajer sistemd - systemd-homed, ngarahake nggawe direktori ngarep pangguna portabel lan kapisah saka setelan sistem. Gagasan utama proyek kasebut yaiku nggawe lingkungan mandhiri kanggo data pangguna sing bisa ditransfer ing antarane sistem sing beda-beda tanpa kuwatir babagan sinkronisasi pengenal lan rahasia.

Lingkungan direktori ngarep teka ing wangun file gambar sing dipasang, data sing dienkripsi. Kredensial pangguna disambungake menyang direktori ngarep tinimbang setelan sistem - tinimbang /etc/passwd lan /etc/shadow profil ing format JSON, disimpen ing direktori ~/.identity. Profil kasebut ngemot paramèter sing dibutuhake kanggo karya pangguna, kalebu informasi babagan jeneng, hash sandhi, kunci enkripsi, kuota, lan sumber daya sing diparengake. Profil kasebut bisa disertifikasi kanthi tandha digital sing disimpen ing token Yubikey eksternal.

Parameter bisa uga kalebu informasi tambahan kayata tombol SSH, data otentikasi biometrik, gambar, email, alamat, zona wektu, basa, proses lan watesan memori, panji tambahan (nodev, noexec, nosuid), informasi babagan server IMAP/SMTP pangguna sing digunakake. , informasi babagan ngaktifake kontrol wong tuwa, opsi serep, lsp. API diwenehake kanggo pitakon lan ngurai paramèter Varlink.

Tugas lan pangolahan UID / GID ditindakake kanthi dinamis ing saben sistem lokal sing disambungake menyang direktori ngarep. Nggunakake sistem sing diusulake, pangguna bisa nyimpen direktori ngarep karo dheweke, umpamane ing Flash drive, lan entuk lingkungan kerja ing komputer apa wae tanpa nggawe akun kanthi jelas (anane file kanthi gambar direktori ngarep. ndadékaké sintesis pangguna).

Disaranake nggunakake subsistem LUKS2 kanggo enkripsi data, nanging systemd-homed uga ngidini panggunaan backend liyane, contone, kanggo direktori sing ora dienkripsi, Btrfs, Fscrypt lan partisi jaringan CIFS. Kanggo ngatur direktori portabel, sarana homectl diusulake, sing ngidini sampeyan nggawe lan ngaktifake gambar direktori ngarep, uga ngganti ukuran lan nyetel sandhi.

Ing tingkat sistem, karya dijamin dening komponen ing ngisor iki:

  • systemd-homed.service - ngatur direktori ngarep lan nampilake rekaman JSON langsung menyang gambar direktori ngarep;
  • pam_systemd - ngolah paramèter saka profil JSON nalika pangguna mlebu lan ditrapake ing konteks sesi sing diaktifake (nglakoni otentikasi, ngatur variabel lingkungan, lsp);
  • systemd-logind.service - pangolahan paramèter saka profil JSON nalika pangguna mlebu, ditrapake macem-macem setelan manajemen sumber lan nyetel watesan;
  • nss-systemd - modul NSS kanggo glibc, nyintesis cathetan NSS klasik adhedhasar profil JSON, nyediakake kompatibilitas mundur karo API pangolahan pangguna UNIX (/etc/sandi);
  • PID 1 - nggawe pangguna kanthi dinamis (disintesis kanthi analogi kanthi nggunakake arahan DynamicUser ing unit) lan ndadekake wong-wong mau katon ing sistem liyane;
  • systemd-userdbd.service - nerjemahake akun NSS UNIX/glibc menyang cathetan JSON lan nyedhiyakake API Varlink sing manunggal kanggo pitakon lan ngulang cathetan.

Kauntungan saka sistem sing diusulake kalebu kemampuan kanggo ngatur pangguna nalika masang direktori / etc ing mode mung-maca, ora ana kabutuhan kanggo nyinkronake pengenal (UID / GID) antarane sistem, kamardikan pangguna saka komputer tartamtu, mblokir data pangguna. sajrone mode turu, panggunaan enkripsi lan metode otentikasi modern. Systemd-homed direncanakake bakal kalebu ing systemd mainstream ing release 244 utawa 245.

Conto profil pangguna JSON:

"autoLogin" : bener,
"ikatan" : {
«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
}
},
"disposition": "biasa",
"enforcePasswordPolicy" : palsu,
"LastChangeUSec": 1565951024279735,
"anggota" : [
"roda"
],
"privilege" : {
"HashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]},
"tanda tangan": [
{
"data" : "LU/HeVrPZSzi3M3J...=",
"key" : "——MULAI KUNCI PUBLIC——\nMCowBQADK2VwAy…=\n——END PUBLIC KUNCI——\n"
}
],
"userName": "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"GoodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount" : 1,
"state": "ora aktif",
"service": "io.systemd.Home",
"ukuran disk": 161218667776,
"diskCeiling": 191371729408,
"DiskFloor": 5242780,
"signedLocally" : bener
}
}

Source: opennet.ru

Add a comment