useradd -p 在 12.04 LTS 中损坏了吗?

useradd -p 在 12.04 LTS 中损坏了吗?

我有一个需要设置的邮件基准测试应用程序,其中包括设置至少几百个虚拟用户帐户。

我已经编写了这个脚本,以便可以轻松地重新创建邮件存储,如下所示:

#!/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 在下面所说的那样。虽然我已经解决了我的问题,但如果有人希望回答原始问题,我会很乐意接受。

相关内容