Tại một số điểm, ứng dụng của tôi cần thực hiện các tác vụ quản trị như tạo một tệp trong / etc hoặc chạy các lệnh với quyền riêng tư gốc.
Tôi biết chỉ có thể làm một câu hỏi và trả lời:
os.popen("pkexec foo bar")
Nhưng tôi cũng biết rằng đây không phải là cách làm sạch đã thấy trước. Một số loại gây khó chịu cho người dùng vì anh ta luôn cần nhập lại mật khẩu thay vì xử lý như phiên.
Tôi đã rất lạc quan khi tôi tìm thấy ví dụ về con trăn để xác thực .
Đó là một ví dụ đơn giản hoạt động ngay lập tức:
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
Tôi đã khá ngây thơ khi nghĩ rằng sau khi được ủy quyền, tôi có thể tiếp tục viết kịch bản với một số lệnh os.popen () -. Bây giờ tôi biết rõ hơn :(
Tôi có thể thấy kết quả tuple trong ví dụ trên, nhưng trong tài liệu tiếp theo tôi không thể tìm thấy mã làm việc để tiếp tục tại thời điểm này.
Tôi phải làm gì với kết quả này? Làm thế nào tôi có thể tiếp tục thực hiện các nhiệm vụ tôi cần? Có một tài liệu tham khảo python với các ví dụ cung cấp các phương thức có sẵn?
Tôi đã cố gắng liệt kê các phương thức ủy quyền bằng cách sử dụng dir () nhưng không thể tìm thấy bất kỳ manh mối nào về cách tiếp tục.
Tôi thực sự muốn tránh sử dụng dự phòng của tôi nhưng nó sẽ là phương sách cuối cùng của tôi. Xin hãy giúp tôi làm điều đó đúng cách :)
Cảm ơn và trân trọng
André
Biên tập:
Do tôi không mang nó đi làm và giải pháp trước đây của tôi bằng cách bắt đầu chương trình của tôi với gksu không hoạt động / opt /, cuối cùng tôi đã phải từ bỏ và thực hiện hàng ngàn yêu cầu mật khẩu để làm cho chương trình hoạt động thô sơ để có được ít nhất một chiếc áo phông trong cuộc thi ứng dụng.
Tôi đã không nhận thấy vấn đề vì lần đầu tiên tôi đã chia sẻ nhanh chóng. Có mọi thứ hoạt động đúng. Hỏi một lần cho mật khẩu lúc đầu. Bây giờ tôi hoàn toàn suy sụp Đóng góp của tôi cho AppShowdown là https://launchpad.net/armorforge . ;-(