我想在使用useradd
CLI 中的命令时为新用户创建加密的登录密码。我知道使用选项-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