วิธีการเปลี่ยนรหัสผ่านโดยใช้ usermod?


10

ฉันเป็น superadmin ของเซิร์ฟเวอร์และต้องการเปลี่ยนรหัสผ่านของผู้ใช้ที่มีอยู่ ฉันจะทำสิ่งนั้นได้อย่างไร

ฉันเหนื่อย

usermod -p 'new-password' john

แต่มันไม่ทำงาน


คำตอบที่ดีที่สุดอยู่ที่นี่: askubuntu.com/a/80447/55435หมายเหตุเพื่อชำระเงินความคิดเห็นเช่นกัน
ryenus

คำตอบ:


17

การusermod -pตั้งค่าสถานะคาดว่าข้อมูลจะเป็นรหัสผ่านอยู่แล้วในรูปแบบเข้ารหัส

ใช้openssl passwdเพื่อสร้างข้อมูลที่เข้ารหัสหรือทำเช่นนี้:

usermod -p `openssl passwd` (USERNAME)

openssl passwdคาดหวังรหัสผ่าน 0 ถึง 10 ตัวอักษร
Onnonymous

6

สาเหตุที่ใช้ไม่ได้เนื่องจากusermodตัวเลือก -p คาดว่ารหัสผ่านจะถูกเข้ารหัสอยู่แล้ว

จากusermodหน้าคนของ:

 -p, --password PASSWORD
       The encrypted password, as returned by crypt(3).

ในการตั้งรหัสผ่านด้วยวิธีนี้ไม่แนะนำ

คุณควรใช้passwd <username>แทน สิ่งนี้ควรusermodทำในฐานะรูท (หากคุณไม่ได้เปลี่ยนรหัสผ่านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน)

เพื่อเปลี่ยนรหัสผ่านสำหรับผู้ใช้ foo

sudo passwd foo

สิ่งนี้จะถามรหัสผ่านใหม่

ดูที่ man-page สำหรับpasswdข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าเช่นเวลาหมดอายุ

โชคดี!


6

คุณสามารถใช้ passwd:

sudo passwd USERNAME 

คุณไม่จำเป็นsudoถ้าคุณเป็น superuser ด้วยตัวคุณเอง


sudoต้องใช้รหัสผ่านราก :)
Achu

@Achu: มันต้องใช้รหัสผ่านผู้ใช้ปัจจุบัน แต่เขาเป็น superuser
RiaD

สิ่งใดsuperuserเป็นตัวแทน?
Achu

3

วิธีการกำหนดรหัสผ่านกับ usermod (ซึ่งเป็นสิ่งที่ OP ขอจริง) คือการใช้crypt()รหัสผ่านที่แฮชสำหรับการ-pโต้แย้ง

SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""

จากนั้นใช้สิ่งนั้นในusermod -pอาร์กิวเมนต์บรรทัดคำสั่งของคุณ:

usermod -p ${HASH} john

2

คำสั่งบรรทัดเดียวแบบไม่โต้ตอบสำหรับการเปลี่ยนรหัสผ่านของผู้ใช้:

sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john

usermod -pต้องใช้รหัสผ่านที่เข้ารหัสเพื่อทำงาน โปรดทราบnew-passwordว่าผู้ใช้ที่สามารถแสดงรายการกระบวนการจะสามารถมองเห็นได้


2

สิ่งที่ควรเพิ่มที่นี่คือต่อไปนี้ วิธีนี้:

sudo usermod -p perl -e "print crypt("new-password","Q4")"john

หมายความว่ารหัสผ่านที่คล้ายกันจำนวนมากจะทำงานทั้งหมด ตัวอย่างเช่นบนเซิร์ฟเวอร์ Oracle Linux 7.4 และเดสก์ท็อป Ubuntu 17.10 ให้พิจารณา:

sudo usermod -p perl -e "print crypt("borkling","Q4")"orabuntu

ตอนนี้ถ้ามี:

su - orabuntu

คุณจะพบว่ารหัสผ่านใด ๆ ที่ขึ้นต้นด้วย "borkling" จะใช้ได้เช่น

borkling88 borklingjars

แม้ว่า "borkline" จะไม่ทำงานซึ่งเป็นเพราะตามที่ระบุไว้ก่อนหน้านี้รหัสผ่านใด ๆ ที่มี "borkling" เนื่องจากคำนำหน้านั้นจะใช้งานได้เมื่อตั้งรหัสผ่านด้วยวิธีนี้

วิธีการในการนี้ที่ afaik ไม่มีผลข้างเคียงที่ไม่พึงประสงค์นี้คือ:

(เครดิตสำหรับสิ่งเหล่านี้ไปที่ "Sandeep" ที่นี่:
/programming/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script )

ใน RedHaty Linuxes: (ละเว้น "-G wheel" หากคุณไม่ต้องการให้ sudo privs ได้รับ)

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G wheel $ {USERNAME}

บน Debiany Linuxes (ละเว้น -G sudo หากคุณไม่ต้องการ sudo privs):

sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G sudo $ {USERNAME}


1

เพียงพิมพ์

passwd

ด้วยวิธีนี้ผู้ใช้ทั่วไปสามารถเปลี่ยนรหัสผ่านของตัวเองโดยไม่มีสิทธิ์รูทหากคุณไม่มี

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