我有一个需要设置的邮件基准测试应用程序,其中包括设置至少几百个虚拟用户帐户。
我已经编写了这个脚本,以便可以轻松地重新创建邮件存储,如下所示:
#!/bin/bash
NEW_USERS="./userlist"
HOME_BASE="/home/"
cat ${NEW_USERS} | \
while read USER PASSWORD
do
useradd -p ${PASSWORD} -m -d ${HOME_BASE}${USER} ${USER}
done
exit 0
这似乎有效,但我的应用程序却出问题了。当我去检查时,没有任何我的账户登录信息都是有效的!所有账户的密码都是空的。
(笔记:上述脚本工作对于以前安装的 12.04 LTS Server,请参见下文)
我尝试了以下方法:
useradd -p pass -m test
但同样失败了。输入密码crypt
没有任何作用。
有趣的是,该脚本正在另一个 Ubuntu 12.04 Server 安装上运行!这是一个略有不同的图像(ubuntu-12.04-server-cloudimg-amd64-disk1
与我当前的图像相反ubuntu-12.04.3-server-amd64
),但为什么如此基本的功能会发生改变(或者,似乎完全停止工作!)?
任何帮助大大非常感谢,因为我不希望手动添加数百名用户。
编辑:这里有一些输出/var/log/auth.log
:
Oct 16 01:47:33 mailserver-vm su[27735]: Successful su for ubuntu by root
Oct 16 01:47:33 mailserver-vm su[27735]: + /dev/pts/0 root:ubuntu
Oct 16 01:47:33 mailserver-vm su[27735]: pam_unix(su:session): session opened for user ubuntu by root(uid=0)
Oct 16 01:47:36 mailserver-vm su[27790]: pam_unix(su:auth): authentication failure; logname=root uid=1000 euid=0 tty=/dev/ pts/0 ruser=ubuntu rhost= user=test1
Oct 16 01:47:38 mailserver-vm su[27790]: pam_authenticate: Authentication failure
Oct 16 01:47:38 mailserver-vm su[27790]: FAILED su for test1 by ubuntu
Oct 16 01:47:38 mailserver-vm su[27790]: - /dev/pts/0 ubuntu:test1
Oct 16 01:47:45 mailserver-vm su[27791]: pam_unix(su:auth): authentication failure; logname=root uid=1000 euid=0 tty=/dev/ pts/0 ruser=ubuntu rhost= user=test2
Oct 16 01:47:47 mailserver-vm su[27791]: pam_authenticate: Authentication failure
Oct 16 01:47:47 mailserver-vm su[27791]: FAILED su for test2 by ubuntu
Oct 16 01:47:47 mailserver-vm su[27791]: - /dev/pts/0 ubuntu:test2
Oct 16 01:47:56 mailserver-vm su[27792]: pam_unix(su:auth): authentication failure; logname=root uid=1000 euid=0 tty=/dev/ pts/0 ruser=ubuntu rhost= user=test50
Oct 16 01:47:59 mailserver-vm su[27792]: pam_authenticate: Authentication failure
Oct 16 01:47:59 mailserver-vm su[27792]: FAILED su for test50 by ubuntu
Oct 16 01:47:59 mailserver-vm su[27792]: - /dev/pts/0 ubuntu:test50
如您所见,我首先尝试从 root 用户 su 到我的普通用户帐户(因为我需要检查他们的密码是否有效)。尝试 su 到任何帐户都以失败告终,尽管他们的密码应该设置为他们的用户名(即 test1:test1、test2:test2,...)
此外,还为这些账户分配了bash:
root@mailserver-vm:~/scripts# su test1
test1@mailserver-vm:/root/scripts$ cd
test1@mailserver-vm:~$ ps -p $$
PID TTY TIME CMD
31484 pts/0 00:00:00 bash
test1@mailserver-vm:~$
尝试自己运行命令不无论输出如何——命令似乎都成功完成。
例如:这是输出useradd -p t123 post
:
root@mailserver-vm:~/scripts# useradd -p t123 post
root@mailserver-vm:~/scripts#
root@mailserver-vm:~/scripts# su ubuntu
ubuntu@mailserver-vm:/root/scripts$ su post
Password: <--- t123 entered
su: Authentication failure
输出grep post /etc/passwd /etc/shadow
:
/etc/passwd:post:x:1013:1013::/home/post:/bin/sh
/etc/shadow:post:t123:15994:0:99999:7:::
顺便说一下,运行密码得到的crypt
结果是一样的。我这样做了:
# password = whatever
# pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
$ useradd -p $pass user
编辑:我最终使用 chpasswd 更改了密码,但我仍然不明白为什么 useradd -p 在之前的 12.04 安装中停止工作。我找不到任何相关内容(也许是更新丢弃了密码字段的明文输入,正如 gertvdijk 在下面所说的那样。虽然我已经解决了我的问题,但如果有人希望回答原始问题,我会很乐意接受。