วิธีทำ 'sudo' รับรหัสผ่านจากไฟล์ได้อย่างไร


13

ฉันต้องการเรียกใช้คำสั่งที่ต้องใช้รหัสผ่าน sudo พูดว่า:

sudo apt-get update

ไม่ควรทำงาน (ฉันได้เก็บรหัสผ่านในไฟล์ข้อความปกติpasswd.txt):

sudo apt-get update <~/passwd.txt

นี่คือตรรกะของฉันสำหรับเหตุผลที่มันควรทำงาน: เมื่อจำเป็นต้องใช้รหัสผ่านผู้ใช้จะต้องป้อนรหัสผ่านจากแป้นพิมพ์ แต่การเปลี่ยนเส้นทางstdinไปอ่านจากpasswd.txtไฟล์ควรใช้งานได้

ไม่ควรหรือ



คุณจะใช้expectสคริปต์ tcl เพื่อทำสิ่งเหล่านี้โดยอัตโนมัติ
Adobe

หากคุณต้องการถามสิ่งนี้คุณอาจทำอะไรผิดพลาด คุณสามารถแบ่งปันสิ่งที่คุณพยายามทำให้สำเร็จได้ตั้งแต่แรกไหม เราไม่ควรใช้แฮ็กแบบนี้ มันเป็นข้อบ่งชี้ว่าควรมีทางออกที่ดีกว่า
gertvdijk

@ gertvdijk ฉันไม่ใช่ผู้เชี่ยวชาญของ Ubuntu แต่ฉันกำลังเรียนรู้อยู่ ฉันให้สิ่งนี้กับตัวเองเป็นแบบฝึกหัด: "เรียกใช้คำสั่งใน Bash Script ที่ต้องการสิทธิ์ sudo โดยใช้ความรู้ที่ฉันมีอยู่ในปัจจุบันโดยไม่ต้องใช้ Google" ฉันมาพร้อมกับคำตอบข้างต้นและฉันคิดว่ามันควรจะทำงาน ฉันพบวิธีที่ดีกว่าปลอดภัยกว่าใน AskUbuntu ในภายหลัง
MichaelB

คำตอบ:


27

sudoไม่อ่านรหัสผ่านจากstdinค่าเริ่มต้น จากsudomanpage:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

ดังนั้นคุณควรวิ่ง:

sudo -S apt-get update <~/passwd.txt

โปรดทราบว่าการจัดเก็บรหัสผ่านในไฟล์ไม่ใช่วิธีปฏิบัติที่ดี คุณควรอ่าน:


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