我找到了一个指南,解释了如何设置用户密码。我正在尝试使其自动化并向用户发送电子邮件,例如:
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')
然后将散列密码输入useradd
或usermod
# 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下也能用!