Ipinakilala ang systemd-homed upang pamahalaan ang mga portable na direktoryo ng bahay

Lennart Poettering ipinakilala (PDF) sa All Systems Go 2019 conference, isang bagong bahagi ng system manager systemd - systemd-homed, na naglalayong gawing portable ang mga home directory ng user at hiwalay sa mga setting ng system. Ang pangunahing ideya ng proyekto ay upang lumikha ng mga self-sufficient na kapaligiran para sa data ng user na maaaring ilipat sa pagitan ng iba't ibang mga system nang hindi nababahala tungkol sa pag-synchronize ng identifier at pagiging kumpidensyal.

Ang kapaligiran ng direktoryo ng bahay ay dumating sa anyo ng isang naka-mount na file ng imahe, ang data kung saan naka-encrypt. Ang mga kredensyal ng user ay nakatali sa home directory kaysa sa mga setting ng system - sa halip na /etc/passwd at /etc/shadow profile sa JSON na format, na nakaimbak sa ~/.identity directory. Ang profile ay naglalaman ng mga parameter na kinakailangan para sa trabaho ng user, kabilang ang impormasyon tungkol sa pangalan, password hash, encryption key, quota, at inilalaan na mapagkukunan. Maaaring ma-certify ang profile gamit ang isang digital na lagda na nakaimbak sa isang panlabas na Yubikey token.

Ang mga parameter ay maaari ding magsama ng karagdagang impormasyon tulad ng mga SSH key, biometric na data ng pagpapatotoo, larawan, email, address, time zone, wika, proseso at mga limitasyon ng memorya, karagdagang mga mount flag (nodev, noexec, nosuid), impormasyon tungkol sa mga ginamit na user na IMAP/SMTP server , impormasyon tungkol sa pagpapagana ng mga kontrol ng magulang, mga backup na opsyon, atbp. Ang isang API ay ibinigay upang humiling at mag-parse ng mga parameter Varlink.

Ang pagtatalaga at pagproseso ng UID/GID ay dynamic na ginagawa sa bawat lokal na sistema kung saan nakakonekta ang home directory. Gamit ang iminungkahing sistema, maaaring panatilihin ng user ang kanyang home directory kasama niya, halimbawa sa isang Flash drive, at makakuha ng working environment sa anumang computer nang hindi tahasang lumilikha ng account dito (ang pagkakaroon ng isang file na may larawan ng home directory humahantong sa synthesis ng gumagamit).

Iminumungkahi na gamitin ang LUKS2 subsystem para sa pag-encrypt ng data, ngunit pinapayagan din ng systemd-homed ang paggamit ng iba pang mga backend, halimbawa, para sa mga hindi naka-encrypt na direktoryo, Btrfs, Fscrypt at mga partisyon ng network ng CIFS. Upang pamahalaan ang mga portable na direktoryo, ang homectl utility ay iminungkahi, na nagpapahintulot sa iyo na lumikha at mag-activate ng mga larawan ng mga direktoryo ng bahay, pati na rin baguhin ang kanilang laki at magtakda ng isang password.

Sa antas ng system, ang trabaho ay sinisiguro ng mga sumusunod na bahagi:

  • systemd-homed.service - pinamamahalaan ang home directory at direktang nag-embed ng mga JSON record sa mga imahe ng home directory;
  • pam_systemd - nagpoproseso ng mga parameter mula sa profile ng JSON kapag nag-log in ang user at inilapat ang mga ito sa konteksto ng na-activate na session (gumaganap ng pagpapatunay, nagko-configure ng mga variable ng kapaligiran, atbp.);
  • systemd-logind.service - nagpoproseso ng mga parameter mula sa profile ng JSON kapag nag-log in ang user, naglalapat ng iba't ibang setting ng pamamahala ng mapagkukunan at nagtatakda ng mga limitasyon;
  • nss-systemd - NSS module para sa glibc, synthesize ang mga klasikong NSS record batay sa isang JSON profile, na nagbibigay ng backward compatibility sa UNIX user processing API (/etc/password);
  • PID 1 - dynamic na lumilikha ng mga user (na-synthesize sa pamamagitan ng pagkakatulad sa paggamit ng DynamicUser directive sa mga unit) at ginagawa silang nakikita ng iba pang bahagi ng system;
  • systemd-userdbd.service - nagsasalin ng UNIX/glibc NSS account sa mga JSON record at nagbibigay ng pinag-isang Varlink API para sa pagtatanong at pag-ulit sa mga talaan.

Kabilang sa mga bentahe ng iminungkahing sistema ang kakayahang pamahalaan ang mga user kapag ini-mount ang /etc na direktoryo sa read-only na mode, ang kawalan ng pangangailangang i-synchronize ang mga identifier (UID/GID) sa pagitan ng mga system, kalayaan ng user mula sa isang partikular na computer, pagharang sa data ng user sa panahon ng sleep mode, ang paggamit ng encryption at modernong mga paraan ng pagpapatunay. Ang Systemd-homed ay binalak na isama sa systemd mainstream sa release 244 o 245.

Halimbawa ng profile ng user ng JSON:

"autoLogin" : totoo,
"nagbubuklod" : {
Β«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" : "regular",
"enforcePasswordPolicy" : mali,
"lastChangeUSec" : 1565951024279735,
"Miyembro ng" : [
"gulong"
],
"pribilehiyo" : {
"hashedPassword" : [
Β«$6$WHBKvAFFT9jKPA4k$OPY4D5…/Β»
] },
"pirma" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "β€”β€”SIMULA NG PUBLIC KEYβ€”β€”\nMCowBQADK2VwAy…=\nβ€”β€”END PUBLIC KEYβ€”β€”\n"
}
],
"userName" : "test",
"status" : {
Β«15e19cf24e004b949dfaac60c74aa165Β» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "hindi aktibo",
"service" : "io.systemd.Home",
"DiskSize" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : totoo
}
}

Pinagmulan: opennet.ru

Magdagdag ng komento