Tôi nên cung cấp tùy chọn nào cho lệnh sudo để yêu cầu mật khẩu thông qua giao diện đồ họa?


11

Vấn đề này đã làm tôi khó chịu trong một thời gian.

Thỉnh thoảng, tôi cần phải viết một tệp script sẽ thực thi sudocác lệnh. Tôi không nhất thiết phải biết trước rằng tôi sẽ chạy vì sudovậy tôi chắc chắn có một cách để mở một giao diện đồ họa đẹp (chẳng hạn như giao diện bật lên khi cài đặt phần mềm) nhưng làm thế nào?

Các man sudonói:

-A          Normally, if sudo requires a password, it will read it from the current terminal.  If the -A (askpass) option is specified, a (possibly
            graphical) helper program is executed to read the user's password and output the password to the standard output.  If the SUDO_ASKPASS
            environment variable is set, it specifies the path to the helper program.  Otherwise, the value specified by the askpass option in
            sudoers(5) is used

Vì vậy, tôi khá chắc chắn rằng giải pháp nằm trong đó -ASUDO_ASKPASStuple tuy nhiên tôi đã tìm được những gì cần đưa vào đó.


1
Trong Linux, chúng sẽ được xử lý bởi các giao diện người dùng như gtksudohoặc kdesudo. Tôi không biết những gì có ở phía OS-X của mọi thứ, nhưng tôi cho rằng bạn đang tìm kiếm thứ gì đó dọc theo những dòng đó.
Caleb

Câu trả lời:


17

OS X không có cách hoàn toàn sạch để làm điều này, nhưng có một vài cách để giả mạo nó. Đầu tiên, AppleScript có một cách tốt để thực hiện những điều sudo-ish dựa trên xác thực đồ họa và bạn có thể sử dụng:

osascript -e "do shell script \"stufftorunasroot\" with administrator privileges"

Bạn cũng có thể sử dụng cơ chế đó để đặt dấu thời gian sudo và sau đó sử dụng sudo thông thường (trong cửa sổ thời gian chờ 5 phút) để thực hiện:

osascript -e "do shell script \"mkdir -p /var/db/sudo/$USER; touch /var/db/sudo/$USER\" with administrator privileges" && \
    sudo stufftorunasroot

Cuối cùng, bạn có thể sử dụng AppleScript để nhắc nhập mật khẩu, sau đó chuyển nó sang sudo:

pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null)" && /
    echo "$pw" | sudo -S stufftorunasroot

Chờ đợi rất lâu để có được điều đó nhờ lời khuyên tuyệt vời này
apouche

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.