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


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.