Users
chpasswd 和 openssl
我正在嘗試將 MD5 密碼傳遞給 chpasswd,但它似乎不起作用。
echo username:$(openssl passwd -1 -salt salt password)
然後我嘗試將其傳遞給以
chpasswd
更改密碼echo 'username:$1$salt$aldkjflsfj' | /usr/sbin/chpasswd -e
但是,當我這樣做時,密碼更改似乎沒有生效——
/etc/shadow
已更新,但如果我嘗試使用密碼,它就不起作用。這確實有效:
echo username:password | /usr/sbin/chpasswd
passwd
也有效更多資訊:
$ S=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1) $ echo username:$(openssl passwd -1 -salt "$S" password) username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/ $ echo 'username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/' | chpasswd -e $ grep username /etc/shadow username:$1$nPkvS$eKljAIRsFLXOffXti.ZtO/:16722:0:99999:7:::
必須引用參數,否則 shell 會驗證這些參數中的特殊字元:
echo "username:"$(openssl passwd -1 -salt "$salt" "$password")
在這裡使用雙引號,shell 評估變數。
現在,該
echo
命令也必須被引用:echo 'username:$1$salt$aldkjflsfj' | ...
此處使用單引號,因為 $ 符號是條目的一部分並且必須保留。
警告:我不建議這樣更改密碼。這些命令,以及因此的普通密碼,可以在列表中看到,
ps
例如top
。openssl
對於這種情況有一種機制,可以從文件中讀取密碼。