У мене є скрипт python, який повинен бути запущений як root (для доступу до framebuffer на малині pi з a невеликий сенсорний екран ). Цей скрипт також повинен шукати ключі на сервері ключів. Для цього я використовую цю функцію 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 іншого користувача ( pi
замість root
).
Редагувати: зміна власника /home/pi/.gnupg
корінь виправити, але це схоже на жахливе "рішення". І це також змушує мене використовувати sudo gpg ...
замість gpg ...
коли я хочу використовувати gpg з командного рядка. Тому я все ще цікавлюся більш якісними рішеннями!