如何使用 useradd 命令加密新用户的密码?

如何使用 useradd 命令加密新用户的密码?

我想在使用useraddCLI 中的命令时为新用户创建加密的登录密码。我知道使用选项-p将允许我创建密码,但使用此选项不会加密密码。我还知道我可以passwd [username]在通过创建新用户后单独使用命令创建加密密码useradd,但就像我说的那样,我想知道如何通过useradd命令创建加密密码。

答案1

你可以使用 Perl:

perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"

或者使用 Pythoncrypt模块:

python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")"
  • foo:要加密的密码
  • $6:加密类型,本例中为 SHA-512
  • $(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32):加密盐,在本例中是一个随机的 32 个字符串。

和这个结合useradd

useradd [...] -p"$(perl -e "print crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]

或者:

useradd [...] -p"$(python -c "import crypt; print crypt.crypt(\"foo\", \"\$6\$$(</dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32)\$\")")" [...]

答案2

您可以通过创建用户 ID 然后在它上面使用来跳过整个管理员创建密码的用户管理麻烦passwd --expire。来自man passwd

   -e, --expire
       Immediately expire an account's password. This in effect can force
       a user to change his/her password at the user's next login.

答案3

由于 passwd 在 Ubuntu 中不支持 --stdin,您可以尝试以下操作:

perl -e "print crypt('password','sa');"

https://administratosphere.wordpress.com/2011/06/16/generating-passwords-using-crypt3/

答案4

以下内容对我使用 Ubuntu 18.04 LTS 有用:

echo 'your_password' > /tmp/pw.txt
pw="$(makepasswd --crypt-md5 --clearfrom=/tmp/pw.txt)"
sudo useradd -p "${pw}" your_username
rm -f /tmp/pw.txt

这可能首先需要安装makepasswd使用(在 Ubuntu 或 Debian 上;使用 Google 搜索其他发行版):

sudo apt install makepasswd

相关内容