/etc/shadowの文字列生成(useraddを使用したスクリプトで使用)

最近のlinuxのパスワード(/etc/shadow)はMD5がデフォルトらしい。

http://www1.bbiq.jp/memo/passwd.html

useraddの"-p"オプションにはパスワード文字列ではなく、/etc/shadowに埋め込む暗号化された文字列を指定しないといけないようだ。
また、その暗号化された文字列はMD5の場合"$1$"からはじまり、saltが8文字、再度"$"で、その後、残り22文字がMD5で生成されたものとなっており、通常のMD5チェックサムとはちょっと違う。
そこで、その文字列を生成するために、opensslコマンドを使用した。

usage() {
  echo "usage: $0 username UID password" >&2
  exit 1
}

if [ $# -ne 3 ]; then
  usage;
fi

CRYPT=`openssl passwd -1 $3`

echo "useradd -c 'ftp user' -d /home/$1 -g users -m -k /home/myskel -p $CRYPT -s /bin/true -u $2 $1"
useradd -c 'ftp user' -d /home/$1 -g users -m -k /home/myskel -p $CRYPT -s /bin/true -u $2 $1
chmod 755 /home/$1