f293239d5b
It's at least removing the very obvious user->root attack through (maliciously) modifying bin/tar2fs and waiting for it to be run; if mkimage-profiles is installed system-wide as a package, the script from /usr/share/mkimage-profiles will be tried so those willing to allow vm/* build to themselves can provide for a passwordless sudo (as described in doc/vm.txt) to run a root-only writable script, not user-writable. Still not perfect but a step away from the abyss.
37 lines
2.3 KiB
Plaintext
37 lines
2.3 KiB
Plaintext
== Сборка образов VM ==
|
||
|
||
*ВНИМАНИЕ:* заключительная операция создания образа жёсткого диска
|
||
из архива с содержимым корневой файловой системы требует доступа
|
||
к sudo и разрешения на выполнение скрипта bin/tar2fs в корневом
|
||
каталоге метапрофиля при установке mkimage-profiles из пакета
|
||
(это в планах исправить, но подход к libguestfs пока успехом
|
||
не увенчался).
|
||
|
||
Соответствующий фрагмент конфигурации sudo(8) может выглядеть как:
|
||
|
||
mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2fs
|
||
|
||
При работе с локальной копией mkimage-profiles.git следует иметь
|
||
в виду, что предоставлять недоверенному пользователю право выполнять
|
||
от имени root доступный ему по записи скрипт равнозначно предоставлению
|
||
полных привилегий root (поэтому фича build-vm сперва проверяет наличие
|
||
системно установленного пакета и по возможности старается запустить
|
||
под sudo скрипт из него, доступный по записи только root).
|
||
|
||
Для работы с более специфичными форматами, чем raw ("буквальный"
|
||
образ диска), потребуется утилита qemu-img из одноименного пакета;
|
||
см. тж. вывод команды make help/vm
|
||
|
||
Также потребуется пакет multipath-tools (/sbin/kpartx).
|
||
|
||
Пример сборки и запуска VM:
|
||
|
||
$ make ROOTPW=reallysecret1 vm/bare.img && kvm -hda ~/out/bare.img
|
||
|
||
Если при сборке образа файловой системы произойдёт сбой, может оказаться
|
||
нужным вручную освободить используемые loop-устройства, например, так:
|
||
|
||
# losetup -a
|
||
# kpartx -d /dev/loop0
|
||
# losetup -d /dev/loop0
|