Saya memiliki kasus penggunaan khusus di mana saya benar-benar ingin dapat mengubah kata sandi pengguna dengan satu perintah tanpa interaktivitas. Ini dilakukan dengan cara yang aman (lebih dari SSH, dan pada sistem dengan hanya satu pengguna yang dapat login), jadi tidak apa-apa untuk mengekspos kata sandi baru (dan bahkan yang lama, jika perlu) pada baris perintah. FWIW, ini adalah sistem Ubuntu.
Saya hanya ingin menghindari harus menambahkan sesuatu seperti-berharap untuk sistem ini hanya untuk tugas yang satu ini.
ubuntu
command-line-interface
freebsd
password
Paul Hoffman
sumber
sumber
echo "newpassword" | pw usermod theusername -h 0
Jawaban:
Anda bisa menggunakan chpasswd .
sumber
Anda dapat menggunakan
usermod
dengan-p
pilihan untuk memberikan hash password (bukan password yang sebenarnya). Anda dapat membuat hash kata sandi menggunakan sesuatu sepertimkpasswd -m sha-256
ataumkpasswd -m md5
sumber
usermod
: '(- Saya akan memperbaiki tag pada pertanyaan.Tentu.
sed
script yang update file password sistem anda (/etc/shadow
,/etc/master.passwd
, apa pun itu terjadi menjadi).sumber
The
passwd
utilitas memiliki opsi --stdin yang menyatakan:Sintaksis:
Meskipun Anda menyebutkan bahwa Anda tidak peduli, Anda bisa memasukkan kata sandi dalam file teks dan kemudian melakukan
cat pass.txt
alih - alih perintah echo, sehingga tidak muncul dalam bash history.sumber
echo VerySecret | passwd --stdin username
--stdin
opsi untukpasswd
.--stdin
baik - terutama karena itu adalah lubang keamanan raksasa besar yang menunggu untuk terjadi :-)echo "newpass" | passwd --stdin user1
garis dengan spasi; dengan cara itu tidak akan menjadi bash history sama sekali.Jika
--stdin
opsi tidak berfungsi, pada dasarnya kami dapat menggunakan dua opsi:chpaswd
dalam skrip Anda.echo "current_password\nnew_password\nnew_password" | passwd user_name
sumber