ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π΅Π½ Π΅ systemd-homed Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° прСносими домашни Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

Π›Π΅Π½Π½Π°Ρ€Ρ‚ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€ΠΈΠ½Π³ (Lennart Poettering) прСдстави (PDF) Π½Π° конфСрСнцията All Systems Go 2019 Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° систСмния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ systemd β€” systemd-homed, насочСн към осигуряванС Π½Π° прСносимост Π½Π° Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΈ тяхното отдСлянС ΠΎΡ‚ систСмнитС настройки. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° идСя Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠ΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ срСди Π·Π° потрСбитСлски Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСнасяни ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Π³Ρ€ΠΈΠΆΠΈΠΌ Π·Π° синхронизация Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ ΠΈ конфидСнциалност.

Π‘Ρ€Π΅Π΄Π°Ρ‚Π° Π½Π° домашния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ сС прСдоставя ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ ΠΎΠ±Ρ€Π°Π· Π½Π° Ρ„Π°ΠΉΠ», Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΉΡ‚ΠΎ са ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½ΠΈ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° удостовСряванС Π½Π° потрСбитСля са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с домашния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π° Π½Π΅ със систСмнитС настройки β€” вмСсто /etc/passwd ΠΈ /etc/shadow сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΎΡ„ΠΈΠ» Π² JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ Π² дирСкторията ~/ .identity. Π’ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° са посочСни ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° потрСбитСля, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠΌΠ΅, Ρ…Π΅Ρˆ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π°Ρ‚Π°, ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅, ΠΊΠ²ΠΎΡ‚ΠΈ ΠΈ прСдоставСни рСсурси. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°Π²Π΅Ρ€Π΅Π½ с Ρ†ΠΈΡ„Ρ€ΠΎΠ² подпис, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ Π½Π° външСн Ρ‚ΠΎΠΊΠ΅Π½ Yubikey.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация, Ρ‚Π°ΠΊΠ°Π²Π° ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° SSH, Π΄Π°Π½Π½ΠΈ Π·Π° Π±ΠΈΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½Π° автСнтикация, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΠΉΠ», адрСс, часови пояс, Π΅Π·ΠΈΠΊ, Π»ΠΈΠΌΠΈΡ‚ΠΈ Π½Π° броя Π½Π° процСситС ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ (nodev, noexec, nosuid), информация относно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ ΠΎΡ‚ потрСбитСля IMAP/SMTP ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, информация Π·Π° родитСлски ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ», ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ ΠΈ Ρ‚.Π½. Π—Π° запитвания ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π΅ прСдоставСн API Varlink.

НазначаванСто ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° UID/GID сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ във всяка Π»ΠΎΠΊΠ°Π»Π½Π° систСма, към която Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Π§Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° систСма потрСбитСлят ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΡŠΡ€ΠΆΠΈ домашния си ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΡ€ΠΈ сСбС си, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Ρ„Π»Π°Ρˆ устройство, ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½Π° срСда Π½Π° всяко ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π½ΠΎ устройство Π±Π΅Π· явното оформянС Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° Π½Π΅Π³ΠΎ (Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ» с ΠΎΠ±Ρ€Π°Π· Π½Π° домашния ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ синтСз Π½Π° потрСбитСля).

Π—Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° подсистСмата LUKS2, Π½ΠΎ systemd-homed ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, 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 записи ΠΈ прСдоставя ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ API Varlink Π·Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ ΠΈ изброяванС Π½Π° записитС.

ΠžΡ‚ прСдимствата Π½Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π°Ρ‚Π° систСма сС отбСлязва Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° дирСктория /etc Π² Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, липса Π½Π° нСобходимост Π·Π° синхронизация Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ (UID/GID) ΠΌΠ΅ΠΆΠ΄Ρƒ систСмитС, нСзависимост Π½Π° потрСбитСля ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° потрСбитСля ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄ Π² спящ Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° автСнтикация. БистСмата systemd-homed Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π° Π΄Π° бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² основния ΡΡŠΡΡ‚Π°Π² Π½Π° systemd Π² вСрсия 244 ΠΈΠ»ΠΈ 245.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ 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" : "regular",
"enforcePasswordPolicy" : false,
Β«lastChangeUSecΒ» : 1565951024279735,
Β«memberOfΒ» : [
Β«wheelΒ»
],
Β«privilegedΒ» : {
Β«hashedPasswordΒ» : [
Β«$6$WHBKvAFFT9jKPA4k$OPY4D5…/Β»
]
},
Β«signatureΒ» : [
{
Β«dataΒ» : Β«LU/HeVrPZSzi3M3J…==Β»,
Β«keyΒ» : Β«β€”β€”BEGIN PUBLIC KEYβ€”β€” MCowBQADK2VwAy…= β€”β€”END PUBLIC KEYβ€”β€” Β»
}
],
Β«userNameΒ» : Β«testΒ»,
Β«statusΒ» : {
Β«15e19cf24e004b949dfaac60c74aa165Β» : {
Β«goodAuthenticationCounterΒ» : 16,
Β«lastGoodAuthenticationUSecΒ» : 1566309343044322,
Β«rateLimitBeginUSecΒ» : 1566309342341723,
Β«rateLimitCountΒ» : 1,
Β«stateΒ» : Β«inactiveΒ»,
Β«serviceΒ» : Β«io.systemd.HomeΒ»,
Β«diskSizeΒ» : 161218667776,
Β«diskCeilingΒ» : 191371729408,
Β«diskFloorΒ» : 5242780,
Β«signedLocallyΒ» : true
}
}

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster