Execute adduser de maneira não interativa

198

Eu gostaria de usar o addusercomando para adicionar um usuário (com senha desativada) por meio de um script de shell.

Por padrão, addusersolicita vários valores (por exemplo, Nome completo). Existe alguma maneira de enviar esses valores via linha de comando? Ou vou precisar useradd?

Lorin Hochstein
fonte

Respostas:

262

Use a --gecosopção para pular a chfnparte interativa.

adduser --disabled-password --gecos "" username

Está tudo na página de manual. Não é a formulação mais óbvia.

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will
          not ask for finger information if this option is given.

O campo GECOS é uma lista separada por vírgulas, como tal: Full name,Room number,Work phone,Home phoneapesar de a página de manual mencionar finger information Detalhes - Wikipedia

Espero que isso ajude você.

Zoke
fonte
41

useradd também pode adicionar usuários e não parece ter nenhuma forma de solicitação incorporada.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Criar diretório inicial do usuário
  • -p, --password: Especifique a senha do usuário; pule para desativá-lo
  • -s, --shell: Shell padrão para usuário de logon

    Em branco usará o shell de login padrão especificado pela SHELLvariável em/etc/default/useradd

  • Substitua <user>pelo nome de login
  • Substitua <encryptedPassword>pela senha criptografada

Gerando uma senha com hash:

Existem muitas implementações do crypt3 que podem gerar uma senha com hash. A coisa toda é sua senha com hash.

Baseado em Sha-512

O formato de saída resultante: o mecanismo de hash ( $6para sha-512), o sal aleatório (os oito bytes após o segundo cifrão $ASDF1234), o restante é a carga útil.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdé fornecido pelo whoispacote)

Baseado em DES:

O formato de saída resultante: os primeiros 2 bytes são o seu sal, o restante é a carga útil. A coisa toda é sua senha com hash.

  • mkpasswd: mkpasswd(fornecido pelo whoispacote)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • Pitão: python3 -c 'import crypt; print(crypt.crypt("password"))'
ThorSummoner
fonte
1
As opções mencionadas não existem adduserna minha versão (recente) do Ubuntu.
22/09/2015
1
@ ᴠɪɴᴄᴇɴᴛ adduseré distinto useradd, confuso, eu sei.
ThorSummoner
1
Opa, realmente senti falta do seu quase xará… não existe um BDFL protegendo o espaço para nome da linha de comando? ; p
ᴠɪɴᴄᴇɴᴛ
1
@ mum007 Este é apenas um conselho geral, tente adicionar -vou -vvou -vvvaos seus comandos ssh para ver o que está errado e pesquisar suas mensagens de erro aqui no SO ou no Google.
ThorSummoner
1
@KovacsAkos tente isso: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configesudo service ssh restart
JSBach