如何为 Linux 中的用户分配初始/默认密码?

如何为 Linux 中的用户分配初始/默认密码?

我找到了一个指南,解释了如何设置用户密码。我正在尝试使其自动化并向用户发送电子邮件,例如:

userid created with password XYZ.
request to change the initial password.

根据上面的文档,需要使用 Python 创建加密密码并将其提供给usermod如下命令:

 usermod -p "<encrypted-password>" <username>

还有其他更简单的方法可以做到这一点吗?我不想下载任何特殊的实用程序来执行此操作;应该尽可能地概括。


编辑:即使上面链接中给出的方法似乎也不适合我:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

答案1

您可以使用chpasswd它来执行此操作,如下所示:

echo "username:newpassword" | chpasswd

chpasswd如果方便的话,您可以从 以外的程序通过管道进入echo,但这可以解决问题。

编辑:要在 shell 脚本中生成密码然后设置它,您可以执行以下操作:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

有关 的更多信息chpasswd,请参阅http://linux.die.net/man/8/chpasswd

(生成密码的命令来自http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html

答案2

您可以使用 OpenSSL 生成随机密码(在本例中为 16 个字符):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

然后将散列密码输入useraddusermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

编辑:

自 2012 年发布此内容以来,新版本的 OpenSSL 已向该openssl passwd命令添加了功能。现代版本还支持基于 SHA256 的哈希值和基于 SHA512 的哈希值,而不是使用-1获取基于 MD5 的哈希值的选项。-5-6


信用应有:密码生成改编自类似的方法使用/dev/urandom而不是openssl.

答案3

用户添加应该可以工作(我已经在 Ubuntu 上完成了)。也许检查你的每个参数是否正确(存在这些组,bash的路径是正确的)。您可以仅使用密码和用户运行该命令,然后使用用户删除删除然后使用更多参数重试,看看是什么导致了问题(暴力方法)。

还有新用户(请参阅手册页),至少在 Ubuntu 下,您给它一个包含 passwd 文件之类信息的文件,包括纯文本密码,它将创建这些用户。一次处理许多用户的好方法。

答案4

我按如下方式工作并尝试了以下操作: 创建一个myfile.txt包含 2 行的文本文件(例如 ),每行包含默认密码。

然后运行:

cat myfile.txt | sudo passwd <username>

我试过了,ubuntu下也能用!

相关内容