グラフィカルインターフェイスを介してパスワードを要求するには、sudoコマンドにどのオプションを指定する必要がありますか?


11

この問題は、しばらく私を悩ませてきました。

時々、sudoコマンドを実行するスクリプトファイルを作成する必要があります。実行することを必ずしも事前に知っているわけではないsudoので、素敵なグラフィカルインターフェイス(ソフトウェアのインストール時にポップアップするインターフェイスなど)を開く方法があると確信しています。

man sudoこう述べています。

-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

だから私は解決策がその中に存在し-ASUDO_ASKPASSタプルをかなり確信していますが、それらに何を入れるべきかを見つけることができました。


1
Linuxではこれらのようなフロントエンドによって処理されるだろうgtksudokdesudo。物事のOS-X側に何があるかはわかりませんが、それらの線に沿って何かを探していると思います。
カレブ

回答:


17

OS Xにはこれを行うための完全にクリーンな方法はありませんが、それを偽造するいくつかの方法があります。最初に、AppleScriptにはグラフィカル認証に基づいてsudo風のことをする良い方法があり、それを使用できます:

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

また、そのメカニズムを使用してsudoタイムスタンプを設定してから、通常のsudo(5分間のタイムアウトウィンドウ内)を使用して次のことを行うこともできます。

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

最後に、AppleScriptを使用してパスワードを要求し、それを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

この素晴らしいヒントに感謝するために長い間待っていた
-apouche

0

OS Xにはsudoのグラフィカルなフロントエンドは付属していませんが、cocoasudoまたはmacsudoが役立つことがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.