у меня есть скрипт на 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 из командной строки. Так что мне все еще любопытны лучшие решения!