Как исключить пути из извлечения при извлечении iso с помощью xorriso

Год спустя я смог вернуться к этому. После целого дня исследований и проб различных вещей я, наконец, смог понять это. Я надеюсь, что этот ответ сэкономит другим дни продуктивности, которые я потерял!

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

В результате вы должны:

  1. Сначала создайте связку ключей вручную, а затем
  2. Запустите демон набора ключей вручную

При создании команде требуется пароль из стандартного ввода для инициализации набора ключей. В этом примере докера, поскольку он предназначен только для тестирования и на самом деле не используется реальным пользователем, я использую фиктивный пароль новой строки \n, который передается как в сценарий --unlock(, который создает связку ключей в первый раз он называется )и сценарий --start, который фактически запускает демон.

Вот окончательный рабочий набор команд. Обратите внимание, что официальная база centosобраз докера не используется -службы systemd должны быть запущены для DBus,поэтому вместо этого мы должны использовать официальное centos/systemdизображение:

docker run --privileged -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name centos-systemd centos/systemd
docker exec -it centos-systemd /bin/bash

# remainder of commands are in the container bash shell:
yum -y install gnome-keyring libsecret dbus-x11

eval "$(dbus-launch --sh-syntax)"

mkdir -p ~/.cache
mkdir -p ~/.local/share/keyrings # where the automatic keyring is created

# 1. Create the keyring manually with a dummy password in stdin
eval "$(printf '\n' | gnome-keyring-daemon --unlock)"

# 2. Start the daemon, using the password to unlock the just-created keyring:
eval "$(printf '\n' | /usr/bin/gnome-keyring-daemon --start)"

Как только это будет сделано, мы сможем хранить и искать пароли:

[root@603a122f7555 /]# secret-tool lookup foo bar
[root@603a122f7555 /]# printf "aPassword" | secret-tool store --label="test" foo bar
[root@603a122f7555 /]# secret-tool lookup foo bar
aPassword
[root@603a122f7555 /]#
0
31.08.2021, 08:19
1 ответ

Настройки -not_leafи -no_pathпредназначены для ситуации вставки деревья в образ ISO.

В случае osirrox вам придется (временно )уменьшить содержимое дерева, которое вы хотите скопировать целиком из ISO. Для этого используйте команды xorriso -rmи -rm_r. Обратите внимание, что оба иметь списки параметров переменной длины, которые должны заканчиваться "--". В конце обычной программы возникнет сопротивление, потому что изменения не были сохранены в ISO. (Пакет выдает FAILURE, диалоговое окно не позволяет вам вне. )Избегайте этого с помощью последней команды -rollback_end.


xorriso -osirrox on \
        -indev ubuntu-21.04-desktop-amd64.iso \
        -rm /casper/filesystem.squashfs -- \
        -extract / extract_dir \
        -rollback_end

Другая проблема может заключаться в разрешении -только на чтение каталога внутри ISO образы Ubuntu. Они затрудняют манипуляции после извлечения. Внутри ISO это можно изменить с помощью команды -find, как в этом прогоне:


xorriso -osirrox on \
        -indev ubuntu-21.04-desktop-amd64.iso \
        -rm /casper/filesystem.squashfs -- \
        -find / -type d -exec chmod u+w -- \
        -extract / extract_dir \
        -rollback_end

Имейте в виду, что все изменения в ISO должны быть сделаны до команды -extract. Последовательность имеет значение.

0
31.08.2021, 17:44

Теги

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