Lennart Poettering
Kotihakemistoympäristö tulee liitetyn kuvatiedoston muodossa, jonka tiedot on salattu. Käyttäjän tunnistetiedot on sidottu kotihakemistoon järjestelmäasetusten sijaan - hakemistojen /etc/passwd ja /etc/shadow sijaan
Parametrit voivat sisältää myös lisätietoja, kuten SSH-avaimet, biometriset todennustiedot, kuva, sähköposti, osoite, aikavyöhyke, kieli, prosessi- ja muistirajoitukset, lisäliitosliput (nodev, noexec, nosuid), tietoja käytetyistä käyttäjän IMAP/SMTP-palvelimista. , tietoja lapsilukon käyttöönotosta, varmuuskopiointivaihtoehdoista jne. API tarjotaan parametrien pyytämistä ja jäsentämistä varten
UID/GID-määritys ja käsittely tapahtuu dynaamisesti jokaisessa paikallisessa järjestelmässä, johon kotihakemisto on kytketty. Ehdotetun järjestelmän avulla käyttäjä voi pitää kotihakemistonsa mukanaan, esimerkiksi Flash-asemassa, ja saada työympäristön millä tahansa tietokoneella luomatta siihen nimenomaisesti tiliä (kotihakemiston kuvan sisältävän tiedoston läsnäolo johtaa käyttäjän synteesiin).
Tietojen salaukseen ehdotetaan käytettäväksi LUKS2-alijärjestelmää, mutta systemd-homed mahdollistaa myös muiden taustaohjelmien käytön esimerkiksi salaamattomille hakemistoille, Btrfs-, Fscrypt- ja CIFS-verkkoosiolle. Kannettavien hakemistojen hallintaan ehdotetaan homectl-apuohjelmaa, jonka avulla voit luoda ja aktivoida kuvia kotihakemistoista, muuttaa niiden kokoa ja asettaa salasanan.
Järjestelmätasolla työn varmistavat seuraavat komponentit:
- systemd-homed.service - hallitsee kotihakemistoa ja upottaa JSON-tietueita suoraan kotihakemiston kuviin;
- pam_systemd - käsittelee parametreja JSON-profiilista, kun käyttäjä kirjautuu sisään ja käyttää niitä aktivoidun istunnon yhteydessä (suorittaa todennuksen, määrittää ympäristömuuttujat jne.);
- systemd-logind.service - käsittelee parametreja JSON-profiilista, kun käyttäjä kirjautuu sisään, käyttää erilaisia resurssienhallintaasetuksia ja asettaa rajoituksia;
- nss-systemd - NSS-moduuli glibc:lle, syntetisoi klassisia NSS-tietueita JSON-profiilin perusteella, mikä tarjoaa taaksepäin yhteensopivuuden UNIX API:n kanssa käyttäjän käsittelyä varten (/etc/password);
- PID 1 - luo dynaamisesti käyttäjiä (syntetisoituna analogisesti DynamicUser-direktiivin käytön kanssa yksiköissä) ja tekee ne näkyväksi muulle järjestelmälle;
- systemd-userdbd.service - kääntää UNIX/glibc NSS -tilit JSON-tietueiksi ja tarjoaa yhtenäisen Varlink API:n tietueiden kyselyihin ja iterointiin.
Ehdotetun järjestelmän etuja ovat kyky hallita käyttäjiä, kun /etc-hakemisto liitetään vain luku -tilassa, tunnisteiden (UID/GID) synkronointitarpeen puuttuminen järjestelmien välillä, käyttäjän riippumattomuus tietystä tietokoneesta, käyttäjätietojen estäminen. lepotilassa salauksen ja nykyaikaisten todennusmenetelmien käyttö. Systemd-homed on tarkoitus sisällyttää systemd mainstreamiin julkaisussa 244 tai 245.
Esimerkki JSON-käyttäjäprofiilista:
"autoLogin" : totta,
"sitova" : {
«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»,
"varasto" : "luks",
"uid": 60233
}
},
"disposition" : "säännöllinen",
"enforcePasswordPolicy": false,
"lastChangeUSec" : 1565951024279735,
"jonkin jäsen" : [
"pyörä"
],
"etuoikeutettu" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"allekirjoitus" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"avain" : "——ALAA JULKINEN AVAIN——\nMCowBQADK2VwAy…=\n——LOPETA JULKINEN AVAIN——\n"
}
],
"userName" : "testi",
"Tila" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount": 1,
"state" : "ei-aktiivinen",
"service" : "io.systemd.Home",
"diskSize" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally": totta
}
}
Lähde: opennet.ru