Na página adduser(8)
man:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3).
Especificar a senha como texto simples não funcionará.
Com base na documentação aqui:
Estou tentando criar um novo usuário com um diretório inicial padrão no Ubuntu 17.10 e especificar a senha:
useradd john -m -p mypassword
O usuário é criado muito bem, mas se eu tentar ao lado de SSH para a máquina usando o novo usuário com a senha especificada (mypassword) eu recebo:
$ ssh john@my-host
john@my-host's password:
Permission denied, please try again.
john@my-host's password:
Então, por que não funciona com a senha que usei ao criar o usuário?
Com base na resposta abaixo, useradd
requer uma senha criptografada. Na linha de comando, posso fazer:
$ echo -n testpass | makepasswd --crypt-md5 --clearfrom -
testpass $1$eaXbTWAK$8flrqGzhmtWPjzRcrxWBf/
Mas como eu passo isso para useradd
, para tornar possível fazer tudo em uma linha?
Você pode combinar vários comandos usando a construção $ (some-cm). Isso fará com que o bash avalie primeiro o parêntese e use o valor de retorno em seu lugar:
echo foo $(echo bar)
irá avaliar o segundo comando primeiro e depois avaliará o primeiro comando. Você pode fazer isso primeiro para gerar sua senha e depois colocá-la no comando adduser.
Ou você usa o comando encadeamento: user=john; useradd -m $user && passwd $user
. Isso ainda solicitará a senha.