Como eu chamo uma caixa de diálogo para autenticação?

13

Estou escrevendo um programa de gui usando o módulo wx em python. No programa, sempre que eu estou acessando uma pasta que requer privilégios de root, ele pergunta a senha no terminal, mas eu quero exibir o diálogo para o usuário digitar a senha e autenticá-lo. Como chamar esse diálogo e autenticar o usuário no Ubuntu?

    
por rupali 26.04.2012 / 12:40

3 respostas

8

Existem dois tipos de Perguntas e Respostas diferentes no stackoverflow respondendo à sua pergunta: aqui e aqui .

Ambas as respostas usam o comando gksudo (já mencionado por @khamer). Se você executar gksudo command (também sem python), ele fará basicamente o que sudo faz, mas com uma interface gráfica - ou seja, solicitar uma senha ao usuário e executar o comando como root se o usuário estiver no arquivo sudoers.

Para implementar a solução sugerida das respostas vinculadas em python, você pode usar algo conforme mostrado no exemplo a seguir:

Crie um arquivo run.py :

#!/usr/bin/python

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

E um arquivo create.py :

#!/usr/bin/python

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

Em seguida, execute python run.py e, após digitar sua senha, será criado um arquivo de propriedade do root. Se você executar python create.py , ele será de sua propriedade (o arquivo não deve existir antes de executar o script).

    
por lumbric 29.05.2012 / 18:07
3

Embora eu tenha certeza de que há uma solução Python mais chique, a versão para baixo e suja é usar o gksudo. O gksudo faz a mesma coisa que o sudo faz, exceto que cria o diálogo para autenticação que você mencionou, em vez de perguntar na linha de comando.

Veja o link

    
por khamer 24.05.2012 / 13:52
0

Insira este script no seu código:

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))
    
por upapilot 22.06.2012 / 12:32