[apple] 그래픽 인터페이스를 통해 비밀번호를 요청하도록 sudo 명령에 어떤 옵션을 제공해야합니까?

이 문제로 인해 잠시 동안 버그가 발생했습니다.

가끔씩 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

그래서 솔루션이 그 안에 -A있고 SUDO_ASKPASS튜플 에 있다고 확신 하지만 그 안에 넣을 것을 찾을 수있었습니다.



답변

OS X에는이를 수행 할 수있는 완전한 방법이 없지만 가짜로 만드는 몇 가지 방법이 있습니다. 먼저, AppleScript는 그래픽 인증을 기반으로 sudo-ish 작업을 수행 할 수있는 좋은 방법이 있습니다.

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


답변

OS X에는 sudo를위한 그래픽 프론트 엔드가 제공되지 않지만 cocoasudo 또는 macsudo가 도움이 것입니다.


답변