useradd não criptografa senhas em / etc / shadow

18

Eu tropecei nesse problema ao tentar criar novos usuários de FTP para o vsftpd. Ao criar um novo usuário com o seguinte comando e tentar fazer o login com o FileZilla, eu obteria 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 pass

passwd f

/ etc / shadow contém

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

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

Importante depois de fazer isso, consigo fazer login no FTP com as mesmas credenciais.

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

/ 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 eu passo -p pass ao useradd? O que preciso fazer para que funcione?

    
por BadToTheBone 17.12.2014 / 15:34

3 respostas

42

Isso está funcionando conforme o esperado. Se você quiser definir uma senha usando o comando useradd , deverá fornecer uma versão com hash da senha para useradd .

A string pass satisfaz os critérios de formato para o campo de senha com hash em /etc/shadow , mas nenhum hashes de senha reais para essa string. O resultado é que, para todas as intenções e finalidades, essa conta se comportará como se tivesse uma senha, mas qualquer senha que você tentar usar para acessá-la será rejeitada por não ser a senha correta.

Veja man useradd ou a documentação do useradd :

-p, --password PASSWORD

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

Note: This option is not recommended because the password (or encrypted password) will be visible by users listing the processes.

You should make sure the password respects the system's password policy.

    
por 17.12.2014 / 15:48
31

man useradd :

   -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 simples.

    
por 17.12.2014 / 15:48
15

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

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 echo ou similar) e faça isso:

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 de texto simples.

mkpasswd vem com o pacote expect .

    
por 18.12.2014 / 00:07