Systemd zmieni sposób działania katalogu domowego systemu Linux

Zespół odpowiedzialny za systemd chce, abyś przyjął nowy sposób zarządzania katalogami domowymi. Nazywanie tego „nowym sposobem” jest lekkim ujęciem – to prawdziwa zmiana paradygmatu dla Linuksa. Oto wszystko, co musisz wiedzieć o systemd-homed, który prawdopodobnie pojawi się w pobliskiej dystrybucji Linuksa.

Kontrowersje nie są obce

Gdy systemd został wprowadzony w 2010 roku, społeczność Linuksa podzieliła się na trzy obozy. Niektórzy uważali, że to ulepszenie, a inni uważali, że był to wadliwy projekt, który nie był zgodny filozofia Unix. Niektórych to nie obchodziło.

Reakcja przeciwników była głośna, gorąca, aw niektórych przypadkach wręcz fanatyczna. Lennart Poettering, inżynier oprogramowania w czerwony kapelusz i współtwórca systemd, otrzymał nawet groźby śmierci.

Piosenki opowiadające się za przemocą wobec Poettering zostały opublikowane na YouTube, a strony internetowe próbowały zmusić użytkowników Linuksa do bojkotu systemu. Jego współtwórca, Kay Sievers, również spotkał się z krytyką i nadużyciami, ale Poettering z pewnością poniósł ten ciężar.

Jednak w ciągu ośmiu miesięcy Fedora używała systemd. Do końca 2013 r. Łuk, Debian, Manjaro, i Ubuntu wszyscy przenieśli się do systemd. Oczywiście zaletą open source jest to, że jeśli coś ci się nie podoba, możesz rozwidlić kod źródłowy i zrobić z nim własne rzeczy. Nowe dystrybucje – jak Devuan, który był rozwidleniem Debiana – został stworzony wyłącznie po to, aby uniknąć używania systemd.

Twój katalog $ HOME

W strukturze katalogów Linuksa wszystko, co robisz, znajduje się w katalogu „/ home”. Twoje pliki danych, obrazy, muzyka i całe osobiste drzewo katalogów są przechowywane w tym jednym katalogu, którego nazwa pochodzi od konta użytkownika.

Ustawienia aplikacji są przechowywane w folderze domowym w ukrytych „katalogach z kropkami”. Jeśli pierwszym znakiem nazwy pliku lub katalogu jest kropka (.), Jest on ukryty. Ponieważ te ustawienia są przechowywane lokalnie, a nie w centralnym rejestrze – a kopia zapasowa katalogu domowego zawiera te ukryte pliki i foldery – tworzona jest również kopia zapasowa wszystkich ustawień.

Podczas przywracania kopii zapasowej i uruchamiania aplikacji, takiej jak LibreOffice lub Thunderbird, szuka ona swojego ukrytego katalogu. Znajduje również preferencje dokumentu, ustawienia paska narzędzi i wszelkie inne dostosowania. Thunderbird znajdzie informacje o Twoim koncie e-mail i adres e-mail. Nie musisz przechodzić przez ból powolnego konfigurowania każdej aplikacji.

Możesz użyć ls z opcją -a (all), aby zobaczyć ukryte pliki i katalogi. Najpierw wpisz:

ls

To pokazuje zwykłe pliki i katalogi. Następnie wpisz:

ls -a

Teraz możesz zobaczyć ukryte pliki i katalogi.

Znajduje się w oknie terminala.

Ponieważ jest to najcenniejsza część instalacji, często zdarza się, że katalog „/ home” jest montowany na własnej partycji lub na oddzielnym dysku twardym. W ten sposób, jeśli coś katastrofalnego stanie się z systemem operacyjnym lub partycją, na której się on znajduje, możesz ponownie zainstalować dystrybucję Linuksa lub zamienić ją na nową. Następnie możesz po prostu ponownie zamontować istniejącą partycję domową na „/ home”.

Dane o Tobie

Twój katalog domowy nie tylko przechowuje Twoje dane; przechowuje również informacje o Tobie. w tym niektóre atrybuty Twojej tożsamości cyfrowej. Na przykład katalog „.ssh” przechowuje informacje o zdalnych połączeniach nawiązanych z innymi komputerami i wszelkich wygenerowanych kluczach SSH.

Inne atrybuty systemowe, takie jak nazwa użytkownika konta, hasło i unikalny identyfikator użytkownika, są przechowywane w innych miejscach w plikach, takich jak „/ etc / passwd” i „/ etc / shadow”. Każdy może przeczytać niektóre z nich, ale inne mogą czytać tylko osoby z uprawnieniami roota.

Tak wygląda zawartość pliku „/ etc / passwd”:

cat /etc/passwd

cat / etc / passwd w oknie terminala.

Zmiany systemowe

Celem zmian systemd-homed jest zapewnienie w pełni przenośnego katalogu domowego z przechowywanymi w nim zarówno danymi, jak i cyfrową tożsamością Linuksa. Twój UID i wszystkie inne mechanizmy identyfikacji i uwierzytelniania będą przechowywane tylko w Twoim katalogu domowym.

Ze względu na projekt „wszystkie jajka w jednym koszyku” katalogi domowe są szyfrowane. Są odszyfrowywane automatycznie przy każdym logowaniu i ponownie szyfrowane przy każdym wylogowaniu. Preferowaną metodą jest użycie Konfiguracja klucza Unified w systemie Linux (LUKS) szyfrowanie dysku. Istnieją jednak inne dostępne programy, takie jak fscrypt.

ZA Notacja obiektu JavaScript (JSON) rekord użytkownika przechowuje wszystkie informacje o Twojej tożsamości w katalogu o nazwie „~ / .identity”. Jest podpisany kryptograficznie za pomocą klucza, nad którym nie masz kontroli.

Katalog domowy każdej osoby jest montowany na urządzeniu zwrotnym, podobnie do sposobu, w jaki jest montowana aplikacja snap. Dzieje się tak, aby drzewo katalogów w katalogu głównym wyglądało jak jednolita część drzewa katalogów systemu operacyjnego. Punkt montowania domyślnie to „/home/$USER.homedir” („$ USER” jest zastępowane nazwą konta osoby).

Jakie są korzyści?

Ponieważ katalog domowy staje się bezpieczną hermetyzacją wszystkich danych, możesz nawet mieć swój katalog domowy na urządzeniu wymiennym. Na przykład możesz użyć dysku USB, aby przenieść go między komputerem w pracy a komputerem domowym lub dowolnym innym komputerem domowym.

To właśnie Poettering miał na myśli, mówiąc „w pełni przenośny katalog domowy”. Powiedział, że nawet jeśli nie chcesz przenosić swojego katalogu domowego na urządzenie przenośne, ułatwi to aktualizacje i migracje oraz zwiększy bezpieczeństwo.

Usuwa to, co nazywa „pomocniczymi bazami danych”, które zawierają fragmenty ważnych informacji o tobie, które zdaniem Poetteringa powinny zostać scentralizowane. Pliki „/ etc / passwd” i „/ etc / shadow” zawierają informacje uwierzytelniające i zaszyfrowane hasła. Jednak przechowują również informacje, takie jak domyślna powłoka, plik General Electric Kompleksowy Nadzorca Operacyjny (GECOS).

Poettering powiedział to metadane powinny być zracjonalizowane i przechowywane w znaczących grupach w rekordzie JSON każdej osoby w jej katalogu domowym.

Zarządzanie nowym $ HOME

Usługa systemd-homed jest kontrolowana przez nowy homectl narzędzie wiersza poleceń.

Istnieją opcje tworzenia użytkowników i katalogów domowych oraz ustawiania limitów pamięci dla każdego użytkownika. Możesz także ustawić hasło, zablokować komuś dostęp do jego konta lub całkowicie usunąć konto. Użytkownicy mogą być kontrolowani, a także ich rekordy użytkowników JSON.

Dla każdego użytkownika można również ustawić strefy czasowe i inne informacje oparte na lokalizacji. Możesz określić domyślną powłokę, a nawet ustawić zmienne środowiskowe, aby były w określonym stanie, gdy ktoś się zaloguje.

Jeśli zajrzysz do katalogu „/ home”, zobaczysz wpisy zarządzane przez systemd-homed, które wyglądają jak poniżej, z „.homedir” dołączonym do nazwy użytkownika:

/home/dave.homedir

Pamiętaj, że to tylko punkt montowania. Lokalizacja rzeczywistego zaszyfrowanego katalogu domowego znajduje się w innym miejscu.

Ograniczenia i problemy

systemd-homed jest przeznaczony tylko do użytku na kontach użytkowników. Nie obsługuje kont użytkowników z UID mniejszym niż 1000. Innymi słowy, za pomocą nowego schematu nie można administrować rootem, daemonem, bin i tak dalej. Zawsze będzie potrzeba standardowych sposobów administrowania użytkownikami. Dlatego systemd-homed nie jest rozwiązaniem globalnym.

Jest znany Złap 22 to musi zostać rozwiązane. Jak wspomnieliśmy wcześniej, katalog domowy osoby jest odszyfrowywany za każdym razem, gdy się loguje. Ale jeśli ktoś zdalnie uzyskuje dostęp do komputera przez SSH, nie można odwoływać się do kluczy SSH w katalogu domowym, ponieważ katalog domowy jest nadal zaszyfrowany do tego czasu. osoba loguje się. Oczywiście, przed zalogowaniem potrzebne są klucze SSH.

Był to rozpoznany problem przez zespół systemd-homed, ale nie mogliśmy znaleźć żadnych informacji o rozwiązaniu tego problemu. Jesteśmy pewni, że znajdą rozwiązanie; byłoby to spektakularne, gdyby tego nie zrobili.

Powiedzmy, że ktoś przenosi swój katalog domowy na nowy komputer. Jeśli UID jest już używany na nowym komputerze przez kogoś innego, automatycznie zostanie mu przypisany nowy UID. Oczywiście wszystkie jego pliki będą musiały zostać ponownie przypisane do nowego UID.

Obecnie jest to obsługiwane przez rekurencyjne, automatyczne zastosowanie polecenie chown -R. Prawdopodobnie w przyszłości zostanie to potraktowane inaczej, gdy zostanie opracowany bardziej elegancki projekt. To wymagające podejście nie bierze pod uwagę demonów i procesów, które działają jako inni użytkownicy.

Kiedy to się dzieje?

To się teraz dzieje. Zmiany kodu były złożony w dniu 20 stycznia 2020 ri zostały uwzględnione w kompilacji 245 systemu systemd, która została dostarczona z Ubuntu 20.04 w kwietniu 2020 r.

Aby sprawdzić posiadaną wersję, wpisz:

systemd --version

systemd --version w oknie terminala.

Jednak polecenie homectl nie jest jeszcze obecne. Ubuntu 20.04 używa tradycyjnego katalogu / home i nie używa systemd-homed.

Oczywiście to poszczególne dystrybucje decydują, kiedy będą zawierać i obsługiwać systemd-homed i homectl.

Nie ma więc potrzeby, aby ktokolwiek wchodził w tryb pełnych widelców i płonących pochodni. Ponieważ standardowe metody zarządzania użytkownikami i katalogami domowymi zostaną zachowane, wszyscy nadal będziemy mieli wybór.