Поиск по сайту:

Systemd изменит работу вашего домашнего каталога Linux


Команда systemd хочет, чтобы вы использовали новый способ управления домашними каталогами. Называть это «новым способом» — это несерьезно — это настоящий сдвиг парадигмы для Linux. Вот все, что вам нужно знать о systemd-homed, который, скорее всего, появится в ближайшем к вам дистрибутиве Linux.

Не новичок в полемике

Когда в 2010 году был представлен systemd, сообщество Linux разделилось на три лагеря. Некоторые думали, что это улучшение, а другие считали, что это ошибочный дизайн, не соответствующий философии Unix. А кому-то было все равно, так или иначе.

Реакция противников была громкой, горячей, а в некоторых случаях почти фанатичной. Леннарту Поттерингу, инженеру-программисту Red Hat и соразработчику systemd, даже угрожали смертью.

На YouTube были размещены песни, призывающие к насилию в отношении Поэттеринга, и появились веб-сайты, пытающиеся принудить пользователей Linux бойкотировать systemd. Его соавтор, Кей Сиверс, также подверглась критике и оскорблениям, но Поттеринг, безусловно, выдержал основной удар.

Тем не менее, в течение восьми месяцев Fedora использовала systemd. К концу 2013 года Arch, Debian, Manjaro и Ubuntu перешли на systemd. Конечно, слава открытого исходного кода в том, что если вам что-то не нравится, вы можете разветвить исходный код и делать с ним свои собственные дела. Новые дистрибутивы, такие как Devuan, который был ответвлением Debian, были созданы исключительно для того, чтобы избежать использования systemd.

Ваш каталог $HOME

В структуре каталогов Linux все, что вы делаете, находится в каталоге «/home». Ваши файлы данных, изображения, музыка и все дерево личных каталогов хранятся в одном каталоге, названном в честь вашей учетной записи пользователя.

Настройки для ваших приложений хранятся в вашей домашней папке в скрытых «точечных каталогах». Если первым символом имени файла или каталога является точка (.), он скрыт. Поскольку эти настройки хранятся локально, а не в центральном реестре, а резервная копия вашего домашнего каталога включает эти скрытые файлы и папки, все ваши настройки также сохраняются.

Когда вы восстанавливаете резервную копию и запускаете приложение, например LibreOffice или Thunderbird, оно ищет свой скрытый каталог. Он также находит ваши настройки документа, настройки панели инструментов и любые другие настройки. Thunderbird находит информацию о вашей учетной записи электронной почты и вашу электронную почту. Вам не нужно мучиться с медленной настройкой каждого приложения.

Вы можете использовать ls с опцией -a (все), чтобы увидеть скрытые файлы и каталоги. Сначала введите следующее:

ls

Это показывает вам обычные файлы и каталоги. Затем введите следующее:

ls -a

Теперь вы можете увидеть скрытые файлы и каталоги.

Поскольку это самая ценная часть установки, обычно каталог «/home» монтируется в отдельный раздел или на отдельный жесткий диск. Таким образом, если с операционной системой или разделом, в котором она находится, случится что-то катастрофическое, вы сможете либо переустановить свой дистрибутив Linux, либо переключиться на новый. Затем вы можете просто перемонтировать существующий домашний раздел в «/home».

Данные о вас

Ваш домашний каталог не просто хранит ваши данные; он также хранит информацию о вас. включая некоторые атрибуты вашей цифровой личности. Например, в вашем каталоге «.ssh» хранится информация об удаленных подключениях, которые вы установили к другим компьютерам, и любые сгенерированные вами SSH-ключи.

Другие системные атрибуты, такие как имя пользователя вашей учетной записи, пароль и уникальный идентификатор пользователя, хранятся в другом месте в таких файлах, как «/etc/passwd» и «/etc/shadow». Некоторые из них может прочитать любой, но другие могут прочитать только люди с привилегиями суперпользователя.

Вот как выглядит содержимое файла «/etc/passwd»:

cat /etc/passwd

Изменения в systemd

Целью изменений systemd-homed является предоставление полностью переносимого домашнего каталога, в котором хранятся как ваши данные, так и цифровая идентификация Linux. Ваш UID и все другие механизмы идентификации и аутентификации будут храниться только в вашем домашнем каталоге.

Из-за их дизайна «все яйца в одной корзине» домашние каталоги зашифрованы. Они автоматически расшифровываются при каждом входе в систему и снова шифруются при выходе из системы. Предпочтительным методом является использование шифрования диска Linux Unified Key Setup (LUKS). Однако доступны и другие схемы, такие как fscrypt.

Пользовательская запись JavaScript Object Notation (JSON) хранит всю вашу идентификационную информацию в каталоге с именем «~/.identity». Он криптографически подписан ключом, который находится вне вашего контроля.

Домашний каталог каждого человека монтируется на петлевом устройстве аналогично тому, как монтируется приложение snap. Таким образом, дерево каталогов в домашнем каталоге выглядит как неразрывная часть дерева каталогов операционной системы. Точка подключения по умолчанию — «/home/$USER.homedir» («$USER» заменяется именем учетной записи пользователя).

Каковы преимущества?

Поскольку ваш домашний каталог становится надежной инкапсуляцией всех ваших данных, вы даже можете иметь свой домашний каталог на съемном устройстве. Например, вы можете использовать USB-накопитель, чтобы перемещать его между рабочим и домашним компьютерами или любым другим компьютером systemd-homed.

Это то, что Поттеринг имел в виду под «полностью переносимым домашним каталогом». Он сказал, что даже если вы не хотите перемещать свой домашний каталог на переносном устройстве, это упростит обновление и миграцию и повысит безопасность.

Он удаляет то, что он называет «дополнительными базами данных», которые содержат фрагменты важной информации о вас, которая, по мнению Поттеринга, должна быть централизована. Файлы «/etc/passwd» и «/etc/shadow» содержат информацию для аутентификации и хешированные пароли. Однако они также содержат такую информацию, как ваша оболочка по умолчанию, поле General Electric Comprehensive Operating Supervisor (GECOS).

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

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

Служба systemd-homed управляется с помощью нового инструмента командной строки homectl.

Существуют варианты создания пользователей и домашних каталогов, а также установки лимитов хранения для каждого пользователя. Вы также можете установить пароль, заблокировать кого-либо из его учетной записи или полностью удалить учетную запись. Пользователи могут быть проверены, а их пользовательские записи JSON также могут быть прочитаны.

Часовые пояса и другая информация о местоположении также могут быть установлены для каждого пользователя. Вы можете указать оболочку по умолчанию и даже установить переменные среды, чтобы они находились в определенном состоянии всякий раз, когда кто-то входит в систему.

Если вы посмотрите в каталог «/home», вы увидите управляемые записи systemd-homed, которые выглядят следующим образом, с добавлением «.homedir» к имени пользователя:

/home/dave.homedir

Помните, что это всего лишь точка монтирования. Местоположение фактического зашифрованного домашнего каталога находится в другом месте.

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

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.

Таким образом, никому не нужно входить в полноценный режим вил и горящих факелов. Поскольку стандартные методы управления пользователями и домашними каталогами останутся, у всех нас останется выбор.