Como adicionar um usuário Linux com uma senha aleatória ou inválida a partir de um script

Como adicionar um usuário Linux com uma senha aleatória ou inválida a partir de um script

Quero adicionar um usuário ao sistema Linux a partir de um script, mas não quero inventar ou cuidar da senha. Isso deve ser feito automaticamente.

O objetivo é gerar chaves ssh e esse usuário precisa apenas fazer login remotamente. Ou, alternativamente, este usuário será usado por um usuário sudo via sudo su - thatuser.

Quero evitar o incômodo de inventar e digitar alguma senha segura toda vez que criar esse usuário, e também fazer isso a partir de scripts.

Ninguém deveria conseguir fazer login com a senha deste usuário, então minha ideia é que ele consiga uma boa senha aleatória, mas ninguém a saiba.

Eu poderia escrever um script que gerasse algo aleatório, mas talvez haja algo embutido? Ou apenas desative a senha (para que o login com senha não seja possível, mas o ssh faz login com chaves e sudo su - thatuserfunciona bem.

Editar:Já existem algumas respostas, ótimo, mas ainda não sei como fazer. Como seria o roteiro?

Ele deve se comportar como adduser e criar tudo padrão (como diretório inicial padrão, esqueleto copiado, grupo com o mesmo nome)

Editar2:No final e com a sua ajuda encontrei uma solução que funciona e quero partilhá-la. Este é um script que chamo de "adduser-nopasswd" e coloco-o em /usr/local/sbin (este é um bom lugar?) e pode ser executado apenas pelo root. É necessário um argumento, que é o nome do novo grupo e usuário ao mesmo tempo:

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME

Algum comentário sobre esta função?

Responder1

Se você não especificar uma senha, useraddela não será definida (e o usuário não poderá fazer login via senha). Observe que useradde addusersão dois comandos diferentes.

A seguir deve-se criar o novo usuário com seu próprio grupo, criar seu diretório inicial (no local padrão, pois não especificamos nenhum local) e copiar os arquivos esqueleto.

useradd --create-home <user>

Então você apenas cria o diretório .sshem seu diretório inicial, chmodpara 0700(o SSH vai querer isso por segurança) e coloca a chave pública do usuário .ssh/authorized_keys(o par de chave privada/pública deve ser gerado pelo próprio usuário, em seu próprio diretório). seu próprio computador).

Se quiser desabilitar a senha de uma conta já existente, você pode usar o seguinte.

usermod --lock <user>

Responder2

O utilitário /usr/sbin/useradd sempre criava usuários para mim sem exigir senhas. Eu escrevi muitos scripts que pegaram o /etc/passwd de outro sistema e criaram usuários para mim.

Alternativamente, se você olhar a documentação do mercurial-server, verá como configurar muitas chaves SSH (clientes) para executar programas como apenas um usuário no lado do servidor.

Responder3

# 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

Ok, vamos adicionar nossos usuários:

cat user-pw_list | ./CreateUsers.sh

Responder4

Coloque um * no campo de senha em /etc/shadow (isso deve acontecer se você não definir uma senha). Isso impedirá que o usuário faça login.

informação relacionada