ื”ืฆื™ื’ systemd-homed ืœื ื™ื”ื•ืœ ืกืคืจื™ื•ืช ื‘ื™ืชื™ื•ืช ื ื™ื™ื“ื•ืช

ืœื ืืจื˜ ืคื•ื˜ืจื™ื ื’ ื”ื’ื™ืฉื• (PDF) ื‘ื›ื ืก All Systems Go 2019, ืจื›ื™ื‘ ื—ื“ืฉ ื‘ืžืขืจื›ืช ืžื ื”ืœ ื”ืžืขืจื›ืช - ืžืขืจื›ืช-homed, ืฉืžื˜ืจืชื• ืœื”ืคื•ืš ืืช ืกืคืจื™ื•ืช ื”ื‘ื™ืช ืฉืœ ื”ืžืฉืชืžืฉ ืœื ื™ื™ื“ื•ืช ื•ื ืคืจื“ื•ืช ืžื”ื’ื“ืจื•ืช ื”ืžืขืจื›ืช. ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™ ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ื•ื ืœื™ืฆื•ืจ ืกื‘ื™ื‘ื•ืช ืขืฆืžืื™ื•ืช ืœื ืชื•ื ื™ ืžืฉืชืžืฉ ืฉื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ื‘ื™ืŸ ืžืขืจื›ื•ืช ืฉื•ื ื•ืช ืžื‘ืœื™ ืœื“ืื•ื’ ืœืกื ื›ืจื•ืŸ ืžื–ื”ื™ื ื•ืœืกื•ื“ื™ื•ืช.

ืกื‘ื™ื‘ืช ื”ืกืคืจื™ื™ื” ื”ื‘ื™ืชื™ืช ืžื’ื™ืขื” ื‘ืฆื•ืจื” ืฉืœ ืงื•ื‘ืฅ ืชืžื•ื ื” ืจื›ื•ื‘, ืฉื”ื ืชื•ื ื™ื ื‘ื• ืžื•ืฆืคื ื™ื. ืื™ืฉื•ืจื™ ื”ืžืฉืชืžืฉ ืงืฉื•ืจื™ื ืœืกืคืจื™ื™ืช ื”ื‘ื™ืช ื•ืœื ืœื”ื’ื“ืจื•ืช ื”ืžืขืจื›ืช - ื‘ืžืงื•ื /etc/passwd ื•-/etc/shadow ืคืจื•ืคื™ืœ ื‘ืคื•ืจืžื˜ JSON, ืžืื•ื—ืกืŸ ื‘ืกืคืจื™ื™ืช ~/.identity. ื”ืคืจื•ืคื™ืœ ืžื›ื™ืœ ืืช ื”ืคืจืžื˜ืจื™ื ื”ื“ืจื•ืฉื™ื ืœืขื‘ื•ื“ืช ื”ืžืฉืชืžืฉ, ืœืจื‘ื•ืช ืžื™ื“ืข ืขืœ ื”ืฉื, ืกื™ืกืžื hash, ืžืคืชื—ื•ืช ื”ืฆืคื ื”, ืžื›ืกื•ืช ื•ืžืฉืื‘ื™ื ืฉื”ื•ืงืฆื•. ื ื™ืชืŸ ืœืืฉืจ ืืช ื”ืคืจื•ืคื™ืœ ื‘ื—ืชื™ืžื” ื“ื™ื’ื™ื˜ืœื™ืช ื”ืžืื•ื—ืกื ืช ืขืœ ืืกื™ืžื•ืŸ Yubikey ื—ื™ืฆื•ื ื™.

ืคืจืžื˜ืจื™ื ืขืฉื•ื™ื™ื ืœื›ืœื•ืœ ื’ื ืžื™ื“ืข ื ื•ืกืฃ ื›ื’ื•ืŸ ืžืคืชื—ื•ืช SSH, ื ืชื•ื ื™ ืื™ืžื•ืช ื‘ื™ื•ืžื˜ืจื™ื™ื, ืชืžื•ื ื”, ื“ื•ื"ืœ, ื›ืชื•ื‘ืช, ืื–ื•ืจ ื–ืžืŸ, ืฉืคื”, ืชื”ืœื™ืš ื•ืžื’ื‘ืœื•ืช ื–ื™ื›ืจื•ืŸ, ื“ื’ืœื™ ื”ืจื›ื‘ื” ื ื•ืกืคื™ื (nodev, noexec, nosuid), ืžื™ื“ืข ืขืœ ืฉืจืชื™ IMAP/SMTP ืฉืœ ืžืฉืชืžืฉื™ื ื‘ืฉื™ืžื•ืฉ , ืžื™ื“ืข ืขืœ ื”ืคืขืœืช ื‘ืงืจืช ื”ื•ืจื™ื, ืืคืฉืจื•ื™ื•ืช ื’ื™ื‘ื•ื™ ื•ื›ื•'. API ืžืกื•ืคืง ืœื‘ืงืฉ ื•ืœื ืชื— ืคืจืžื˜ืจื™ื ื•ืจืœื™ื ืง.

ื”ืงืฆืื” ื•ืขื™ื‘ื•ื“ UID/GID ื ืขืฉื™ื ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ื‘ื›ืœ ืžืขืจื›ืช ืžืงื•ืžื™ืช ืฉืืœื™ื” ืžื—ื•ื‘ืจืช ืกืคืจื™ื™ืช ื”ื‘ื™ืช. ื‘ืืžืฆืขื•ืช ื”ืžืขืจื›ืช ื”ืžื•ืฆืขืช, ื”ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœืฉืžื•ืจ ืืช ืกืคืจื™ื™ืช ื”ื‘ื™ืช ืฉืœื• ืืฆืœื•, ืœืžืฉืœ ืขืœ ื›ื•ื ืŸ ืคืœืืฉ, ื•ืœืงื‘ืœ ืกื‘ื™ื‘ืช ืขื‘ื•ื“ื” ื‘ื›ืœ ืžื—ืฉื‘ ืžื‘ืœื™ ืœื™ืฆื•ืจ ื‘ื• ื—ืฉื‘ื•ืŸ ื‘ืžืคื•ืจืฉ (ื ื•ื›ื—ื•ืช ืฉืœ ืงื•ื‘ืฅ ืขื ืชืžื•ื ื” ืฉืœ ืกืคืจื™ื™ืช ื”ื‘ื™ืช ืžื•ื‘ื™ืœ ืœืกื™ื ืชื–ื” ืฉืœ ื”ืžืฉืชืžืฉ).

ืžื•ืฆืข ืœื”ืฉืชืžืฉ ื‘ืชืช-ื”ืžืขืจื›ืช LUKS2 ืœื”ืฆืคื ืช ื ืชื•ื ื™ื, ืืš systemd-homed ืžืืคืฉืจ ื’ื ืฉื™ืžื•ืฉ ื‘-backends ืื—ืจื™ื, ืœืžืฉืœ, ืขื‘ื•ืจ ืกืคืจื™ื•ืช ืœื ืžื•ืฆืคื ื•ืช, Btrfs, Fscrypt ื•-CIFS ืžื—ื™ืฆื•ืช ืจืฉืช. ืœื ื™ื”ื•ืœ ืกืคืจื™ื•ืช ื ื™ื™ื“ื•ืช, ืžื•ืฆืข ื›ืœื™ ื”ืฉื™ืจื•ืช homectl, ื”ืžืืคืฉืจ ืœื™ืฆื•ืจ ื•ืœื”ืคืขื™ืœ ืชืžื•ื ื•ืช ืฉืœ ืกืคืจื™ื•ืช ื‘ื™ืชื™ื•ืช, ื›ืžื• ื’ื ืœืฉื ื•ืช ืืช ื’ื•ื“ืœืŸ ื•ืœื”ื’ื“ื™ืจ ืกื™ืกืžื”.

ื‘ืจืžืช ื”ืžืขืจื›ืช, ื”ืขื‘ื•ื“ื” ืžื•ื‘ื˜ื—ืช ืขืœ ื™ื“ื™ ื”ืจื›ื™ื‘ื™ื ื”ื‘ืื™ื:

  • systemd-homed.service - ืžื ื”ืœ ืืช ืกืคืจื™ื™ืช ื”ื‘ื™ืช ื•ืžื˜ืžื™ืข ืจืฉื•ืžื•ืช JSON ื™ืฉื™ืจื•ืช ืœืชื•ืš ืชืžื•ื ื•ืช ืกืคืจื™ื™ืช ื”ื‘ื™ืช;
  • pam_systemd - ืžืขื‘ื“ ืคืจืžื˜ืจื™ื ืžืคืจื•ืคื™ืœ JSON ื›ืืฉืจ ื”ืžืฉืชืžืฉ ืžืชื—ื‘ืจ ื•ืžื—ื™ืœ ืื•ืชื ื‘ื”ืงืฉืจ ืฉืœ ื”ื”ืคืขืœื” ื”ืžื•ืคืขืœืช (ืžื‘ืฆืข ืื™ืžื•ืช, ืžื’ื“ื™ืจ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื•ื›ื•');
  • systemd-logind.service - ืžืขื‘ื“ ืคืจืžื˜ืจื™ื ืžืคืจื•ืคื™ืœ JSON ื›ืืฉืจ ื”ืžืฉืชืžืฉ ืžืชื—ื‘ืจ, ืžื—ื™ืœ ื”ื’ื“ืจื•ืช ืฉื•ื ื•ืช ืœื ื™ื”ื•ืœ ืžืฉืื‘ื™ื ื•ืžื’ื“ื™ืจ ืžื’ื‘ืœื•ืช;
  • nss-systemd - ืžื•ื“ื•ืœ NSS ืขื‘ื•ืจ glibc, ืžืกื ืชื– ืจืฉื•ืžื•ืช NSS ืงืœืืกื™ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืคืจื•ืคื™ืœ JSON, ื•ืžืกืคืง ืชืื™ืžื•ืช ืœืื—ื•ืจ ืขื UNIX API ืœืขื™ื‘ื•ื“ ืžืฉืชืžืฉ (/etc/password);
  • PID 1 - ื™ื•ืฆืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืžืฉืชืžืฉื™ื (ืžืกื•ื ืชื– ื‘ืื ืœื•ื’ื™ื” ืขื ื”ืฉื™ืžื•ืฉ ื‘ื”ื ื—ื™ื™ืช DynamicUser ื‘ื™ื—ื™ื“ื•ืช) ื•ื”ื•ืคืš ืื•ืชื ืœื’ืœื•ื™ื™ื ืœืฉืืจ ื”ืžืขืจื›ืช;
  • systemd-userdbd.service - ืžืชืจื’ื ื—ืฉื‘ื•ื ื•ืช UNIX/glibc NSS ืœืจืฉื•ืžื•ืช JSON ื•ืžืกืคืง Varlink API ืžืื•ื—ื“ ืœืฉืื™ืœืชื” ื•ืื™ื˜ืจืฆื™ื” ืขืœ ืจืฉื•ืžื•ืช.

ะ˜ะท ะดะพัั‚ะพะธะฝัั‚ะฒ ะฟั€ะตะดะปะพะถะตะฝะฝะพะน ัะธัั‚ะตะผั‹ ะพั‚ะผะตั‡ะฐะตั‚ัั ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัƒะฟั€ะฐะฒะปะตะฝะธั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผะธ ะฟั€ะธ ะผะพะฝั‚ะธั€ะพะฒะฐะฝะธะธ ะบะฐั‚ะฐะปะพะณะฐ /etc ะฒ ั€ะตะถะธะผะต ั‚ะพะปัŒะบะพ ะดะปั ั‡ั‚ะตะฝะธั, ะพั‚ััƒั‚ัั‚ะฒะธะต ะฝะตะพะฑั…ะพะดะธะผะพัั‚ะธ ัะธะฝั…ั€ะพะฝะธะทะฐั†ะธะธ ะธะดะตะฝั‚ะธั„ะธะบะฐั‚ะพั€ะพะฒ (UID/GID) ะผะตะถะดัƒ ัะธัั‚ะตะผะฐะผะธ, ะฝะตะทะฐะฒะธัะธะผะพัั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะพั‚ ะบะพะฝะบั€ะตั‚ะฝะพะณะพ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ, ะฑะปะพะบะธั€ะพะฒะบะฐ ะดะฐะฝะฝั‹ั… ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะฒะพ ะฒั€ะตะผั ะฟะตั€ะตั…ะพะดะฐ ะฒ ัะฟัั‰ะธะน ั€ะตะถะธะผ, ะฟั€ะธะผะตะฝะตะฝะธะต ัˆะธั„ั€ะพะฒะฐะฝะธั ะธ ัะพะฒั€ะตะผะตะฝะฝั‹ั… ะผะตั‚ะพะดะพะฒ ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ. Systemd-homed ะฟะปะฐะฝะธั€ัƒะตั‚ัั ะฒะบะปัŽั‡ะธั‚ัŒ ะฒ ะพัะฝะพะฒะฝะพะน ัะพัั‚ะฐะฒ systemd ะฒ ะฒั‹ะฟัƒัะบะต 244 ะธะปะธ 245.

ื“ื•ื’ืžื” ืœืคืจื•ืคื™ืœ ืžืฉืชืžืฉ JSON:

"ืื•ื˜ื•ืœื•ื’ื™ืŸ" : ื ื›ื•ืŸ,
"ื›ืจื™ื›ื”" : {
ยซ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ยป,
"ืื—ืกื•ืŸ" : "ืœื•ืงืก",
"uid": 60233
}
},
"disposition" : "ืจื’ื™ืœ",
"enforcePasswordPolicy": false,
"lastChangeUSec" : 1565951024279735,
"ื—ื‘ืจ ื‘" : [
"ื’ึทืœื’ึทืœ"
],
"privileged" : {
"hashedPassword" : [
ยซ$6$WHBKvAFFT9jKPA4k$OPY4D5โ€ฆ/ยป
] },
"ื—ืชื™ืžื”" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "โ€”โ€”ื”ืชื—ืœ ืžืคืชื— ืฆื™ื‘ื•ืจื™โ€”โ€”\nMCowBQADK2VwAyโ€ฆ=\nโ€”โ€”ืกื•ืฃ ืžืคืชื— ืฆื™ื‘ื•ืจื™โ€”โ€”\n"
}
],
"userName" : "ื‘ื“ื™ืงื”",
"ืกื˜ื˜ื•ืก" : {
ยซ15e19cf24e004b949dfaac60c74aa165ยป : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "ืœื ืคืขื™ืœ",
"service" : "io.systemd.Home",
"ื’ื•ื“ืœ ื“ื™ืกืง" : 161218667776,
"ื“ื™ืกืง ืชืงืจื”": 191371729408,
"diskFloor": 5242780,
"ื—ืชื•ื ืžืงื•ืžื™": ื ื›ื•ืŸ
}
}

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”