ฉันเป็น superadmin ของเซิร์ฟเวอร์และต้องการเปลี่ยนรหัสผ่านของผู้ใช้ที่มีอยู่ ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันเหนื่อย
usermod -p 'new-password' john
แต่มันไม่ทำงาน
ฉันเป็น superadmin ของเซิร์ฟเวอร์และต้องการเปลี่ยนรหัสผ่านของผู้ใช้ที่มีอยู่ ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันเหนื่อย
usermod -p 'new-password' john
แต่มันไม่ทำงาน
คำตอบ:
การusermod -p
ตั้งค่าสถานะคาดว่าข้อมูลจะเป็นรหัสผ่านอยู่แล้วในรูปแบบเข้ารหัส
ใช้openssl passwd
เพื่อสร้างข้อมูลที่เข้ารหัสหรือทำเช่นนี้:
usermod -p `openssl passwd` (USERNAME)
openssl passwd
คาดหวังรหัสผ่าน 0 ถึง 10 ตัวอักษร
สาเหตุที่ใช้ไม่ได้เนื่องจากusermod
ตัวเลือก -p คาดว่ารหัสผ่านจะถูกเข้ารหัสอยู่แล้ว
จากusermod
หน้าคนของ:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3).
ในการตั้งรหัสผ่านด้วยวิธีนี้ไม่แนะนำ
คุณควรใช้passwd <username>
แทน สิ่งนี้ควรusermod
ทำในฐานะรูท (หากคุณไม่ได้เปลี่ยนรหัสผ่านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน)
เพื่อเปลี่ยนรหัสผ่านสำหรับผู้ใช้ foo
sudo passwd foo
สิ่งนี้จะถามรหัสผ่านใหม่
ดูที่ man-page สำหรับpasswd
ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าเช่นเวลาหมดอายุ
โชคดี!
วิธีการกำหนดรหัสผ่านกับ 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
คำสั่งบรรทัดเดียวแบบไม่โต้ตอบสำหรับการเปลี่ยนรหัสผ่านของผู้ใช้:
sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john
usermod -p
ต้องใช้รหัสผ่านที่เข้ารหัสเพื่อทำงาน โปรดทราบnew-password
ว่าผู้ใช้ที่สามารถแสดงรายการกระบวนการจะสามารถมองเห็นได้
สิ่งที่ควรเพิ่มที่นี่คือต่อไปนี้ วิธีนี้:
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}
เพียงพิมพ์
passwd
ด้วยวิธีนี้ผู้ใช้ทั่วไปสามารถเปลี่ยนรหัสผ่านของตัวเองโดยไม่มีสิทธิ์รูทหากคุณไม่มี