python-gnupg search keys () возвращает другой результат при запуске от имени root

у меня есть скрипт на Python, который должен быть запущен как root (получить доступ к фреймбуферу на Raspberry Pi с а небольшой сенсорный экран). Этот сценарий также должен искать ключи на сервере ключей. Для этого я использую функцию search_keys() С в Python-GnuPG в.

следующий скрипт отлично работает, когда я выполняю его с python gpg_test.py:

import gnupg

gpg= gnupg.GPG(gnupghome="/home/pi/.gnupg")
keyserver= "pool.sks-keyservers.net"
search_string= "testuser@example.com"
print gpg.search_keys(search_string, keyserver)

выводит список, содержащий несколько ключей.

однако, если я запускаю тот же скрипт с sudo python gpg_test.py, Я просто получаю пустой список.
Кто-нибудь знает причину такого поведения? И, может быть, решение, чтобы заставить его работать при запуске от имени root?


Edit: я посмотрел на исходный код python-gnupg и обнаружил, что результат search_keys() включает вывод stderr базового вызова pgp. Присвоение результата search_keys() переменной result, а вызов print result.stderr печатает следующее:

gpg: WARNING: unsafe ownership on homedir `/home/pi/.gnupg'
gpg: external program calls are disabled due to unsafe options file permissions
gpg: keyserver communications error: general error
gpg: keyserver search failed: general error

так мне кажется, проблема в том, что я пытаюсь получить доступ к PGP homedir другого пользователя (pi вместо root).


Edit: изменение владельца /home/pi/.gnupg to root исправил это, но это похоже на ужасное "решение". И это тоже заставляет меня использовать sudo gpg ... вместо gpg ... когда я хочу использовать GPG из командной строки. Так что мне все еще любопытны лучшие решения!

11
задан Dave
27.12.2022 7:26 Количество просмотров материала 2616
Распечатать страницу

1 ответ

я отвечаю на свой вопрос здесь, на всякий случай, если у кого-то еще есть подобная проблема.

моим решением было инициализировать python-gnupg с помощью нового homedir. Этот новый homedir теперь принадлежит пользователю root потому что скрипт запускается от имени root.

этак, все делает скрипт независим от Гоб установки я открыть, когда typoing gpg [command] в терминале. И больше нет ошибок при поиске серверов ключей.

Так меняется выше код Python, чтобы это работает:

import gnupg

gpg= gnupg.GPG(gnupghome="/home/pi/gnupg_myscript")
keyserver= "pool.sks-keyservers.net"
search_string= "testuser@example.com"
print gpg.search_keys(search_string, keyserver)
0
отвечен Dave 2022-12-28 15:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх