Как я настраиваю systemd для активации зашифрованного файла подкачки?

Если бы пользователь root хотел позволить это, то она могла бы настроить PAM, чтобы позволить его или даже позволить его составом группы.
По умолчанию нет это не может быть сделано, и я не собираюсь писать пример PAM.
Это - администраторское решение и любой уверенный администратор (не уверенный, что это - лучшее слово) достаточно для разрешения этого, должен быть испытан достаточно для конфигурирования PAM без справки.

7
13.04.2017, 15:36
2 ответа

Можно хотеть взглянуть на:

  • crypttab (5)
  • systemd-cryptsetup@.service (8)
  • systemd-cryptsetup-generator (8)

Они работают на зашифрованные тома, поддержанные блочными устройствами. Они должны также работать на поддержанные объемы файла.

Обновление:

Это действительно работает на меня:

# Automatically generated by systemd-cryptsetup-generator

[Unit]
Description=Cryptography Setup for %I
Documentation=man:systemd-cryptsetup@.service(8) man:crypttab(5)
SourcePath=/etc/crypttab
Conflicts=umount.target
DefaultDependencies=no
BindsTo=dev-mapper-%i.device
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=umount.target
Before=cryptsetup.target
After=systemd-random-seed-load.service

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'swap2' '/swap.test'     '/dev/urandom' 'swap'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'swap2'
ExecStartPost=/sbin/mkswap '/dev/mapper/swap2'

Шаги для получения этого файла:

  • Создайте запись в/etc/crypttab: swap2 /swap.test /dev/urandom swap
  • Выполните эту команду: /usr/lib/systemd/system-generators/systemd-cryptsetup-generator Это создает файлы единицы в /tmp/ каталог.
  • Ищите сгенерированный файл единицы.
  • Откройте его и удалите запись swap.test.device от After= и BindsTo= директивы. Это важно, поскольку нет по определению никакого устройства для своп-файла. Это предотвращает запуск unitfile.
  • Скопируйте unitfile в /etc/systemd/system/
  • Активируйте его для своей любимой цели.
5
27.01.2020, 20:17
  • 1
    Можно быть правы, но я не понимаю, как применить тех, которые к поддержанному объему файла. В частности, /dev/loopN произведенный losetup -f не обязательно последовательно между начальными загрузками. Тор –  cjm 13.02.2013, 19:14
  • 2
    cryptsetup должен выделить устройство закольцовывания. cryptsetup open /swap.test swap. Я не мог заставить это работать при начальной загрузке (использование только/etc/crypttab). Единица, которая делает все само с ExecStart директивы должны работать. Возможно, это должно, сообщил systemd devs. –  t-8ch 13.02.2013, 19:54
  • 3
    я думаю проблема, мог бы быть то, что она не выполнилась mkswap. Поскольку я использую случайный ключ, файл подкачки должен быть повторно инициализирован каждая начальная загрузка. Но я не уверен, как настроить это. –  cjm 13.02.2013, 21:34

Вот конечный результат, который я придумал на основе ответа t-8ch.

Вставьте это /etc/systemd/system/systemd-cryptsetup@swapfile.service:

# Automatically generated by systemd-cryptsetup-generator
# then manually tweaked

[Unit]
Description=Cryptography Setup for %I
Documentation=man:systemd-cryptsetup@.service(8) man:crypttab(5)
SourcePath=/etc/crypttab
Conflicts=umount.target
DefaultDependencies=no
BindsTo=dev-mapper-%i.device
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=umount.target
Before=cryptsetup.target
After=systemd-random-seed-load.service

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStart=/usr/lib/systemd/systemd-cryptsetup attach 'swapfile' '/root/swapfile.crypt' '/dev/urandom' 'swap,cipher=aes-cbc-essiv:sha256,size=256'
ExecStop=/usr/lib/systemd/systemd-cryptsetup detach 'swapfile'
ExecStartPost=/sbin/mkswap '/dev/mapper/swapfile'

Вставьте это /etc/systemd/system/dev-mapper-swapfile.swap:

[Unit]
Description=Encrypted Swap File
Requires=systemd-cryptsetup@swapfile.service
After=systemd-cryptsetup@swapfile.service
Before=swap.target

[Swap]
What=/dev/mapper/swapfile

[Install]
WantedBy=swap.target

Одноразовая установка (как корень) для создания своп-файла включите его для будущих начальных загрузок и начните использовать его сразу:

fallocate -l 4G /root/swapfile.crypt
chmod 600 /root/swapfile.crypt
systemctl enable dev-mapper-swapfile.swap
systemctl start dev-mapper-swapfile.swap

Размер в fallocate команда определяет, насколько большой Ваш своп-файл будет.

/etc/crypttab запись не необходима; это - просто способ генерировать systemd-cryptsetup@swapfile.service. После того как это сделано, Вам больше не нужен он.

3
27.01.2020, 20:17

Теги

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