Год спустя я смог вернуться к этому. После целого дня исследований и проб различных вещей я, наконец, смог понять это. Я надеюсь, что этот ответ сэкономит другим дни продуктивности, которые я потерял!
Недостающее звено в цепочке заключалось в том, что сначала необходимо создать связку ключей, прежде чем в нее можно будет сохранять записи. В этом контексте докера нет учетной записи пользователя, входа в систему и т. д. -, поэтому нет набора ключей, который был бы автоматически создан диспетчером рабочего стола, таким как Gnome.
В результате вы должны:
При создании команде требуется пароль из стандартного ввода для инициализации набора ключей. В этом примере докера, поскольку он предназначен только для тестирования и на самом деле не используется реальным пользователем, я использую фиктивный пароль новой строки \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 /]#
Настройки -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
. Последовательность имеет значение.