어느 시점에서 내 응용 프로그램은 / etc에 파일을 만들거나 루트 권한으로 명령을 실행하는 등의 관리 작업을 수행해야합니다.
Q & D를 할 수 있다는 것을 알고 있습니다.
os.popen("pkexec foo bar")
그러나 나는 이것이 예상되는 깨끗한 방법이 아니라는 것을 알고 있습니다. 사용자는 세션과 같은 처리 대신 항상 비밀번호를 다시 입력해야하기 때문에 사용자에게 성가신 일입니다.
인증을위한 python 예제를 찾음에 따라 매우 낙관적이었습니다 .
즉시 작동하는 간단한 예입니다.
import dbus
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 id
result = authority.CheckAuthorization(subject, action_id, details, flags, cancellation_id)
print result
나는 권한 부여 후 스크립트에서 일부 os.popen () 명령으로 계속 진행할 수 있다고 생각했습니다. 이제 나는 더 잘 알고있다 :(
위의 예제에서 튜플 결과를 볼 수 있지만 추가 문서 에서이 시점에서 진행할 작업 코드를 찾을 수 없습니다.
이 결과와 어떤 관계가 있습니까? 필요한 작업을 계속 수행하려면 어떻게해야합니까? 사용 가능한 방법을 제공하는 예제와 함께 파이썬 참조가 있습니까?
dir ()을 사용하여 권한 부여 방법을 나열하려고했지만 진행 방법을 찾을 수 없었습니다.
나는 내 폴백을 사용하지 않기를 원하지만 그것이 나의 마지막 수단이 될 것입니다. 올바른 방법으로 도와주세요 :)
감사와 안부
안드레
편집하다:
이 작업을 수행하지 않았고 gksu로 프로그램을 시작하여 이전 솔루션이 / opt /에서 작동하지 않기 때문에 마침내 프로그램의 기초 작업을 수행하기 위해 수천 번의 암호 요청을 포기하고 구현해야했습니다. 앱 대결에서 티셔츠.
처음에 빠르게 공유했기 때문에 문제를 알지 못했습니다. 모든 것이 제대로 작동했습니다. 처음에 비밀번호를 한 번 묻습니다. 나는 지금 완전히 아래로입니다. AppShowdown에 대한 나의 기여는 https://launchpad.net/armorforge 입니다. ;-(