Разблокировать демон Gnome Keyring Daemon из командной строки

Синтаксическая ошибка связана с тем, что и &, и &&являются разделителями команд. &запускает команду в фоновом режиме и немедленно запускает следующую, тогда как &&запускает первую команду, ждет ее завершения и запускает вторую команду, если первая выполнена успешно.

Чтобы создать фон для двух вещей, которые вы хотите запустить асинхронно с третьей вещью, используйте этот шаблон:

( first_thing && second_thing ) &
third_thing

Необязательноwait $!после third_thing, чтобы закончить первые два, прежде чем продолжить.

wait 1ожидает завершения PID 1, что вряд ли произойдет во время работы вашей оболочки. Вам понадобится wait %1, который ожидает спецификация задания 1.

1
01.08.2020, 23:48
2 ответа

Это очень жестокий, грязный и, вероятно, очень неправильный способ сделать это, но после того, как я какое-то время пытался разблокировать связку ключей через SSH, я придумал этот небольшой скрипт:

echo 'NOTE: This script will only work if launched via source or.' >&2
echo -n 'Login password: ' >&2
read -s _UNLOCK_PASSWORD || return
killall -q -u "$(whoami)" gnome-keyring-daemon
eval $(echo -n "${_UNLOCK_PASSWORD}" \
           | gnome-keyring-daemon --daemonize --login \
           | sed -e 's/^/export /')
unset _UNLOCK_PASSWORD
echo '' >&2

И да, когда я звоню . ~/bin/unlock-gnome-keyringи ввожу свой пароль для входа, он разблокирует связку ключей для входа, я могу просмотреть ее в seahorse, работая через удаленный X, и использовать ее через приложения libsecret.

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

5
18.03.2021, 23:15

Существует (теперь )аргумент --unlockдля демона gnome -keyring -, который делает именно то, что вы хотите. Обычно, когда он вызывается, он разблокируется, затем демонизируется и повторяет SSH_AUTH_SOCK. Если вы считаете, что демон уже может быть запущен, вы можете добавить аргумент --replace, чтобы обеспечить плавный переход к новому демону.

Я вхожу в безголовую систему Ubuntu 20.0.4LTS через ssh с открытым ключом (без пароля )на регулярной основе, но иногда в целях разработки мне нужно, чтобы набор ключей был доступен. Итак, у меня есть следующая функция, определенная в моем профиле bash, и она отлично работает для разблокировки (, независимо от того, запущен ли существующий демон или нет):

# Linux unlock gnome keyring
function unlock-keyring ()
{
    read -rsp "Password: " pass
    export $(echo -n "$pass" | gnome-keyring-daemon --replace --unlock)
    unset pass
}
3
08.11.2021, 18:37

Теги

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