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:::
答え1
パラメータは引用する必要があります。それ以外の場合は、シェルが確認します。特殊文字次のパラメータのうち:
echo "username:"$(openssl passwd -1 -salt "$salt" "$password")
シェルに変数を評価させるには、ここで二重引用符を使用します。
これでecho
コマンドも引用する必要があります。
echo 'username:$1$salt$aldkjflsfj' | ...
$記号は項目の一部であり、保持する必要があるため、ここでは一重引用符を使用します。
警告する:パスワードをこのように変更することはお勧めできません。これらのコマンドは、プレーンテキストのパスワードと一緒にリストに表示されps
ますtop
。openssl
ファイルからパスワードを読み取るこのような状況のメカニズムがあります。