Как получить права root для моего приложения? - PullRequest
3 голосов
/ 10 июля 2010

Мое приложение должно выполнять какую-то привилегированную работу. Я искал везде, но не могу найти ничего полезного. Я знаю, что хочу использовать Policykit1 и dbus, потому что все остальные найденные мной альтернативы больше не используются.

Это код, который я получил до сих пор:

import dbus
import os

bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority')
authority = dbus.Interface(proxy, dbus_interface='org.freedesktop.PolicyKit1.Authority')

system_bus_name = bus.get_unique_name()

subject = ('system-bus-name', {'name' : system_bus_name})
action_id = 'org.freedesktop.policykit.exec'
details = {}
flags = 1            # AllowUserInteraction flag
cancellation_id = '' # No cancellation i


result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)

os.makedirs('/usr/local/share/somefolder')

Я не могу создать каталог, что я делаю не так?

1 Ответ

1 голос
/ 10 июля 2010

Безопасность файловой системы останавливает вас, потому что у вашего пользователя нет прав на запись в /usr/local/share/somefolder.Вы можете использовать sudo, чтобы временно увеличить разрешения для создания этого каталога.Но это не останавливается на достигнутом, если вам нужно выполнять больше операций в качестве суперпользователя.

Если вам нужно записать что-либо, находящееся не в пользовательском пространстве, возможно, лучше всего запустить программу от имени пользователя root (под sudo), например, sudo ./myscript.py.

...