Lennart Poettering () az All Systems Go 2019 konferencián bemutatta a systemd új komponensét — , amely a felhasználói otthoni könyvtárak hordozhatóságának biztosítására és a rendszerbeállításoktól való elkülönítésére összpontosít. A projekt alapvető ötlete önálló adatkezelési környezetek létrehozása, amelyek áthelyezhetők különböző rendszerek között anélkül, hogy a felhasználói azonosítók szinkronizálásával vagy a magánélet védelmével kellene foglalkozni.
Az otthoni könyvtár környezete egy csatolható lemezképként érkezik, amelynek adatai titkosítva vannak. A felhasználói hitelesítési paraméterek a felhasználói otthoni könyvtárhoz vannak kötve, nem a rendszerbeállításokhoz — a /etc/passwd és /etc/shadow helyett JSON formátumban, amely a ~ / .identity könyvtárban van tárolva. A profil tartalmazza a felhasználó működéséhez szükséges paramétereket, beleértve a nevével, a jelszónak hash-ét, a titkosításhoz szükséges kulcsokat, a kvótákat és a rendelkezésre álló erőforrásokat. A profil digitális aláírással is hitelesíthető, amely egy külső Yubikey tokenen van tárolva.
A paraméterek további információkat is tartalmazhatnak, például SSH kulcsokat, biometrikus azonosításhoz szükséges adatokat, képet, e-mailt, címet, időzónát, nyelvet, folyamat- és memóriahatárokat, további csatolási címkéket (nodev, noexec, nosuid), a felhasználó által használt IMAP/SMTP szerverek adatait, a szülői felügyelet aktiválásával kapcsolatos információkat, a mentési beállításokat stb. A paraméterek lekérdezésére és feldolgozására API áll rendelkezésre. .
A UID/GID meghatározása és kezelése dinamikusan történik minden helyi rendszerben, amelyhez az otthoni könyvtár csatlakozik. A javasolt rendszerrel a felhasználó megtarthatja az otthoni könyvtárát, például egy Flash-illesztőn, és bármely számítógépen működési környezetet kaphat anélkül, hogy kifejezetten felhasználói fiókot kellene létrehoznia (ha létezik az otthoni könyvtár képfájl, az felhasználó szintézisét eredményezi).
Az adatok titkosításához a LUKS2 alrendszer használatát javasolják, de a systemd-homed más háttereket is lehetővé tesz, például a titkosítatlan könyvtárakhoz, Btrfs, Fscrypt és CIFS hálózati partíciókhoz. A hordozható könyvtárak kezelésére a homectl segédprogramot kínálják, amely lehetővé teszi a felhasználói könyvtárak képeinek létrehozását és aktiválását, valamint méretük megváltoztatását és jelszavak beállítását.
A rendszer szintjén a következő komponensek biztosítják a működést:
- systemd-homed.service — kezeli a felhasználói könyvtárakat, és közvetlenül beépíti a JSON-bejegyzéseket a felhasználói könyvtárak képeibe;
- pam_systemd — a felhasználói bejelentkezéskor kezeli a JSON-profilt, és alkalmazza annak paramétereit az aktivált munkamenet keretében (végrehajtja az azonosítást, beállítja a környezeti változókat stb.);
- systemd-logind.service — a felhasználói bejelentkezéskor kezeli a JSON-profilt, alkalmaz különböző erőforrás-kezelési beállításokat és korlátozásokat állít fel;
- nss-systemd — a glibc NSS modul, amely a JSON-profilt alapul véve klasszikus NSS bejegyzéseket szintetizál, biztosítva a UNIX API-val való visszafelé kompatibilitást a felhasználók kezeléséhez (/etc/password);
- PID 1 — dinamikusan létrehozza a felhasználókat (a DynamicUser direktíva alkalmazásával szintetizálva az egységekben) és láthatóvá teszi őket a rendszer többi része számára;
- systemd-userdbd.service — átkonvertálja a UNIX/glibc NSS fiókokat JSON bejegyzésekké, és egységes Varlink API-t biztosít a bejegyzések lekérdezésére és válogatására.
A rendszer előnyei közé tartozik a felhasználók kezelése a /etc könyvtár csak olvasásra történő csatolásakor, az azonosítók (UID/GID) szinkronizálásának szükségtelensége a rendszerek között, a felhasználó függetlensége a konkrét számítógéptől, a felhasználói adatok blokkolása alvó üzemmódba lépéskor, a titkosítás és a modern azonosítási módszerek alkalmazása. A systemd-homed tervezett beillesztése a systemd fő összetételébe a 244-es vagy 245-ös kiadásban várható.
Felhasználói JSON-profil példa:
«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——\nMCowBQADK2VwAy…=\n——END PUBLIC KEY——\n»
}
],
«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
}
}
Forrás: opennet.ru
