Entwodwi systemd-homed pou jere anyè pòtab lakay yo

Lennart Poettering entwodwi (PDF) nan konferans All Systems Go 2019, yon nouvo eleman nan manadjè sistèm systemd - systemd-homeed, ki vize pou fè anyè lakay itilizatè yo pòtab epi separe de paramèt sistèm yo. Lide prensipal pwojè a se kreye anviwònman endepandan pou done itilizatè yo ki ka transfere ant diferan sistèm san yo pa enkyete sou senkronizasyon idantifyan ak konfidansyalite.

Anviwònman anyè kay la vini nan fòm yon fichye imaj ki monte, done yo ki chiffres. Kalifikasyon itilizatè yo mare nan anyè lakay olye ke anviwònman sistèm - olye pou yo /etc/passwd ak /etc/shadow pwofil nan fòma JSON, ki estoke nan anyè ~/.identity. Pwofil la gen paramèt ki nesesè pou travay itilizatè a, ki gen ladan enfòmasyon sou non an, hash modpas, kle chifreman, kota, ak resous atribye ba yo. Pwofil la ka sètifye ak yon siyati dijital ki estoke sou yon siy ekstèn Yubikey.

Paramèt yo ka gen ladan tou enfòmasyon adisyonèl tankou kle SSH, done otantifikasyon byometrik, imaj, imèl, adrès, zòn tan, lang, pwosesis ak limit memwa, drapo mòn adisyonèl (nodev, noexec, nosuid), enfòmasyon sou itilizatè yo itilize IMAP/SMTP sèvè. , enfòmasyon sou pèmèt kontwòl paran yo, opsyon backup, elatriye. Yo bay yon API pou mande ak analize paramèt yo Varlink.

Yo fè plasman ak pwosesis UID/GID yon fason dinamik sou chak sistèm lokal ki konekte ak anyè kay la. Sèvi ak sistèm yo pwopoze a, itilizatè a ka kenbe anyè lakay li avè l, pou egzanp sou yon kondwi Flash, epi jwenn yon anviwònman k ap travay sou nenpòt òdinatè san yo pa klèman kreye yon kont sou li (prezans nan yon dosye ki gen imaj la nan anyè kay la. mennen nan sentèz itilizatè a).

Yo pwopoze pou itilize subsistèm LUKS2 pou chifreman done, men systemd-homed pèmèt tou itilize lòt backends, pou egzanp, pou anyè ki pa chifre, Btrfs, Fscrypt ak CIFS rezo patisyon. Pou jere anyè pòtab, yo pwopoze sèvis piblik homectl la, ki pèmèt ou kreye ak aktive imaj nan anyè lakay yo, osi byen ke chanje gwosè yo epi mete yon modpas.

Nan nivo sistèm nan, travay la asire pa eleman sa yo:

  • systemd-homed.service - jere anyè kay la epi entegre dosye JSON dirèkteman nan imaj anyè lakay yo;
  • pam_systemd - trete paramèt ki soti nan pwofil JSON la lè itilizatè a konekte epi aplike yo nan kontèks sesyon an aktive (fè otantifikasyon, konfigirasyon varyab anviwònman, elatriye);
  • systemd-logind.service - trete paramèt ki soti nan pwofil JSON la lè itilizatè a konekte, aplike divès kalite paramèt jesyon resous ak fikse limit;
  • nss-systemd - NSS modil pou glibc, sentèz dosye NSS klasik ki baze sou yon pwofil JSON, bay konpatibilite bak ak API pwosesis itilizatè UNIX (/etc/password);
  • PID 1 - dinamik kreye itilizatè (sentèz pa analoji ak itilizasyon direktiv DynamicUser nan inite) epi fè yo vizib pou rès sistèm nan;
  • systemd-userdbd.service - tradui kont UNIX/glibc NSS nan dosye JSON epi li bay yon API Varlink inifye pou demann ak iterasyon sou dosye yo.

Avantaj ki genyen nan sistèm yo pwopoze a gen ladan kapasite nan jere itilizatè yo lè yo monte anyè /etc nan mòd lekti sèlman, absans la nan bezwen nan senkronize idantifyan (UID / GID) ant sistèm, endepandans itilizatè a soti nan yon òdinatè espesifik, bloke done itilizatè. pandan mòd dòmi, itilize nan chifreman ak metòd otantifikasyon modèn. Systemd-homed planifye pou enkli nan systemd endikap nan lage 244 oswa 245.

Egzanp pwofil itilizatè JSON:

"autoLogin": vre,
"obligatwa" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/kay/tès",
"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" : "regilye",
"enforcePasswordPolicy" : fo,
"lastChangeUSec" : 1565951024279735,
"manm nan" : [
"wou"
],
"privilejye" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]},
"siyati" : [
{
"done" : "LU/HeVrPZSzi3M3J...==",
"key" : "——KÒMANSE PUBLIC KEY——\nMCowBQADK2VwAy…=\n——FINI PUBLIC KEY——\n"
}
],
"userName" : "tès",
"estati" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"eta" : "inaktif",
"service" : "io.systemd.Home",
"DiskSize" : 161218667776,
"DiskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": vre
}
}

Sous: opennet.ru

Add nouvo kòmantè