2016-12-16 6 views
7

मैं एक पायथन एप्लिकेशन बना रहा हूं जिसमें रूट विशेषाधिकारों की आवश्यकता है। https://www.freedesktop.org/software/polkit/docs/0.105/polkit-apps.html से, मुझे उदाहरण मिला 2. डी-बस के माध्यम से प्राधिकरण तक पहुंचना जो नीचे दिए गए कोड का पायथन संस्करण है, मैंने इसे निष्पादित किया और मैंने सोचा कि मैं अपना पासवर्ड दर्ज करने के बाद रूट विशेषाधिकार प्राप्त कर पाऊंगा लेकिन मैं हूं अभी भी मेरे ऐप पर "अनुमति अस्वीकार" हो रही है। This समारोह मैं,मैं पाइथन में अपने फ़ंक्शन में डबस और पॉलिसीकिट कैसे कनेक्ट करूं?

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 

उत्तर

0

कनेक्ट करने के लिए अजगर कोड आप उद्धृत में कोशिश कर रहा हूँ है result सफलता या विफलता दर्शाता है? यदि यह विफल हो जाता है, तो आपको सबसे पहले त्रुटि पता लगाना होगा कि bus, proxy, authority और system_bus_name के वापसी मूल्य क्या हैं। यदि यह सफल होता है, तो आपको यह जांचना होगा कि आप result का उपयोग कैसे कर रहे हैं।

+0

अच्छा, मुझे लगता है कि जब तक सही पासवर्ड दर्ज किया जाता है तब तक यह सफल होता है। हालांकि, मैं अभी भी खो गया हूं क्योंकि मुझे नहीं पता कि परिणाम का उपयोग कैसे करें। मैंने दस्तावेज़ों की कोशिश की है लेकिन कुछ ठोस के साथ नहीं आ सकता था। – answerSeeker

+0

यहां [aptdaemon डॉक्स] से एक उदाहरण है (https://pythonhosted.org/aptdaemon/dbus.html#policykit-privileges) –

संबंधित मुद्दे