Есть ли типичный способ передать пароль в файл Systemd Unit?

Вы ищете encfs : он монтирует каталог в другой каталог, так что файлы хранятся в зашифрованном виде как обычные файлы. Таким образом, вам не нужно создавать блочное устройство.

10
08.09.2017, 00:08
3 ответа

Здесь есть два возможных подхода, в зависимости от ваших требований. Если вы не хотите запрашивать пароль при активации службы, используйте директиву EnvironmentFile. Изman systemd.exec:

Similar to Environment= but reads the environment variables from a text file. The text file should contain new-line-separated variable assignments.

Если вы действительно хотите получать подсказки, вы должны использовать одну из директив systemd-ask-password. Изman systemd-ask-password:

systemd-ask-password may be used to query a system password or passphrase from the user, using a question message specified on the command line. When run from a TTY it will query a password on the TTY and print it to standard output. When run with no TTY or with --no-tty it will use the system-wide query mechanism, which allows active users to respond via several agents

15
27.01.2020, 20:01

Я могу предложить дополнительный вариант, который может удовлетворить ваши потребности, но он требует выполнения нескольких предварительных условий:

Следующие шаги следующие:

Используйте secret-toolиз libsecretдля сохранения пароля. Например:

$ secret-tool store --label=myProgram myService password
Password: <type it here>

Если ваш исполняемый файл поддерживает чтение пароля из переменной окружения, это лучше:

[Service]
ExecStart=/usr/bin/sh -c 'env SECRET=$(secret-tool lookup myService password) /usr/bin/script'

Если ваш исполняемый файл принимает пароль в качестве аргумента, вы все равно можете использовать secret-toolвот так:

[Service]
ExecStart=/usr/bin/sh -c '/usr/bin/script --secret=$(secret-tool lookup myService password)'

Предупреждение:пароль будет хорошо виден, когда вы запустите systemctl --user status myUnit.service, поскольку он показывает, что аргумент запускается в командной строке. Это означает, что это также будет видно пользователям, использующим topили ps -aux.

2
27.01.2020, 20:01

Просто упомянем об этом, systemd 274 поддерживает специальные файлы учетных данных в памяти, см. параметр LoadCredentials=на странице руководства systemd.exec(5 ), который также относится к модулям.service.

4
01.02.2021, 10:59

Теги

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