sudo -A
(SUDO_ASKPASS) ตัวเลือกที่เห็นได้ชัดทำให้เกิด sudo ที่จะสูญเสียการหมดเวลา (เช่น timestamp_timeout) การตั้งค่า
ฉันต้องการใช้ตัวเลือก sudo -A แต่ฉันต้องการเก็บการหมดเวลาเริ่มต้น (เช่น 15 นาทีบน Ubuntu) ในสคริปต์ทุบตี ฉันต้องการขอรหัสผ่านของผู้ใช้อย่างปลอดภัยและในกล่องโต้ตอบ GUI แต่ฉันต้องการให้สคริปต์ของฉันแสดงเพียงครั้งเดียว (ไม่ใช่ 50+ ครั้ง)
นอกจากนี้ฉันไม่ต้องการเรียกใช้สคริปต์ทั้งหมดของฉันในฐานะผู้ใช้รูทเพราะฉันคิดว่านั่นเป็นความคิดที่ไม่ดี นอกจากนี้ไฟล์ที่สร้างโดยสคริปต์ของฉันมีความเป็นเจ้าของผิดในกรณีนี้
ตัวเลือก sudo -A จะใช้งานได้สำหรับฉันหากยังคงมีการหมดเวลาเริ่มต้น
จากคู่มือ sudo:
ตัวเลือก: ‑A
โดยปกติถ้า sudo ต้องการรหัสผ่านมันจะอ่านจากเทอร์มินัลของผู้ใช้ หากระบุตัวเลือก askA (askpass) โปรแกรมตัวช่วย (อาจเป็นแบบกราฟิก) จะถูกดำเนินการเพื่ออ่านรหัสผ่านของผู้ใช้และส่งรหัสผ่านไปยังเอาต์พุตมาตรฐาน หากตัวแปรสภาพแวดล้อม SUDO_ASKPASS ถูกตั้งค่ามันจะระบุพา ธ ไปยังโปรแกรมตัวช่วย มิฉะนั้นถ้า /etc/sudo.conf มีบรรทัดที่ระบุโปรแกรม askpass ค่านั้นจะถูกนำมาใช้ ตัวอย่างเช่น:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
BTW, kdesudo มีปัญหาเดียวกันนี้ - มันต้องมีรหัสผ่านทุกครั้งที่มีการเรียกใช้แม้ว่าจะเป็นวินาทีต่อมาในสคริปต์เดียวกัน
ฉันใช้ Kubuntu 12.04 64 บิต
นี่คือตัวอย่างการทำงานที่สมบูรณ์ของทุกส่วนของโซลูชัน ประกอบด้วยสคริปต์ทุบตีสคริปต์ "myaskpass" ตามที่แนะนำไว้ที่นี่และไฟล์ ".desktop" สิ่งทั้งหมดควรเป็น 100% GUI (ไม่มีการโต้ตอบกับเทอร์มินัลเลย) ดังนั้นไฟล์ .desktop จึงเป็นสิ่งจำเป็น (afaik)
$ cat myaskpass.sh
#!/bin/bash
kdialog --password "Please enter your password: "
exit 0
$ cat askpasstest1.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=SUDO_ASKPASS tester1
Exec=bash /home/user/test/askpasstest1.sh
GenericName=SUDO_ASKPASS tester1
Name=SUDO_ASKPASS tester1
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=Application;Utility;
X-KDE-SubstituteUID=false
X-KDE-Username=
และบททดสอบด้วยตัวเอง อันนี้จะขอรหัสผ่านของคุณสองครั้งเมื่อใช้โซลูชันนี้
#!/bin/bash
sudo -k
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass1
touch filemadeas_regularuser1
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass2
touch filemadeas_regularuser2
ls -la filemadeas* > /home/user/test/fma.log
kdialog --title "Files Created" --textbox /home/user/test/fma.log 640 480
sudo rm filemadeas_*
rm fma.log
exit 0
kdesudo
ประสบปัญหาเดียวกันฉันอธิบายข้างต้น ฉันกำลังทดสอบsudo -A
ทางเลือกkdesudo
และดีกว่าสำหรับสถานการณ์ของฉัน แต่ไม่ได้แก้ปัญหาการหมดเวลา (อย่างน้อยก็จนถึงตอนนี้)
gksudo
ไม่ได้ตัวเลือกที่นี่? linux.die.net/man/1/gksudo