Завершить дочерний процесс оболочки, но отправить родительскому код ответа 0

Для GPG 2.1 и более поздних версий закрытые ключи хранятся в ~/.gnupg/private-keys-v1.dКаждый ключ, включая подразделы, хранится в виде отдельных файлов с использованием ключа ключа в качестве имени файла:

.key

При использовании gpg --edit-keyдля изменения парольной фразы все подразделы изменяются в каталоге закрытых ключей.

Однако похоже, что seahorseизменяет только файл закрытого ключа основного ключа.

Похоже, это ошибка в seahorse. Это может быть регрессом по сравнению с более ранними версиями gpg, в которых закрытые ключи хранились в структуре набора ключей точно так же, как и открытые ключи. Это поведение было изменено в версиях 2.1 и более поздних.

Результаты простого теста с тестовым ключом, показывающие, что Seahorse изменяет только закрытый ключевой файл основного ключа.

Тестовый ключ с тремя подразделами

pub   ed25519 2018-12-24 [SC]
      988D29CB7CA9D62252B22DEFB42E56952F9FB61C
      Keygrip = 8226D19110BAC4FB4D60BC25869E5F23C1BB667F
uid           [ultimate] delete me (Delete Me) 
sub   cv25519 2018-12-24 [E]
      Keygrip = 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C
sub   ed25519 2019-03-25 [SA]
      Keygrip = 269995721854253C5F8B48CB40DD24948D580F8C
sub   ed25519 2019-03-25 [SA]
      Keygrip = 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB

Парольная фраза изменена наseahorse

-rw------- 1 user user  333 Mar 25 09:27 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key
-rw------- 1 user user  333 Mar 25 09:08 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user  333 Mar 25 09:08 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user  341 Mar 25 09:08 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key

Парольная фраза изменена наgpg --edit-key

-rw------- 1 user user  333 Mar 25 09:37 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user  333 Mar 25 09:37 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user  341 Mar 25 09:37 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key
-rw------- 1 user user  333 Mar 25 09:37 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key

Проверка исходного кода Seahorse

После просмотра некоторых исходных кодов морского конька кажется вероятным, что поведение совпадает со старыми методами gpg для набора секретных ключей.

Согласно документации gpgme, фразу-пароль следует изменить с помощью вызова функции gpgme gpgme_op_passwd. Однако этот вызов функции не появляется в исходном коде морского конька.

0
26.09.2020, 10:24
1 ответ

Вы не можете сделать это с помощью kill, но если вы можете подключить отладчик, вы можете использовать его для «красивого» выхода из зависшего процесса:

$ python3 bash_sleep.py

В другом терминале...

$ gdb --pid ${the sleep pid}
>>> call exit(0)
>>> quit

Это приведет к завершению целевого процесса с возвратом 0 родительскому процессу. Он также будет вызывать любые обработчики выхода, зарегистрированные в библиотеке C.

3
18.03.2021, 23:02

Теги

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