Способ назначить пароль с помощью 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