Tým stojící za systemd usiluje o zavedení inovativního přístupu ke správě domovských adresářů uživatelů. Nejde jen o drobnou změnu, ale o zásadní přerod v paradigmatu fungování Linuxu. V tomto článku se dozvíte vše podstatné o systemd-homed, který se pravděpodobně brzy objeví i ve vaší oblíbené linuxové distribuci.
Kontroverze nejsou novinkou
Když se v roce 2010 objevil systemd, linuxová komunita se rozdělila na několik táborů. Někteří jej považovali za krok vpřed, jiní za chybný návrh, který se odklání od filozofie Unixu. A pak tu byli ti, kterým to bylo jedno.
Odpůrci dávali svůj nesouhlas hlasitě najevo, a v některých případech až fanaticky. Lennart Poettering, softwarový inženýr ze společnosti Red Hat a jeden z tvůrců systemd, dokonce obdržel i výhrůžky smrtí.
Na YouTube se objevily písně s násilnými motivy zaměřené proti Poetteringovi a vznikaly webové stránky nabádající uživatele Linuxu k bojkotu systemd. Ani jeho spolupracovník, Kay Sieversová, se nevyhnul kritice a urážkám, nicméně Poettering to odnesl nejvíc.
Navzdory tomu, do osmi měsíců Fedora přešla na systemd. Do konce roku 2013 se k ní přidaly i Arch, Debian, Manjaro a Ubuntu. Nicméně open source komunita dává možnost vývojářům, pokud se jim něco nelíbí, forkovat zdrojový kód a dělat si po svém. Tak vznikly nové distribuce, například Devuan, fork Debianu, které se výhradně vyhýbají použití systemd.
Váš adresář $HOME
V linuxové adresářové struktuře se vše, co souvisí s vašimi uživatelskými daty, nachází v adresáři „/home“. Zde jsou uloženy vaše dokumenty, fotografie, hudba a všechny osobní adresáře, které jsou pojmenovány po vašem uživatelském účtu.
Nastavení aplikací jsou ukládána v domovské složce, v takzvaných skrytých „tečkových adresářích“. Ty jsou skryté proto, že jejich název začíná tečkou (.). Díky tomu, že jsou tato nastavení uložena lokálně, a nikoli v centrálním registru, jsou i všechna vaše nastavení součástí zálohy vašeho domovského adresáře.
Když obnovíte zálohu a spustíte aplikaci, jako je LibreOffice nebo Thunderbird, vyhledá se její skrytý adresář. Najde i vaše preference, nastavení panelů nástrojů a další přizpůsobení. Thunderbird obnoví informace o vašem e-mailovém účtu i s vaší poštou. Nemusíte tak vše nastavovat znova.
Pro zobrazení skrytých souborů a adresářů můžete použít příkaz `ls` s přepínačem `-a` (all). Nejprve zadejte:
ls
Zobrazí se vám běžné soubory a adresáře. Poté zadejte:
ls -a
Nyní vidíte i skryté soubory a adresáře.
Vzhledem k tomu, že domovský adresář je nejcennější částí instalace, bývá běžně připojen na vlastní oddíl nebo samostatný pevný disk. V případě havárie operačního systému nebo disku tak můžete distribuci Linuxu přeinstalovat nebo ji vyměnit a následně připojit váš existující domovský oddíl zpět do „/home“.
Data o vás
V domovském adresáři nejsou uložena pouze vaše data, ale i informace o vás, včetně některých atributů vaší digitální identity. Například adresář „.ssh“ obsahuje informace o vzdálených připojeních k dalším počítačům a všechny vygenerované SSH klíče.
Další systémové atributy, jako uživatelské jméno, heslo a jedinečné uživatelské ID, jsou uloženy v souborech jako „/etc/passwd“ a „/etc/shadow“. Některé z nich si může přečíst každý, jiné jsou přístupné pouze uživatelům s root oprávněním.
Takto vypadá obsah souboru „/etc/passwd“:
cat /etc/passwd
Změny v systemd
Cílem změn, které systemd přináší, je umožnit plně přenosný domovský adresář, ve kterém budou uložena jak vaše data, tak i vaše digitální identita. Vaše UID a další identifikační a autentizační mechanismy budou uloženy pouze ve vašem domovském adresáři.
Tento design, kdy jsou „všechna vejce v jednom košíku“, automaticky šifruje domovské adresáře. Ty jsou dešifrovány při každém přihlášení a opětovně zašifrovány při odhlášení. Preferovanou metodou je šifrování disku Linux Unified Key Setup (LUKS). Existují však i další možnosti, jako například fscrypt.
JSON záznam uživatele ukládá veškeré informace o vaší identitě v adresáři s názvem „~/.identity“. Je kryptograficky podepsán klíčem, který nemáte pod kontrolou.
Domovský adresář každého uživatele je připojen k zařízení se zpětnou smyčkou, podobně jako je připojena aplikace snap. Díky tomu se strom adresářů v domovském adresáři jeví jako součást stromu operačního systému. Výchozí bod pro připojení je „/home/$USER.homedir“, kde „$USER“ je nahrazeno názvem uživatelského účtu.
Jaké jsou výhody?
Protože se domovský adresář stává bezpečným úschovem všech vašich dat, můžete jej mít uložený i na vyměnitelném zařízení. Můžete ho například přenášet na USB disku mezi pracovním a domácím počítačem, nebo jakýmkoliv jiným počítačem v systému.
Toto Poettering myslel pojmem „plně přenosný domovský adresář“. Uvedl také, že i když neplánujete přenos domovského adresáře na přenosném médiu, zjednoduší to upgrady a migrace a zvýší se úroveň zabezpečení.
Systemd-homed eliminuje takzvané „databáze s vedlejšími informacemi“, které obsahují útržky důležitých údajů o uživateli, které by dle Poetteringa měly být centralizované. Soubory „/etc/passwd“ a „/etc/shadow“ obsahují ověřovací informace a hashovaná hesla. Obsahují ale také i údaje jako je výchozí shell a General Electric Comprehensive Operation Supervisor (GECOS) pole.
Poettering prohlásil, že metadata by měla být racionalizována a uložena v logických skupinách v rámci JSON záznamu každého uživatele v jeho domovském adresáři.
Správa vašeho nového $HOME
Služba systemd-homed se ovládá pomocí nového nástroje příkazového řádku homectl.
S jeho pomocí můžete vytvářet uživatele a domovské adresáře, nastavovat limity úložiště pro každého uživatele. Můžete také nastavit heslo, uzamknout uživatele nebo jeho účet smazat. Uživatelé mohou být kontrolováni a lze také číst jejich JSON záznamy.
Pro každého uživatele lze také nastavit časová pásma a další údaje o poloze. Můžete definovat výchozí shell a také nastavit proměnné prostředí tak, aby měly určitou hodnotu při každém přihlášení uživatele.
Při pohledu do adresáře „/home“ uvidíte spravované položky systemd-homed, které vypadají takto, s „.homedir“ připojeným k uživatelskému jménu:
/home/dave.homedir
Nezapomeňte, že se jedná pouze o bod připojení. Skutečné umístění zašifrovaného domovského adresáře je jinde.
Omezení a problémy
systemd-homed je určen pouze pro uživatelské účty lidí. Nelze jej použít pro účty s UID nižším než 1000. To znamená, že root, daemon, bin a další nelze tímto novým schématem spravovat. Stále budou zapotřebí standardní metody správy uživatelů. Systemd-homed tedy není univerzálním řešením.
Existuje známý problém, který je potřeba vyřešit. Jak bylo uvedeno dříve, domovský adresář se dešifruje při přihlášení uživatele. Nicméně při vzdáleném přístupu k počítači přes SSH nelze použít SSH klíče z domovského adresáře, protože domovský adresář je do té doby stále zašifrovaný. Pro ověření před přihlášením ale klíče potřebujeme.
Tým stojící za systemd si je tohoto problému vědom, ale nenalezli jsme žádnou zmínku o jeho vyřešení. Nicméně je pravděpodobné, že řešení najdou, protože jinak by to byl velký přešlap.
Řekněme, že někdo přesune svůj domovský adresář na nový počítač. Pokud na novém počítači již UID používá jiný uživatel, bude automaticky přiděleno nové UID. U všech jeho souborů pak bude samozřejmě potřeba změnit jejich vlastnictví na nové UID.
V současné době se to řeší rekurzivním použitím příkazu chown -R. Je pravděpodobné, že se toto do budoucna vyřeší elegantnějším způsobem. Tento těžkopádný přístup neřeší démony a procesy, které běží jako jiní uživatelé.
Kdy to přijde?
Tyto změny již probíhají. Změny v kódu byly navrženy 20. ledna 2020 a byly začleněny do sestavení systemd 245, které bylo součástí Ubuntu 20.04 v dubnu 2020.
Pro zjištění, jakou verzi máte, zadejte následující příkaz:
systemd --version
Příkaz `homectl` však zatím není k dispozici. Ubuntu 20.04 používá tradiční adresář `/home` a nepoužívá systemd-homed.
Je samozřejmě na každé distribuci, kdy implementuje a začne podporovat systemd-homed a homectl.
Není tedy nutné panikařit. Vzhledem k tomu, že standardní metody pro správu uživatelů a domovských adresářů budou i nadále k dispozici, budeme mít stále na výběr.