Systemd ще промени начина, по който работи вашата домашна директория на Linux

Екипът зад systemd иска да приемете нов начин за управление на домашни директории. Да го наречем „нов начин“ е леко изразено – това е истинска промяна на парадигмата за Linux. Ето всичко, което трябва да знаете за systemd-homed, което вероятно ще дойде в дистрибуция на Linux близо до вас.

Не е непознат за полемиката

Кога systemd беше въведена през 2010 г., Linux общността се раздели на три лагера. Някои смятаха, че това е подобрение, а други смятаха, че това е дефектен дизайн, който не се придържа към него философията на Unix. И на някои не им пукаше по един или друг начин.

Реакцията на противниците беше силна, разгорещена и в някои случаи почти фанатична. Ленарт Потеринг, софтуерен инженер в червена шапка и съ-разработчик на systemd, дори получи смъртни заплахи.

Песни, пропагандиращи насилие срещу Poettering, бяха публикувани в YouTube и се появиха уебсайтове, които се опитваха да принудят потребителите на Linux да бойкотират systemd. Неговият съ-разработчик, Кей Сивърс, също получи критики и злоупотреби, но Poettering със сигурност понесе тежестта на това.

И все пак, в рамките на осем месеца, Fedora използва systemd. До края на 2013 г. арх, Debian, Манджаро, и Ubuntu всички бяха преместени в systemd. Разбира се, славата на отворения код е, че ако нещо не ви харесва, можете да разклоните изходния код и да направите своето нещо с него. Нови дистрибуции – като Девуан, който беше разклонение на Debian — бяха създадени единствено с цел избягване на използването на systemd.

Вашата $HOME директория

В структурата на директорията на Linux всичко, което правите, се намира в директорията “/home”. Вашите файлове с данни, изображения, музика и цялото дърво на личните директории се съхраняват в тази една директория, наречена на вашия потребителски акаунт.

Настройките за вашите приложения се съхраняват в домашната ви папка в скрити „точкови директории“. Ако първият знак на името на файл или директория е точка (.), той е скрит. Тъй като тези настройки се съхраняват локално, а не в централен регистър — и тъй като резервното копие на вашата домашна директория включва тези скрити файлове и папки — всичките ви настройки също се архивират.

  Как да гледате Netflix на работния плот на Linux с Electronplayer

Когато възстановите резервно копие и стартирате приложение, като LibreOffice или Thunderbird, то търси неговата скрита директория. Той също така намира вашите предпочитания за документи, настройки на лентата с инструменти и всякакви други персонализации. Thunderbird намира информацията за вашия имейл акаунт и вашия имейл. Не е нужно да преминавате през болката от бавното настройване на всяко приложение.

Можете да използвате ls с опцията -a (всички), за да видите скрити файлове и директории. Първо въведете следното:

ls

Това ви показва обикновените файлове и директории. След това въведете следното:

ls -a

Сега можете да видите скритите файлове и директории.

Тъй като това е най-ценната част от инсталацията, обичайно е директорията “/home” да се монтира в собствен дял или на отделен твърд диск. По този начин, ако се случи нещо катастрофално с операционната система или дяла, на който се намира, можете или да преинсталирате вашата Linux дистрибуция, или да смените с нова. След това можете просто да монтирате отново съществуващия домашен дял на „/home“.

Данни за Вас

Вашата домашна директория не просто съхранява вашите данни; също така съхранява информация за вас. включително някои атрибути на вашата цифрова самоличност. Например, вашата директория “.ssh” съхранява информация за отдалечени връзки, които сте направили с други компютри, и всички SSH ключове, които сте генерирали.

Други системни атрибути, като потребителско име, парола и уникален потребителски идентификатор на вашия акаунт, се съхраняват другаде във файлове като „/etc/passwd“ и „/etc/shadow“. Всеки може да чете някои от тях, но други могат да бъдат прочетени само от хора, които имат root привилегии.

Ето как изглежда съдържанието на файла “/etc/passwd”:

cat /etc/passwd

Systemd-homed Промени

Целта на промените в systemd-homed е да предоставят напълно преносима домашна директория с вашите данни и цифрова идентичност на Linux, съхранявани в нея. Вашият UID и всички други механизми за идентификация и удостоверяване ще се съхраняват само във вашата домашна директория.

Поради техния дизайн „всички яйца в една кошница“, домашните директории са криптирани. Те се декриптират автоматично всеки път, когато влезете и се криптират отново, когато излезете. Предпочитаният метод е да се използва Настройка на унифициран ключ на Linux (LUKS) дисково криптиране. Съществуват обаче и други схеми, като напр fscrypt.

А Нотация на обекти на JavaScript (JSON) потребителският запис съхранява цялата ви информация за самоличност в директория, наречена „~/.identity“. Той е криптографски подписан с ключ, който е извън вашия контрол.

  Как да надникнете вътре в двоичните файлове от командния ред на Linux

Домашната директория на всеки човек е монтирана на устройство с loopback, подобно на начина, по който се монтира приложение за щракване. Това е така, че дървото на директориите в домашната директория се появява като безпроблемна част от дървото на директориите на операционната система. По подразбиране точката на монтиране е „/home/$USER.homedir“ („$USER“ се заменя с името на акаунта на лицето).

Какви са ползите?

Тъй като вашата домашна директория се превръща в сигурно капсулиране на всички ваши данни, можете дори да имате домашната си директория на подвижно устройство. Например, можете да използвате USB устройство, за да го преместите между работните и домашни машини или всеки друг компютър, базиран на systemd.

Това е, което Poettering има предвид под „напълно преносима домашна директория“. Той каза, че дори и да не искате да местите домашната си директория на преносимо устройство, това ще направи надстройките и миграциите по-лесни и ще повиши сигурността.

Той премахва това, което той нарича „бази данни за странични коли“, които съдържат фрагменти с важна информация за вас, която според Потеринг трябва да бъде централизирана. Файловете “/etc/passwd” и “/etc/shadow” съдържат информация за удостоверяване и хеширани пароли. Те обаче също съдържат информация като вашата обвивка по подразбиране, the Обширен оперативен надзорник на General Electric (GECOS) поле.

Поетеринг каза това метаданни трябва да бъдат рационализирани и съхранявани в смислени групи в JSON записа на всеки човек в домашната му директория.

Управление на вашия нов $HOME

Услугата systemd-homed се контролира чрез новия homectl инструмент от командния ред.

Има опции за създаване на потребители и домашни директории и задаване на ограничения за съхранение за всеки потребител. Можете също да зададете паролата, да заключите някого от акаунта му или да изтриете напълно акаунт. Потребителите могат да бъдат инспектирани и техните JSON потребителски записи също могат да бъдат прочетени.

За всеки потребител също могат да бъдат зададени часови зони и друга информация, базирана на местоположението. Можете да посочите обвивката по подразбиране и дори да зададете променливи на средата, така че да са в определено състояние, когато някой влезе.

Ако погледнете в директорията “/home”, ще видите управлявани записи от systemd-homed, които изглеждат по следния начин, с добавен “.homedir” към потребителското име:

/home/dave.homedir

Не забравяйте, че това е само точка на монтиране. Местоположението на действителната криптирана домашна директория е другаде.

  Как да играете Nintendo DS игри на Linux с DesmuME

Ограничения и проблеми

systemd-homed е само за използване в потребителските акаунти на хора. Той не може да обработва потребителски акаунти с UID по-малък от 1000. С други думи, root, daemon, bin и т.н. не могат да се администрират с помощта на новата схема. Винаги ще има нужда от стандартните начини за администриране на потребителите. Следователно systemd-homed не е глобално решение.

Има известен улов-22 това трябва да бъде решено. Както споменахме по-рано, домашната директория на дадено лице се дешифрира всеки път, когато той или тя влезе. Но ако някой има отдалечен достъп до компютъра през SSH, SSH ключовете в домашната директория не могат да бъдат препратени, защото домашната директория все още е криптирана до това човек влиза в системата. Разбира се, човек се нуждае от SSH ключовете, за да се удостовери, преди да може да влезе.

Това беше признат проблем от екипа на systemd-homed, но не можахме да намерим никаква справка за корекция за това. Сигурни сме, че ще намерят решение; би било грандиозно измама, ако не го направят.

Да кажем, че някой пренася началната си директория на нова машина. Ако UID вече се използва на новата машина от някой друг, той автоматично ще получи нов UID. Разбира се, всичките му файлове ще трябва да бъдат преотстъпени към новия UID.

В момента това се обработва чрез рекурсивно, автоматично приложение на командата chown -R. Това вероятно ще бъде третирано по различен начин в бъдеще, когато бъде разработена по-елегантна схема. Този тежък подход не взема предвид демоните и процесите, които се изпълняват като други потребители.

Кога се случва това?

Това се случва сега. Промените в кода бяха подадена на 20 януари 2020 г, и те бяха включени в билд 245 на systemd, който се доставя с Ubuntu 20.04 през април 2020 г.

За да проверите коя версия имате, въведете следното:

systemd --version

Въпреки това командата homectl все още не е налице. Ubuntu 20.04 използва традиционна /home директория и не използва systemd-homed.

Разбира се, зависи от отделните дистрибуции да решат кога ще включват и поддържат systemd-homed и homectl.

Така че няма нужда някой да влиза в режим на пълни вили и горящи факли. Тъй като стандартните методи за управление на потребители и домашни директории ще останат, всички ние все още ще имаме избор.