Lennart Poettering () nĂ« konferencĂ«n All Systems Go 2019 njĂ« komponent tĂ« menaxherit tĂ« sistemit systemd â , i fokusuar nĂ« sigurimin e portabilitetit tĂ« katalogĂ«ve tĂ« shtĂ«pisĂ« tĂ« pĂ«rdoruesve dhe ndarjen e tyre nga cilĂ«simet sistemike. Ideja kryesore e projektit Ă«shtĂ« krijimi i mjediseve tĂ« vetĂ«-ndihmuara pĂ«r tĂ« dhĂ«nat e pĂ«rdoruesit qĂ« mund tĂ« transferohen midis sistemeve tĂ« ndryshme, pa u shqetĂ«suar pĂ«r sinkronizimin e identifikatorĂ«ve dhe privatĂ«sinĂ«.
Mjedisi i katalogut tĂ« shtĂ«pisĂ« ofrohet nĂ« formĂ«n e njĂ« imazhi skedari tĂ« montueshĂ«m, tĂ« dhĂ«nat brenda tĂ« cilit janĂ« tĂ« enkriptuara. Parametrat e kredencialeve tĂ« pĂ«rdoruesit lidhen me katalogun e shtĂ«pisĂ«, dhe jo me cilĂ«simet sistemike â nĂ« vend tĂ« /etc/passwd dhe /etc/shadow pĂ«rdoret nĂ« formatin JSON, i ruajtur nĂ« katalogun ~/.identity. NĂ« profil specifikohen parametrat e nevojshĂ«m pĂ«r funksionimin e pĂ«rdoruesit, duke pĂ«rfshirĂ« tĂ« dhĂ«nat mbi emrin, hash-in e fjalĂ«kalimit, çelĂ«sat pĂ«r enkriptimin, kuotat dhe burimet e ofruara. Profili mund tĂ« nĂ«nshkruhet me njĂ« nĂ«nshkrim digjital, i ruajtur nĂ« njĂ« token tĂ« jashtĂ«m Yubikey.
Parametrat gjithashtu mund të përfshijnë informacione të tjera, të tilla si çelësa për SSH, të dhënat për autentikimin biometrik, imazhin, emailin, adresën, zonën kohore, gjuhën, kufizimet e numrit të proceseve dhe kujtesës, flamujt shtesë të montimit (nodev, noexec, nosuid), të dhëna për serverët IMAP/SMTP të përdorur nga përdoruesi, informacion mbi aktivizimin e kontrollit parental, opsionet e kopjimit dhe tjerë. Për kërkimin dhe analizimin e parametrave është në dispozicion API. .
Caktimi dhe trajtimi i UID/GID kryhet dinamikisht në çdo sistem lokal, të cilit i lidhet direktoria e shtëpisë. Me sistemin e ofruar, përdoruesi mund të mbajë direktorinë e tij të shtëpisë me vete, për shembull në një pajisje Flash, dhe të ketë një ambient pune në çdo kompjuter pa krijuar një llogari të qartë atje (prania e një skedari me imazhin e direktorisë së shtëpisë çon në sintetikimin e përdoruesit).
Për enkriptimin e të dhënave, rekomandohet përdorimi i nën-sistemit LUKS2, por systemd-homed gjithashtu lejon përdorimin e backend-eve të tjera, për shembull, për katalogët e paenkriptuar, Btrfs, Fscrypt dhe pjesët rrjete CIFS. Për menaxhimin e katalogëve të transportueshëm, është propozuar utilita homectl, e cila lejon krijimin dhe aktivizimin e imazheve të katalogëve të shtëpisë, si dhe ndryshimin e madhësisë së tyre dhe caktimin e fjalëkalimeve.
Në nivelin e sistemit, puna mundësohet nga komponentët e mëposhtëm:
- systemd-homed.service â menaxhon katalogun e shtĂ«pisĂ« dhe fut regjistrat JSON drejtpĂ«rdrejt nĂ« imazhet e katalogut tĂ« shtĂ«pisĂ«;
- pam_systemd â pĂ«rpunon parametrat nga profili JSON gjatĂ« hyrjes sĂ« pĂ«rdoruesit dhe i aplikon ato nĂ« kontekstin e seancĂ«s sĂ« aktivizuar (bĂ«n autentifikimin, konfigurimin e variablave tĂ« mjedisit etj.);
- systemd-logind.service â pĂ«rpunon parametrat nga profili JSON gjatĂ« hyrjes sĂ« pĂ«rdoruesit, aplikon cilĂ«sime tĂ« ndryshme pĂ«r menaxhimin e burimeve dhe vendos kufij;
- nss-systemd â moduli NSS pĂ«r glibc, sintetizon regjistrat klasikĂ« NSS bazuar nĂ« profilin JSON, duke ofruar pĂ«rputhshmĂ«ri tĂ« prapambetur me API UNIX pĂ«r pĂ«rpunimin e pĂ«rdoruesve (/etc/password);
- PID 1 â krijon dinamikisht pĂ«rdoruesit (sintetizon nĂ« mĂ«nyrĂ« analoge me pĂ«rdorimin e drejtorive DynamicUser nĂ« njĂ«sitĂ«) dhe i bĂ«n ata tĂ« dukshĂ«m pĂ«r sistemin e mbetur;
- systemd-userdbd.service â transmeton llogaritĂ« UNIX/glibc NSS nĂ« shĂ«nime JSON dhe ofron njĂ« API tĂ« unifikuar Varlink pĂ«r kĂ«rkimin dhe regjistrimin e shĂ«nimeve.
Midis përfitimeve të sistemit të propozuar, vlerësohet mundësia e menaxhimit të përdoruesve gjatë montimit të katalogut /etc në mënyrë vetëm-lexim, mosshkaku i sinkronizimit të identifikuesve (UID/GID) midis sistemeve, pavarësia e përdoruesit nga kompjuteri specifik, bllokimi i të dhënave të përdoruesit gjatë kalimit në gjendjen e pritjes, përdorimi i enkriptimit dhe metodave moderne të autentikimit. Systemd-homed parashikohet të përfshihet në versionin 244 ose 245 të systemd.
Shembulli i profilit të përdoruesit JSON:
"autoLogin" : true,
"binding" : {
"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» : «regullt»,
«enforcePasswordPolicy» : false,
«lastChangeUSec» : 1565951024279735,
«memberOf» : [
«wheel»
],
«privileged» : {
«hashedPassword» : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5âŠ/»
]
},
«signature» : [
{
«data» : «LU/HeVrPZSzi3M3JâŠ==»,
«key» : «ââBEGIN PUBLIC KEYââ\nMCowBQADK2VwAyâŠ=\nââEND PUBLIC KEYââ\n»
}
],
«userName» : «test»,
«status» : {
«15e19cf24e004b949dfaac60c74aa165» : {
«goodAuthenticationCounter» : 16,
«lastGoodAuthenticationUSec» : 1566309343044322,
«rateLimitBeginUSec» : 1566309342341723,
«rateLimitCount» : 1,
«state» : «inaktiv»,
«service» : «io.systemd.Home»,
«diskSize» : 161218667776,
«diskCeiling» : 191371729408,
«diskFloor» : 5242780,
«signedLocally» : true
}
}
Burimi: opennet.ru
