วิธีการตั้งรหัสผ่านผู้ใช้งานโดยใช้ passwd โดยไม่ต้องแจ้ง


21

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

น่าเสียดาย passwd ดูเหมือนจะไม่ได้โต้แย้งที่ระบุรหัสผ่านใหม่เพื่อตั้ง ฉันใช้ Ubuntu 11.10

คำตอบ:


22

ลอง usermod:

usermod --password PASSWORD USERNAME

สิ่งเดียวคือสิ่งนี้ต้องการสตริงรหัสผ่านที่เข้ารหัสล่วงหน้าซึ่งคุณต้องสร้างก่อน


1
... ซึ่งฉันสามารถสร้างโดยใช้ mkpasswd ยอดเยี่ยมขอบคุณ!
Jake Petroules

16
คุณยังสามารถใช้ openssl เพื่อสร้างรหัสผ่านที่เข้ารหัส ตัวอย่างเช่น:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
Eric Smith

1
สามปีสายเกินไป ฉันไม่สามารถทำให้ @EricSmith คำตอบ แต่ฉันไม่พบรุ่นที่เรียบง่ายของคำสั่งที่ได้ทำงาน:usermod --password $(openssl passwd -1 {password}) {username}
BoCoKeith

13

คุณควรดูchpasswdคำสั่ง (หากมีอยู่ในรสชาติ linux ของคุณ):

echo 'userid:newpasswd' | chpasswd

หรือคุณสามารถแสดงรายการรหัสผู้ใช้: รหัสผ่านสำหรับแต่ละบัญชีในบรรทัดแยก

แค่นั้นแหละ.


สิ่งนี้ใช้ได้กับฉันในDockerfile
Vishrant

1

แรงบันดาลใจจากแนวคิดของ Eric Smith การรวมopenssl passwdและการusermod -pควบคุม สร้างค่าแฮชของรหัสผ่านพร้อมกับค่าเกลือ

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

จากนั้นคัดลอกสตริงที่เข้ารหัสไปยัง usermod ตรวจสอบให้แน่ใจว่าได้ห่อด้วยเครื่องหมายคำพูดเดี่ยว

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

ลองใช้ดูในไฟล์เงา

$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::

0

คุณควรใช้อายุผู้ใช้รหัสผ่านและตั้งค่าผู้ใช้เพื่อให้พวกเขาต้องเปลี่ยนรหัสผ่านในการเข้าสู่ระบบครั้งแรก ดูนี้บทความ


สิ่งเหล่านี้มีวัตถุประสงค์เพื่อเป็นบัญชี FTP เท่านั้น แต่เป็นคำแนะนำที่ดี ;)
Jake Petroules

0
(echo user; echo password) | passwd

ใช้ได้ทั้งฉันในโฮสต์กายภาพและคอนเทนเนอร์สำหรับ OS ต่าง ๆ (Ubuntu xenial, bionic, debian9,10, centos75,76, coreos)

echo user:password | chpasswd

ใช้งานได้กับระบบปฏิบัติการบางระบบ แต่ระบบปฏิบัติการบางระบบเช่น debian9,10 จะแสดงข้อผิดพลาดcan not connect to /var/run/nscd/socketเนื่องจากใช้ /etc/nsswitch.conf เพื่อกำหนดว่าจะเก็บรหัสผ่านไว้ที่ไหน

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