У меня есть сервер Python, который не запущен от имени пользователя root, и работает в приложении, которое я разрабатываю. Однако есть некоторые функции приложения, которые требуют доступа к сокетам RAW, что означает привилегии root.
Очевидно, что я не хочу запускать главный сервер от имени пользователя root, и поэтому мое решение заключается в создании сценария процесса-демона или сценария командной строки, который запускается от имени пользователя root и обеспечивает защищенный доступ к указанным функциям.
Однако я хочу отложить связь stdin / stdout и использовать стиль взаимодействия RPC, такой как Pyro . Но это предоставляет доступ к интерфейсу RPC любому, кто имеет сетевой доступ к машине, тогда как я знаю, что процесс, вызывающий методы RPC, будет другим процессом на той же машине.
Не существует ли своего рода межпроцессного вызова процедуры standard , который можно было бы использовать аналогичным образом (только для локальной машины)? Я представляю, что сервер делает что-то вроде этого:
# Server not running as root
pythonically, returned, values = other_process_running_as_root.some_method()
И процесс, выполняющийся от имени пользователя root, предоставляет метод:
# Daemon running as root
@expose_this_method
def some_method():
# Play with RAW sockets
return pythonically, returned, values
Возможно ли что-нибудь подобное?