Làm thế nào để tôi gọi một hộp thoại để xác thực?


13

Tôi đang viết một chương trình gui bằng mô-đun wx trong python. Trong chương trình bất cứ khi nào tôi truy cập vào một thư mục yêu cầu quyền root thì nó sẽ hỏi mật khẩu tại terminal nhưng tôi muốn hiển thị hộp thoại cho người dùng nhập mật khẩu và xác thực anh ta. Làm thế nào để gọi hộp thoại đó và xác thực người dùng trong Ubuntu?


Bạn viết rằng nó "hỏi mật khẩu tại terminal" có nghĩa là bạn đang gọi các lệnh sudo terminal từ python?
TLE

Tôi nghĩ có khả năng bạn nên sử dụng Chính sách thay vì sudo, nhưng tôi không có đủ kiến ​​thức về Python hoặc Chính sách để viết một câu trả lời hay giải thích cách thực hiện. Có lẽ người khác có thể.
Eliah Kagan

Làm thế nào bạn sẽ sử dụng này? chỉ cần thực hiện một lệnh
daisy

Câu trả lời:


9

Có hai câu hỏi và trả lời khác nhau tại stackoverflow trả lời câu hỏi của bạn: ở đâyở đây .

Cả hai câu trả lời đều sử dụng lệnh gksudo(đã được đề cập bởi @khamer). Nếu bạn chạy gksudo command(cũng không có python) thì về cơ bản nó sẽ làm gì sudo, nhưng với giao diện đồ họa - tức là yêu cầu người dùng nhập mật khẩu và sau đó chạy lệnh dưới dạng root nếu người dùng ở trong tệp sudoers.

Để thực hiện giải pháp được đề xuất từ ​​các câu trả lời được liên kết trong python, bạn có thể sử dụng một cái gì đó như trong ví dụ sau:

Tạo một tệp run.py:

#!/usr/bin/python

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

Và một tập tin create.py:

#!/usr/bin/python

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

Sau đó chạy python run.pyvà sau khi bạn nhập mật khẩu, một tập tin thuộc sở hữu của root sẽ được tạo. Nếu bạn chạy, python create.pynó sẽ thuộc quyền sở hữu của bạn (tệp không nên tồn tại trước khi chạy tập lệnh).


3

Mặc dù tôi chắc chắn có một giải pháp python fancier, phiên bản xuống và bẩn là sử dụng gksudo. gksudo làm điều tương tự sudo làm, ngoại trừ nó tạo ra hộp thoại đó để xác thực bạn đã đề cập thay vì hỏi trên dòng lệnh.

Xem https://help.ubfox.com/community/RootSudo#Graphical_sudo


Vì đây là câu hỏi về lập trình cho Ubuntu trong Python, bạn có thể đưa ra một ví dụ mã cho biết cách sử dụng gksu/ gksudotrong chương trình Python không?
Eliah Kagan

@EliahKagan Tôi đã viết một câu trả lời với một ví dụ hy vọng đáp ứng nhu cầu của bạn! :)
thắt lưng

0

Chèn tập lệnh này vào mã của bạn:

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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.