Systemd и зашифрованный корень в Debian

Эта цитата о том, как (логически — фактические структуры в наши дни часто сильно отличаются) работают файловые системы Unix. И вы можете увидеть номера инодов, например, с помощью флага -i на ls:

$ ls -li
total 8
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw-r--r-- 1 anthony anthony  70 Apr 25 12:07 b

Номер слева — это инод. И если я запускаю ln b c (создавая жесткую ссылку), то:

$ ls -li
total 12
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw-r--r-- 2 anthony anthony  70 Apr 25 12:07 b
532540 -rw-r--r-- 2 anthony anthony  70 Apr 25 12:07 c

Разрешения и размер являются частью inode, а не каталога. Достаточно легко увидеть, что происходит после chmod 0600 c:

$ ls -li
total 12
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw------- 2 anthony anthony  70 Apr 25 12:07 b
532540 -rw------- 2 anthony anthony  70 Apr 25 12:07 c

оба b и c изменились, потому что они имеют один и тот же индексный дескриптор.

Однако ядро ​​предоставляет доступ к файловой системе пользовательскому пространству только через четко определенный API (за исключением необработанных устройств, таких как /dev/sda1). Он предоставляет пользовательскому пространству доступ к набору системных вызовов для выполнения таких действий, как создание и удаление ссылок, изменение разрешений, чтение и запись файлов, переименование и т. д. Он не предоставляет необработанные базовые структуры данных файловой системы пользовательскому пространству. Это по ряду веских причин: это позволяет сетевые файловые системы, это означает, что ядро ​​​​может применять разрешения и поддерживать правильные структуры данных файловой системы, это означает, что вы можете использовать разные файловые системы (с разными структурами данных) без необходимости изменять пользовательское пространство.

Таким образом, по сути, vim dir просто показывает вам список каталогов — примерно так же, как это делает ls. Это делается с помощью модуля vim под названием Netrw, как сказано выше (попробуйте :help netrw в vim). На самом деле вы не можете редактировать базовые структуры данных файловой системы.

1
03.11.2017, 09:35
1 ответ

Решение найдено.

Команда

/lib/systemd/system-generators/systemd-cryptsetup-generator

Преобразуйте /etc/crypttab в сервисе systemd.

Но он добавляет те плохие строки, которые вызывают ошибку

After=dev-disk-by\x2duuid-88D9\x2dA79B        
Requires=dev-disk-by\x2duuid-88D9\x2dA79B     

Итак, решение после загрузки

/lib/systemd/system-generators/systemd-cryptsetup-generator

Это создает службу в /tmp

/tmp/systemd-cryptsetup@luksmd0.service

В моем случае в luksmd0, в вашем случае может измениться. Отредактируйте файл, удалите две строки Затем скопируйте его в /etc/systemd/system И перезагрузиться. При перезагрузке команда

systemctl status systemd-cryptsetup@luksmd0.service

должен вернуться в активное состояние.

0
28.01.2020, 00:46

Теги

Похожие вопросы