chpasswd silenciosamente falha em fazer qualquer coisa; existe um substituto?

4

Após uma série de tentativas de invasão, eu gerava novas senhas aleatórias para todos os usuários no meu servidor LTS Ubuntu 12.04.2 executando o Virtualmin e então, como root, usava o chpasswd para alterar suas senhas. Eu tinha alguns nomes de usuário errados, e o chpasswd detectou isso e relatou corretamente as linhas com os nomes errados, que eu corrigi.

Então comecei a receber feedback dos usuários de que suas senhas não foram alteradas ...

Bem, parece que o chpasswd não parece ter feito nada - mas também não relatou nenhum tipo de erro, seja na linha de comando ou em qualquer log que encontrei.

O passwd muda as senhas - mas infelizmente o Ubuntu não parece aceitar a opção --stdin, então eu teria que fazer todas as mudanças de senha manualmente, uma por vez - para quase uma centena de contas. (E eu posso querer fazer isso de novo em algum momento ...)

O chpasswd está simplesmente quebrado ou há alguma maneira de fazer isso funcionar? Ou existe algum substituto para isso?

E - devo estar relatando uma deficiência de recursos em algum lugar? Não acredito que "falhar silenciosamente" seja um bom resultado. Talvez haja algo no meu sistema (que usa o Virtualmin para gerenciamento de domínio, mas é completamente bajulador) que o impede de funcionar - mas, se for assim, o chpasswd deve ser capaz de detectar isso e pelo menos dizer que falhou em agir.

Mas o passwd funciona perfeitamente, então é claramente possível alterar as senhas a partir da linha de comando ... De uma forma ou de outra, parece uma deficiência de característica objetiva ("bug") para mim - devo denunciá-lo, e se sim, onde?

Atualização: ainda mais estranho - alguns usuários estão relatando que suas senhas foram alteradas e outras estão relatando que não. Um usuário que possui duas contas tem uma senha alterada, uma não. Eu corri o arquivo novamente, verificando se todas as contas estavam lá, e depois passei pelo chpasswd novamente ... os mesmos resultados!

Estou perplexo. Idéias?

UPDATE: Aqui está a linha de comando que estou usando agora:

cat passwords.txt | chpasswd

Se eu usar -S - não vejo saída - nada! Então parece que não está recebendo nada ... mas se eu apenas catar o arquivo:

cat passwords.txt

Eu recebo:     senha do usuário     user2: hunter2     [... etc ...]

Mais: Se eu alterar a primeira linha para NONuser (um usuário inválido), obtenho um erro perfeitamente bom:

chpasswd: (user NONuser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user NONuser) password not changed

Portanto, é de fato lendo e processando o arquivo, pelo menos na medida em que detecta não-usuários!

Ah e $? é 0.

    
por Tom Swirly 12.05.2013 / 19:27

1 resposta

2

Eu fiz muitos testes sistemáticos aqui, e não acho mais que isso seja um problema com o chpasswd.

Em vez disso, é algo relacionado ao ftp - por alguma razão, o ftp ainda tinha as senhas antigas, mas o ssh e todos os outros protocolos seguros tinham os novos.

Eu consertei isso desativando o FTP. :-D Eu pretendia fazer isso de qualquer maneira, mas acidentalmente parei o daemon em vez de desligá-lo permanentemente (meu erro ao usar o front end do Virtualmin).

Minha teoria - é um problema tanto com o ProFTPd quanto com o Virtualmin - mas estou sem tempo para investigar mais. Estou deixando isso aqui na esperança de que seja útil para o próximo cara.

    
por Tom Swirly 17.05.2013 / 19:12