Prezantoi systemd-homed për të menaxhuar drejtoritë portative të shtëpisë

Lennart Poettering paraqitur (PDF) në konferencën All Systems Go 2019, një komponent i ri i sistemit të menaxherit të sistemit - systemd-homed, që synon t'i bëjë drejtoritë shtëpiake të përdoruesve të lëvizshme dhe të ndara nga cilësimet e sistemit. Ideja kryesore e projektit është krijimi i mjediseve të vetë-mjaftueshme për të dhënat e përdoruesit që mund të transferohen midis sistemeve të ndryshme pa u shqetësuar për sinkronizimin dhe konfidencialitetin e identifikuesve.

Mjedisi i drejtorisë kryesore vjen në formën e një skedari imazhi të montuar, të dhënat në të cilat janë të koduara. Kredencialet e përdoruesit janë të lidhura me direktorinë kryesore dhe jo me cilësimet e sistemit - në vend të /etc/passwd dhe /etc/shadow profil në formatin JSON, i ruajtur në direktorinë ~/.identity. Profili përmban parametrat e nevojshëm për punën e përdoruesit, duke përfshirë informacionin për emrin, hash-in e fjalëkalimit, çelësat e enkriptimit, kuotat dhe burimet e alokuara. Profili mund të certifikohet me një nënshkrim dixhital të ruajtur në një shenjë të jashtme Yubikey.

Parametrat mund të përfshijnë gjithashtu informacione shtesë si çelësat SSH, të dhënat biometrike të vërtetimit, imazhin, emailin, adresën, zonën kohore, gjuhën, procesin dhe kufijtë e kujtesës, flamuj shtesë të montimit (nodev, noexec, nosuid), informacione rreth serverëve IMAP/SMTP të përdoruesve të përdorur , informacion rreth aktivizimit të kontrolleve prindërore, opsioneve rezervë, etj. Një API ofrohet për të kërkuar dhe analizuar parametrat Varlink.

Caktimi dhe përpunimi i UID/GID bëhet në mënyrë dinamike në çdo sistem lokal me të cilin është lidhur direktoria kryesore. Duke përdorur sistemin e propozuar, përdoruesi mund të mbajë me vete drejtorinë e tij të shtëpisë, për shembull në një flash drive, dhe të marrë një mjedis pune në çdo kompjuter pa krijuar në mënyrë eksplicite një llogari në të (prania e një skedari me imazhin e drejtorisë kryesore çon në sintezën e përdoruesit).

Propozohet të përdoret nënsistemi LUKS2 për enkriptimin e të dhënave, por systemd-homed gjithashtu lejon përdorimin e backend-eve të tjera, për shembull, për drejtoritë e pakriptuara, ndarjet e rrjetit Btrfs, Fscrypt dhe CIFS. Për të menaxhuar drejtoritë portative, propozohet mjeti homectl, i cili ju lejon të krijoni dhe aktivizoni imazhe të drejtorive të shtëpisë, si dhe të ndryshoni madhësinë e tyre dhe të vendosni një fjalëkalim.

Në nivelin e sistemit, puna sigurohet nga komponentët e mëposhtëm:

  • systemd-homed.service - menaxhon direktorinë kryesore dhe fut regjistrimet JSON drejtpërdrejt në imazhet e direktorisë kryesore;
  • pam_systemd - përpunon parametrat nga profili JSON kur përdoruesi regjistrohet dhe i zbaton ato në kontekstin e sesionit të aktivizuar (kryen vërtetimin, konfiguron variablat e mjedisit, etj.);
  • systemd-logind.service - përpunon parametrat nga profili JSON kur përdoruesi regjistrohet, aplikon cilësime të ndryshme të menaxhimit të burimeve dhe vendos kufij;
  • nss-systemd - Moduli NSS për glibc, sintetizon të dhënat klasike të NSS bazuar në një profil JSON, duke siguruar pajtueshmëri me API-në e përpunimit të përdoruesit UNIX (/etc/password);
  • PID 1 - krijon në mënyrë dinamike përdoruesit (të sintetizuar në analogji me përdorimin e direktivës DynamicUser në njësi) dhe i bën ata të dukshëm për pjesën tjetër të sistemit;
  • systemd-userdbd.service - përkthen llogaritë UNIX/glibc NSS në regjistrime JSON dhe ofron një API të unifikuar Varlink për kërkimin dhe përsëritjen mbi të dhënat.

Përparësitë e sistemit të propozuar përfshijnë aftësinë për të menaxhuar përdoruesit kur montoni direktorinë /etc në modalitetin vetëm për lexim, mungesën e nevojës për të sinkronizuar identifikuesit (UID/GID) midis sistemeve, pavarësinë e përdoruesit nga një kompjuter specifik, bllokimin e të dhënave të përdoruesit. gjatë modalitetit të gjumit, përdorimi i enkriptimit dhe metodave moderne të vërtetimit. Systemd-homed është planifikuar të përfshihet në systemd mainstream në versionin 244 ose 245.

Shembull i profilit të përdoruesit JSON:

"autoLogin": e vërtetë,
"detyruese" : {
«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»,
"magazinimi" : "luks",
"uid" : 60233
}
},
"dispozitë" : "i rregullt",
"enforcePasswordPolicy" : false,
"LastChangeusec": 1565951024279735,
"anetar i" : [
"rrota"
],
"i privilegjuar" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"nënshkrimi" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "—— FILLO PUBLIC CEY——\nMCowBQADK2VwAy…=\n——FUNDI PUBLIC KEY——\n"
}
],
"username" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"gjendje" : "joaktive",
"service" : "io.systemd.Home",
"Disksize": 161218667776,
"Diskceiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : e vërtetë
}
}

Burimi: opennet.ru

Shto një koment