เปลี่ยนรหัสผ่านโดยทางโปรแกรม


12

ใน Raspian รุ่นปัจจุบันฉันรู้ว่ามันเป็นไปได้ที่จะเปลี่ยนรหัสผ่านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันจากบรรทัดคำสั่งดังนี้:

sudo passwd

ซึ่งจะแจ้งให้ผู้ใช้ป้อนรหัสผ่านใหม่สองครั้ง สิ่งนี้จะสร้างผลลัพธ์เช่น:

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

ฉันสงสัยว่ามีวิธีที่เป็นไปได้ในการเปลี่ยนรหัสผ่านโดยทางโปรแกรมเช่นจากเชลล์สคริปต์

ฉันพยายามสร้างสคริปต์การกำหนดค่าเพื่อปรับใช้กับ Raspberry Pis ของฉันและฉันไม่ต้องการพิมพ์รหัสผ่านใหม่ด้วยตนเอง


1
sudoเปลี่ยนรหัสผ่านของผู้ใช้ปัจจุบันที่คุณไม่จำเป็นต้องคำนำหน้าด้วย หากคุณใช้sudoคุณสามารถบังคับใช้รหัสผ่านใหม่สำหรับผู้ใช้ใด ๆ โดยไม่จำเป็นต้องรู้รหัสผ่านปัจจุบันของผู้ใช้
roaima

expect(1)สามารถช่วยได้เช่นกัน
SailorCire

โปรดพิจารณาถึงผลกระทบด้านความปลอดภัยเมื่อเปลี่ยนรหัสผ่านโดยทางโปรแกรม
Josh Habdas

คำตอบ:


19

คุณกำลังมองหาchpasswdคำสั่ง คุณต้องการทำสิ่งนี้:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

โปรดทราบว่าจำเป็นต้องเรียกใช้ในฐานะรูทอย่างน้อยด้วยการกำหนดค่า PAM เริ่มต้น แต่สมมุติว่าทำงานในฐานะรูทไม่ใช่ปัญหาสำหรับสคริปต์การปรับใช้ระบบ

นอกจากนี้คุณสามารถทำผู้ใช้หลายคนพร้อมกันได้โดยป้อนข้อมูลหลายบรรทัด


9

อีกทางเลือกหนึ่งคือการใช้yesคำสั่งในสคริปต์ของคุณ

yes newpassword | passwd youruser

นี้จะส่งnewpasswordไปยังคำสั่งสำหรับการpasswdyouruser

ควรกล่าวว่าการตั้งค่า / แก้ไขรหัสผ่านผู้ใช้ผ่านสคริปต์อาจมีความเสี่ยงด้านความปลอดภัยและควรหลีกเลี่ยงเมื่อทำได้

แก้ไข:

คำตอบนี้ต้องการการเข้าถึงรูท ขออภัยที่ไม่ได้กล่าวถึงเรื่องนี้ก่อนหน้านี้ มันเป็นวิธีการที่ฉันใช้เมื่อดำเนินการงานการบริหารที่ต้องการการเข้าถึงรูท


คุณเคยลองสิ่งนี้หรือไม่?
roaima

ใช่. ฉันใช้วิธีนี้มาหลายปีแล้ว ฉันทดสอบก่อนโพสต์คำตอบและอีกครั้งในตอนนี้
Timothy Martin

แม้ว่าจะสมมติว่าpasswdอ่านจากเครื่องstdinมากกว่า (คีย์บอร์ด) วิธีการนี้จะทำงานได้อย่างไรเมื่อpasswdพร้อมท์ให้ใส่รหัสผ่านเก่าของผู้ใช้ก่อนแล้วจึงถามรหัสใหม่?
roaima

@roaima อาจทิโมธีวิ่งมันเป็นราก (ซึ่งจะอธิบายว่าทำไมเขาต้องการyouruserที่สิ้นสุด) มันอาจจะทำงานที่ไหนสักแห่ง ...
derobert

1
@roaima passwdคำสั่งจากโปรแกรมอรรถประโยชน์เงาของ Linux ยอมรับอินพุตที่เปลี่ยนเส้นทาง (ซึ่งแตกต่างจาก OpenSSH ssh) การใช้yesไม่ใช่ความคิดที่ดีแม้ว่ามันจะเปิดเผยรหัสผ่านแก่ผู้สอดแนมที่ดูรายการกระบวนการในเวลาที่ผิด การใช้echoจะไม่มีข้อบกพร่องนี้เพราะมันเป็นตัวเชลล์
Gilles 'หยุดความชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.