Kimlik doğrulama için bir iletişim kutusunu nasıl arayabilirim?


13

Python wx modülü kullanarak bir gui programı yazıyorum. Programda kök ayrıcalığı gerektiren bir klasöre eriştiğimde terminalde şifre soruyor ama şifreyi girmek ve kimliğini doğrulamak için kullanıcıya diyalog görüntülemek istiyorum. Bu iletişim kutusunu nasıl arayabilir ve ubuntu'da kullanıcının kimliğini nasıl doğrulayabilirim?


"Terminalde şifre soruyor" yazıyorsunuz, bu python'dan sudo terminal komutları çağırdığınız anlamına mı geliyor?
TLE

Sanırım politika yerine PolitKit kullanmalısın sudo, ama Python ya da PolicyKit hakkında yeterli bilgiye sahip değilim. Belki başka biri yapabilir.
Eliah Kagan

Bunu nasıl kullanacaksın? sadece bir komut yürütüyor
papatya

Yanıtlar:


9

Stackoverflow'da sorunuzu cevaplayan iki farklı Soru ve Cevap vardır: burada ve burada .

Her iki yanıt da komutu kullanır gksudo(@khamer tarafından daha önce belirtilmiştir). gksudo command(Python olmadan da) çalıştırırsanız , temel olarak ne sudoyapar, ancak grafik arabirimi ile - yani kullanıcıdan bir parola isteyin ve kullanıcı sudoers dosyasındaysa komutu root olarak çalıştırın.

Python'daki bağlantılı cevaplardan önerilen çözümü uygulamak için, aşağıdaki örnekte gösterildiği gibi bir şey kullanabilirsiniz:

Bir dosya oluşturun run.py:

#!/usr/bin/python

import subprocess
subprocess.call(['gksudo','python create.py'])

Ve bir dosya create.py:

#!/usr/bin/python

# Create test file..
f = file("mytestfile", "w")

Ardından çalıştırın python run.pyve şifrenizi girdikten sonra root'a ait bir dosya oluşturulacaktır. Çalıştırırsanız python create.py, dosya size aittir (komut dosyasını çalıştırmadan önce dosya mevcut olmamalıdır).


3

Daha meraklı bir python çözümü olduğundan emin olmakla birlikte, aşağı ve kirli sürüm gksudo kullanmaktır. gksudo, sudo ile aynı şeyi yapar, ancak komut satırında sormak yerine bahsettiğiniz kimlik doğrulama iletişim kutusunu oluşturur.

Bkz. Https://help.ubuntu.com/community/RootSudo#Graphical_sudo


Bu Python Ubuntu için programlama hakkında bir soru olduğundan , bir Python programında gksu/ nasıl kullanılacağını gösteren bir kod örneği verebilir misiniz gksudo?
Eliah Kagan

@EliahKagan Umarım taleplerinizi karşılayan bir örnekle bir cevap yazdım! :)
lumbric

0

Bu komut dosyasını kodunuza ekleyin:

import os

Password = raw_input('Please enter your root password!')

sudo_command = '<your command>'

execute = os.system('echo %s|sudo -S %s' % (Password, sudo_command))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.