useradd -p quebrado em 12.04 LTS?

1

Eu tenho um aplicativo de benchmarking de e-mail que preciso configurar, e parte disso inclui a configuração de pelo menos várias centenas de contas de usuário fictícias.

Eu tinha esse script para poder recriar facilmente o mailstore, assim:

#!/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

Isso pareceu funcionar, mas meu aplicativo se apavorou. Quando fui verificar, nenhuma das minhas contas tinha logins funcionando! Todos eles tinham senhas vazias.

( Nota : O script acima funcionou para uma instalação anterior do 12.04 LTS Server, veja abaixo)

Eu tentei apenas o seguinte:

useradd -p pass -m test

Mas isso falhou de forma semelhante. Executar a senha através de crypt não faz diferença alguma.

O interessante é que o script estava trabalhando em outra instalação do Ubuntu 12.04 Server! Era uma imagem ligeiramente diferente ( ubuntu-12.04-server-cloudimg-amd64-disk1 em oposição ao meu atual ubuntu-12.04.3-server-amd64 ), mas por que uma mudança tão básica na função (ou, parece, para de funcionar completamente!)?

Qualquer ajuda seria muito apreciada, pois não estou ansioso para adicionar manualmente centenas de usuários.

EDIT: Aqui estão alguns resultados de /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

Como você pode ver, eu tento primeiro um su do root para minha conta de usuário normal (já que preciso verificar se as senhas estão funcionando). Tentando su em qualquer uma das contas termina em falha, embora sua senha deve ser definida igual ao seu nome de usuário (ou seja, test1: test1, test2: test2, ...)

Além disso, as contas são atribuídas a 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:~$

A tentativa de executar os comandos eu mesmo produz uma saída no qualquer - o comando aparentemente é concluído com êxito.

Por exemplo: aqui está a saída de 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

Saída de grep post /etc/passwd /etc/shadow :

/etc/passwd:post:x:1013:1013::/home/post:/bin/sh
/etc/shadow:post:t123:15994:0:99999:7:::

Para o registro, a execução da senha em crypt teve o mesmo resultado. Foi assim que eu fiz:

# password = whatever
# pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
$ useradd -p $pass user

EDIT : Eu acabei usando o chpasswd para alterar as senhas depois, mas ainda estou confuso sobre o porquê useradd -p parou de funcionar a partir de uma instalação anterior do 12.04. Eu realmente não encontrei nada de relevante (talvez uma atualização de texto não criptografado para o campo de senha, como gertvdijk disse abaixo. Embora eu tenha resolvido o problema, se alguém quiser fornecer uma resposta para a pergunta original eu ficaria feliz em aceitá-lo.

    
por user991710 16.10.2013 / 08:39

0 respostas