У меня есть приложение для тестирования почты, которое мне нужно настроить, и часть этого включает настройку как минимум нескольких сотен фиктивных учетных записей пользователей.
У меня был этот сценарий, чтобы я мог легко воссоздать почтовое хранилище, например:
#!/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, см. Ниже)
Я пробовал только следующее:
[ 111] Но так же не получилось. Запуск пароля через 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
Как вы можете видеть, я сначала пытаюсь выполнить su с правами root для своей обычной учетной записи пользователя (так как мне нужно проверить, их пароли работают). Попытка 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 ниже. Хотя я исправил свою проблему, если кто-то захочет дать ответ на исходный вопрос, я с радостью приму его.