ตัวเลือกใดที่ฉันควรให้คำสั่ง sudo เพื่อขอรหัสผ่านผ่านอินเทอร์เฟซแบบกราฟิก


11

ปัญหานี้ทำให้ฉันติดขัดอยู่พักหนึ่ง

ทุก ๆ ตอนนี้ฉันต้องเขียนไฟล์สคริปต์ที่ควรเรียกใช้sudoคำสั่ง ฉันไม่จำเป็นต้องรู้ล่วงหน้าว่าฉันจะเปิดใช้งานsudoดังนั้นฉันมั่นใจว่ามีวิธีการเปิดส่วนต่อประสานกราฟิกที่ดี (เช่นที่โผล่ขึ้นมาเมื่อติดตั้งซอฟต์แวร์) แต่เป็นอย่างไร

The man sudosays:

-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_ASKPASStuple แต่ฉันได้พยายามที่จะหาสิ่งที่จะใส่ลงไปในนั้น


1
ในลินุกซ์เหล่านี้จะถูกจัดการโดยปลายด้านหน้าเหมือนหรือgtksudo kdesudoฉันไม่รู้ว่ามีอะไรในด้าน OS-X ของสิ่งต่าง ๆ แต่ฉันคิดว่าคุณกำลังมองหาบางอย่างตามสายเหล่านั้น
คาเลบ

คำตอบ:


17

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

รอนานมากที่จะได้ขอบคุณสำหรับเคล็ดลับที่ยอดเยี่ยมนี้
apouche

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.