Como adicionar um usuário sem saber o formato criptografado da senha?

7

Eu uso o seguinte comando para criar um usuário em uma máquina Linux:

useradd -d /home/dummy -g idiots -m -p 12345689 dummy

O usuário também é criado e o diretório pessoal.
O problema é que não consigo fazer o login no sistema usando essa conta, pois o -p espera a senha criptografada retornada por crypto .

Pergunta : desejo criar um usuário por meio de um script bash e não sei a senha criptografada por crypto . Como posso fazer isso para que eu possa criar este usuário automaticamente através de um script e obter o problema com a senha?

    
por Jim 08.03.2012 / 10:53

4 respostas

11

Você pode usar o openssl para gerar strings de senha pré-criptografadas para usar com a opção -p para useradd

echo "P4sSw0rD" | openssl passwd -1 -stdin

$1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1

O -1 diz para gerar um hash de senha MD5. O sal é gerado automaticamente.

Você pode usar

useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy

para adicionar o usuário. Para fazer isso interativamente escondendo a senha

useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy
    
por 08.03.2012 / 15:38
3

É assim que eu faço:

# cat user-pw_list
john:p455W0rD
geany:p455W0rD


# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
  USER=${REPLY%%:*}
  PWD=${REPLY##*:}
  # alternative for random passwd, where $RANDOM is a bash function
  #PWD=${REPLY%%:*}$RANDOM$RANDOM

  echo -e "adding User $USER "
  # for disabled users: /usr/sbin/nologin, otherwise /bin/bash
  /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
  echo "$USER:$PWD" | chpasswd --md5 $USER

  ## also add user to samba:
  #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done
    
por 08.03.2012 / 12:02
2

Como você vai usar um script bash, talvez o bom e velho comando newusers seja útil para você? Ele lê sua entrada de um arquivo de texto formatado assim:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

E a senha nesse arquivo deve ser texto claro. Você pode listar quantos usuários quiser no arquivo de entrada.

Para mais informações, consulte man newusers .

    
por 08.03.2012 / 11:03
2

Aparentemente você pode usar

echo "password" | passwd dummy --stdin

Eu nunca tentei isso.

Como alternativa, você pode colocar a chave pública do usuário em /home/dummy/.ssh/authorized_keys e esquecer totalmente as senhas. Esta é a melhor opção em termos de segurança.

    
por 08.03.2012 / 11:07