Introduceret systemd-homed til at administrere bærbare hjemmemapper

Lennart Poettering indsendt (PDF) på All Systems Go 2019-konferencen, en ny komponent i systemmanagersystemet - systemd-homed, der har til formål at gøre brugerhjemmemapper bærbare og adskilt fra systemindstillinger. Projektets hovedidé er at skabe selvforsynende miljøer til brugerdata, der kan overføres mellem forskellige systemer uden at bekymre sig om identifikatorsynkronisering og fortrolighed.

Hjemmekatalogmiljøet kommer i form af en monteret billedfil, hvor dataene er krypteret. Brugerlegitimationsoplysninger er knyttet til hjemmebiblioteket i stedet for systemindstillinger - i stedet for /etc/passwd og /etc/shadow profil i JSON-format, gemt i mappen ~/.identity. Profilen indeholder de parametre, der er nødvendige for brugerens arbejde, herunder oplysninger om navn, kodeords-hash, krypteringsnøgler, kvoter og tildelte ressourcer. Profilen kan certificeres med en digital signatur gemt på et eksternt Yubikey-token.

Parametre kan også omfatte yderligere information såsom SSH-nøgler, biometriske godkendelsesdata, billede, e-mail, adresse, tidszone, sprog, proces og hukommelsesgrænser, yderligere mount-flag (nodev, noexec, nosuid), information om brugte bruger-IMAP/SMTP-servere , oplysninger om aktivering af forældrekontrol, sikkerhedskopieringsmuligheder osv. En API leveres til at anmode om og parse parametre Varlink.

UID/GID-tildeling og -behandling udføres dynamisk på hvert lokalt system, som hjemmebiblioteket er forbundet til. Ved at bruge det foreslåede system kan brugeren beholde sin hjemmemappe hos sig, for eksempel på et flashdrev, og få et arbejdsmiljø på enhver computer uden eksplicit at oprette en konto på den (tilstedeværelsen af ​​en fil med billedet af hjemmemappen fører til syntese af brugeren).

Det foreslås at bruge LUKS2 undersystemet til datakryptering, men systemd-homed tillader også brug af andre backends, for eksempel til ukrypterede mapper, Btrfs, Fscrypt og CIFS netværkspartitioner. For at administrere bærbare mapper foreslås homectl-værktøjet, som giver dig mulighed for at oprette og aktivere billeder af hjemmemapper samt ændre deres størrelse og angive en adgangskode.

På systemniveau sikres arbejdet af følgende komponenter:

  • systemd-homed.service - administrerer hjemmebiblioteket og indlejrer JSON-poster direkte i hjemmemappebilleder;
  • pam_systemd - behandler parametre fra JSON-profilen, når brugeren logger på og anvender dem i forbindelse med den aktiverede session (udfører godkendelse, konfigurerer miljøvariabler osv.);
  • systemd-logind.service - behandler parametre fra JSON-profilen, når brugeren logger på, anvender forskellige ressourcestyringsindstillinger og sætter grænser;
  • nss-systemd - NSS-modul til glibc, syntetiserer klassiske NSS-poster baseret på en JSON-profil, hvilket giver bagudkompatibilitet med UNIX-brugerbehandlings-API'en (/etc/password);
  • PID 1 - opretter dynamisk brugere (syntetiseret i analogi med brugen af ​​DynamicUser-direktivet i enheder) og gør dem synlige for resten af ​​systemet;
  • systemd-userdbd.service - oversætter UNIX/glibc NSS-konti til JSON-poster og giver et samlet Varlink API til forespørgsel og iteration over poster.

Fordelene ved det foreslåede system inkluderer muligheden for at administrere brugere, når mappen /etc monteres i skrivebeskyttet tilstand, fraværet af behovet for at synkronisere identifikatorer (UID/GID) mellem systemer, brugeruafhængighed fra en specifik computer, blokering af brugerdata i dvaletilstand, brug af kryptering og moderne autentificeringsmetoder. Systemd-homed er planlagt til at blive inkluderet i systemd mainstream i udgivelse 244 eller 245.

Eksempel på JSON-brugerprofil:

"autoLogin" : sand,
"binding" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/hjem/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" : "almindelig",
"enforcePasswordPolicy" : falsk,
"lastChangeUSec" : 1565951024279735,
"medlem af" : [
"hjul"
],
"privilegeret" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"Underskrift" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGIN OFFENTLIG NØGLE——\nMCowBQADK2VwAy…=\n——SLUT OFFENTLIG NØGLE——\n"
}
],
"brugernavn" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "inaktiv",
"service" : "io.systemd.Home",
"diskstørrelse": 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signeret lokalt" : sandt
}
}

Kilde: opennet.ru

Tilføj en kommentar