useradd não criptografa senhas no / etc / shadow

20

Eu me deparei com esse problema ao tentar criar novos usuários de FTP para vsftpd. Ao criar um novo usuário com o seguinte comando e tentar fazer login no FileZilla, eu receberia um erro de "senha incorreta".

useradd f -p pass -d /home/f -s /bin/false

Depois de fazer isso, / etc / shadow contém

f:pass:1111:0:99:2:::

Depois de executar o seguinte comando e fornecer o mesmo passe

passwd f

/ etc / shadow contém

f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::

Parece que a criptografia acontece quando eu executo o passwd , mas não quando o useradd

É importante ressaltar que, depois de fazer isso, sou capaz de fazer login no FTP com as mesmas credenciais.

Estou usando o CentOS 5.11, vsftpd para FTP e FileZilla para acesso FTP

/ var / log / secure contém:

Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, shell=/bin/false

Por que não funciona quando passo -p passpara useradd? O que preciso fazer para que funcione?

BadToTheBone
fonte
Não vejo uma pergunta aí? - Essas coisas são gerenciadas através do PAM e normalmente /var/log/secure
logadas.
@HBruijn Atualizei minha resposta para mostrar o que está escrito em / var / log / secure
BadToTheBone
2
Sério? +12 para uma pergunta que é explicitamente respondida pela página de manual relevante?
um CVn
Observe que, em um hash de senha, $1$indica que o MD5 está sendo usado . O MD5, embora não seja absolutamente terrível para senhas, está bastante fraco hoje em dia. É uma pergunta totalmente separada, mas eu recomendaria que você considerasse migrar para uma função hash mais forte.
um CVn
2
Nota lateral: as senhas /etc/shadownão são criptografadas, mas com hash #
Tobias Kienzler 18/12/14

Respostas:

43

Isso está funcionando como pretendido. Se você deseja definir uma senha usando o useraddcomando, deve fornecer uma versão em hash da senha useradd.

A cadeia de caracteres passatende aos critérios de formato para o campo de senha com hash /etc/shadow, mas nenhuma senha real faz hashes nessa cadeia. O resultado é que, para todos os efeitos, essa conta se comportará como uma senha, mas qualquer senha que você tentar usar para acessá-la será rejeitada por não ser a senha correta.

Consulte man useraddou a documentação do usuário :

-p, --password SENHA

A senha criptografada, retornada por criptografia (3) . O padrão é desativar a senha.

Nota: Esta opção não é recomendada porque a senha (ou senha criptografada) será visível pelos usuários que listam os processos.

Você deve garantir que a senha respeite a política de senha do sistema.

Kasperd
fonte
32

manuseradd :

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

Você deve passar uma senha com hash para ele.
Não é uma senha de texto sem formatação.

falsificador
fonte
16

useraddespera que você passe o hash da senha, não a senha em si. Você pode usar a seguinte variação em seu comando para fornecer uma senha com hash ao useraddcomando:

useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false

Para descobrir os métodos disponíveis, use:

mkpasswd --method=help

Para evitar passar a senha na linha de comando, coloque a senha em um arquivo (usando um editor e não usando echoou similar) e faça o seguinte:

useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false

Isso passará a senha com hash na linha de comando, mas não a senha em texto sem formatação.

mkpasswdvem com o expectpacote.

Pausado até novo aviso.
fonte
2
Não use MD5! Use SHA-2
Josef
9
Faça nota que este expõe temporariamente a senha por meio das diversas interfaces do kernel (qualquer processo tem permissão para ler a linha de comando de qualquer outro processo) e pode resultar em ele ser salvo em texto simples para o disco através $ HISTÓRIA ou mecanismos semelhantes.
um CVn
@ MichaelKjörling: Um ponto muito bom. Por favor, veja minha resposta editada.
Pausado até novo aviso.
11
Obviamente, você ainda está armazenando a senha de texto sem formatação no disco. Pelo menos, isso dá uma opção ao administrador do sistema. Talvez neste momento seja melhor apenas usar uma senha fictícia no início e imediatamente correr passwdpara alterá-la para outra coisa ......
um CVn
2
Absolutamente Dennis, é muito melhor, mas a senha ainda acaba no disco em texto sem formatação. Em algumas situações e sob certos modelos de ameaças, isso pode ser um problema real. Não precisa ser assim.
um CVn