인증을 위해 대화 상자를 어떻게 호출합니까?


13

파이썬에서 wx 모듈을 사용하여 GUI 프로그램을 작성 중입니다. 프로그램에서 루트 권한이 필요한 폴더에 액세스 할 때마다 터미널에서 암호를 묻지 만 암호를 입력하고 인증하기 위해 사용자에게 대화 상자를 표시하고 싶습니다. 대화 상자를 호출하고 우분투에서 사용자를 인증하는 방법은 무엇입니까?


"터미널에 암호를 요청"한다는 말은 파이썬에서 sudo 터미널 명령을 호출한다는 의미입니까?
— TLE

나는 당신이 아닌 PolicyKit을 사용해야 할 것이라고 생각 sudo하지만, 파이썬이나 PolicyKit에 대한 지식이 부족하여 방법을 설명하는 좋은 대답을 쓸 수는 없습니다. 아마도 다른 사람이 할 수 있습니다.
— Eliah Kagan

이것을 어떻게 사용 하시겠습니까? 그냥 명령을 실행
— 데이지

답변:


9

stackoverflow에는 두 가지 서로 다른 Q & A가 있습니다 . 여기 및 여기 .

두 답변 모두 명령을 사용합니다 gksudo(@khamer에서 이미 언급 함). gksudo command(파이썬없이) 실행 하면 기본적으로 작동 sudo하지만 그래픽 인터페이스를 사용합니다. 즉, 사용자에게 비밀번호를 요청한 다음 사용자가 sudoers 파일에 있으면 루트로 명령을 실행하십시오.

파이썬으로 링크 된 답변에서 제안 된 솔루션을 구현하려면 다음 예제와 같이 무언가를 사용할 수 있습니다.

파일을 작성하십시오 run.py.

#!/usr/bin/python

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

그리고 파일 create.py:

#!/usr/bin/python

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

그런 다음 python run.py비밀번호를 입력하면 루트가 소유 한 파일이 생성됩니다. 당신이 python create.py그것을 실행하면 당신 이 소유 할 것입니다 (스크립트를 실행하기 전에 파일이 존재하지 않아야합니다).


3

더 멋진 파이썬 솔루션이 있다고 확신하지만 다운 버전과 더러운 버전은 gksudo를 사용하는 것입니다. gksudo는 명령 행에서 묻는 대신 언급 한 인증 대화 상자를 작성하는 것을 제외하고 sudo와 동일한 작업을 수행합니다.

https://help.ubuntu.com/community/RootSudo#Graphical_sudo를 참조 하십시오.


이것은 파이썬에서 우분투 프로그래밍에 관한 질문이므로 파이썬 프로그램에서 gksu/ 사용법을 보여주는 코드 예제를 줄 수 gksudo있습니까?
— Eliah Kagan

@EliahKagan 나는 당신의 요구를 희망적으로 충족시키는 예를 들어 답을 썼습니다! :)
— lumbric

0

이 스크립트를 코드에 삽입하십시오.

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))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.