Как использовать ssh-askpass в systemd и init.d при запуске

Я шифрую каталог /opt/directory с помощью ecryptfs. Я хочу создать сервис с использованием systemd и init.d, который запрашивает у пользователя пароль шифрования и монтирует каталог. Я попытался использовать ssh-askpass в моем скрипте, который вызывается службой systemd, но он не запрашивает пароль при запуске компьютера, и, следовательно, каталог не монтируется.

Ниже приведен мой скрипт для монтирования каталога:

#!/bin/bash
SIG='/root/.ecryptfs/encryption.sig'
ECRYPTFS_WRAPPED_PASSWORD="/root/.ecryptfs/directory-encryption.wrapped"
    # test if authing and test if the mount point is not mounted
    if ! mountpoint -q "/opt/directory"; then
        PASSWORD=$(ssh-askpass)
        # insert the wrapped password and mount the directory, expose_authtok types the password into the
        # ecryptfs-insert-wrapped-passphrase-into-keyring command for us
        SIG=$(head -n 1 "$SIG")
        sudo -s -u "root" /bin/bash -c "printf "%s" "$PASSWORD" | ecryptfs-insert-wrapped-passphrase-into-keyring $ECRYPTFS_WRAPPED_PASSWORD && sudo mount -i -t ecryptfs /opt/directory /opt/directory -o ecryptfs_sig=$SIG,ecryptfs_fnek_sig=$SIG,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs"
    fi

Сценарий работает нормально, когда вызывается напрямую, но при вызове при запуске с использованием systemd он не запрашивает пароль. Ниже приведен мой системный файл:

[Unit]
Description=Directory Encryption Service

[Service]
ExecStart=/root/.ecryptfs/directory-encryption-script
StandardOutput=null

[Install]
WantedBy=multi-user.target
Alias=directory a.encryption.service

0 ответов

Другие вопросы по тегам